Form Dreamweaver & CO. ...non ce la posso fare!

  • Creatore Discussione Creatore Discussione Arsabia
  • Data di inizio Data di inizio

Arsabia

Nuovo Utente
17 Mag 2014
22
0
0
Londra
Ciao a tutti. OK, ok, prima di precipitare nel girone dei senza speranza,
mi aggrappo al forum! Sono nuova qui ma già usata in quanto a energie.
Sto facendo il mio sito in Dreamweaver e tutto stava andando bene, fino a quando
sono incappata nel form contatti. Ora, sto leggendo il mondo per capire come funziona sto benedetto form, ma proprio sono di coccio. Ma fatemi capire una cosa. Una volta create le variabili, cioè gli spazi per l'inserimento dei dati della persona che vorrà contattarmi, cosa devo fare? Sono bloccata li, troppo distante dalla risoluzione. Ho reso obbligatorio la compilazione degli spazi (name, surname, city, email, message...e il tasto submit?), ma adesso devo inserire il codice php (mai usato naturalmente) prima. Ho creato un nuovo file PHP che da quanto ho capito deve essere salvato nella stessa cartella del sito che sto facendo. Ho scaricato la versione per mac XAMPP. Ora, ho provato ad aprire il sito in Firefox e cliccare su "submit" (il mio sito sarà in inglese), ma mi chiede: "è stato scelto di aprire" il mio file php in? Uff, sono alla disperazione...potete aiutarmi in qualche modo?

Grazie mille!:o
 
ciao
è semplice, ti schematizzo due metodi, uno su stessa pagiga e uno con due
1) metodo stessa pagina
in questo caso la pagina DEVE avere estenzione .php es contatti.php
(generalmente è il sistema migliore)
PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<?php
if(isset($_POST['send'])){
	$messaggio=$_POST['messaggio'];
	//tutti gli opportuni controllo ai valori inviati
	if($controlli=="OK"){
		//invii l'email
	}else{
		//avvisi dell'errore e riinvii al form per es
	}
	//e riinvii dove vuoi
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
messaggio: <input name="messaggio" type="text"><br />
<input type="submit" name="send" value="send">
</form>
<?php
}
?>
</body>
</html>
2) metodo su due pagine contatti.php (puo essere anche contatti.html) e invia.php (deve essere .php)
pagina contatti.php
HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<form action="invia.php" method="post">
messaggio: <input name="messaggio" type="text"><br />
<input type="submit" name="send" value="send">
</form>
</body>
</html>
invia.php
PHP:
<?php
//non mettere i vari doctype e altri tag
$messaggio=$_POST['messaggio'];
//tutti gli opportuni controllo ai valori inviati
if($controlli=="OK"){
		//invii l'email
}else{
		//avvisi dell'errore e riinviial form
}
//e riinvii dove vuoi
?>
 
ciao
è semplice, ti schematizzo due metodi, uno su stessa pagiga e uno con due
1) metodo stessa pagina
in questo caso la pagina DEVE avere estenzione .php es contatti.php
(generalmente è il sistema migliore)
PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<?php
if(isset($_POST['send'])){
	$messaggio=$_POST['messaggio'];
	//tutti gli opportuni controllo ai valori inviati
	if($controlli=="OK"){
		//invii l'email
	}else{
		//avvisi dell'errore e riinvii al form per es
	}
	//e riinvii dove vuoi
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
messaggio: <input name="messaggio" type="text"><br />
<input type="submit" name="send" value="send">
</form>
<?php
}
?>
</body>
</html>
2) metodo su due pagine contatti.php (puo essere anche contatti.html) e invia.php (deve essere .php)
pagina contatti.php
HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>
<body>
<form action="invia.php" method="post">
messaggio: <input name="messaggio" type="text"><br />
<input type="submit" name="send" value="send">
</form>
</body>
</html>
invia.php
PHP:
<?php
//non mettere i vari doctype e altri tag
$messaggio=$_POST['messaggio'];
//tutti gli opportuni controllo ai valori inviati
if($controlli=="OK"){
		//invii l'email
}else{
		//avvisi dell'errore e riinviial form
}
//e riinvii dove vuoi
?>



Wow...grazie mille! Ora, vado a scigliere le tensioni al parco, ma appena torno, mi metto all'opera...davvero davvero grazzissime per l'aiuto! Ti faccio sapere...spero tu possa essermi d'aiuto non dovessi riuscire nell'impresa (per me, purtroppo lo è!). A dopo....
 
OK, dunque...come immaginavo nulla. Ho provato a usare i codici che mi hai dato. Il mio problema è solo legato all'invio dal form al mio sito. Purtroppo non sono ancora così evoulta per comprendere appieno quello che intendi.
Il form è stato fatto a livello grafico. Ho già la mia pagina perfetta, con i relativi spazi (campi: name, surname, city, email, message e il benedetto tasto di invio). Ho aggiunto i codici per l'obbligo di compilazione e fin li ci siamo.
Ora, nella cartella, insieme alle altre pagine HTML c'è quindi anche quella dei contatti. Leggendo qua e la,
ho capito che dovevo creare una pagina PHP che nel mio caso ho nominato invia.php al cui interno ho aggiunto il seguente codice:

PHP:
<?php

$destinatario = "mia-email";

$oggetto = "richiesta";

$nome = $_POST['name'];
$cognome = $_POST['surname'];
$citta = $_POST['city'];
$email = $_POST['email'];
$messaggio = $_POST['message'];

$intestazioni = "From: ".$email;

mail($destinatario, $oggetto, $nome, $cognome, $citta, $email, $messaggio, $intestazioni);
echo "<p>sent message</p>";

?>

Codice che è sicuramente sbagliato ma che non so correggere. Non riesco a collegare le due pagine contatti.html e invia.php
in modo da ricevere una email da chi mi vuole scrivere (ma che non mi scriverà mai!:fonzie:).

Cosa succede? Che quando visualizzo l'anteprima in Firefox e cerco di inviare, mi chiede dove voglio salvare il documento php.

Forse perché è solo l'anteprima? (il dominio non l'ho ancora comprato)

Ok, sto dimenticando di fare qualcosa di veramente forndamentale...

Un'unica parola: CAOS!:confused:
 
Ultima modifica di un moderatore:
ciao
la funzione mail() accetta solo 4 parametri, quindi devi concatenare il messaggio
PHP:
<?php
$destinatario = "[email protected]";//indirizzo destinatario
$oggetto = "richiesta";
$messaggio = $_POST['name'];
$messaggio .= $_POST['surname'];//.= operazione di concatenamento
$messaggio .= $_POST['city'];
$messaggio .=$_POST['email'];
$messaggio .= $_POST['message'];
$email = $_POST['email'];
$intestazioni = "From: ".$email;
mail($destinatario, $oggetto, $messaggio, $intestazioni);
echo "<p>sent message</p>";
?>

dimenticavo devi mettere un if per verificare che l'email sia inviata
PHP:
<?php
//.....
if(mail($destinatario, $oggetto, $messaggio, $intestazioni)){
	echo "<p>sent message</p>";
}else{
	echo "<p>errore di trasmissione, riprova più tardi</p>";
}
?>
poi per i controlli cerca nel forum trovi diverse discussioni
 
Ultima modifica:
Ciao buongiorno.
OK, per ora non ho ancora un dominio, quindi non posso verificare il funzionamento dell'invio.
Comunque, ho apportato le modifiche che mi hai scritto. Intanto, grazie davvero tantissimissimo per l'aiuto, sei stato un angelo!0:)

Ciaoooo
 
OK, per ora non ho ancora un dominio, quindi non posso verificare il funzionamento dell'invio.

ciao, scusate se mi intrometto,
in realtà se hai un account di posta elettronica (utente attivo) con cui invii e ricevi posta,
puoi provare il tuo invio da subito utilizzando l'account in uso

ti posto uno script php con una serie di servizi SMTP (legati ad account validi) che sono sicuramente funzionanti,
con i parametri necessari ed inoltre con l'indicazione se è sufficiente la funzione mail() di php o se è meglio ricorrere alla classe PHPmailer
ciao
Marino

PHP:
<?php

$servizio = 1;

switch ($servizio) {
  case 0:
    $mail_Host     = "smtp.example.com";     // SMTP servizio mail
    $mail_Port     = 587;                  // 25, 465, 587
    $mail_Auth     = true;                 // false (25) true (465, 587)
    $mail_Secure   = "tls";                           // "" (25) "ssl" (465) "tls" (587)
    $mail_username = "[email protected]";	// utente conosciuto dal servizio mail usato
    $mail_password = "cambiami";               // password dell'utente
    break;
  case 1:
    $mail_Host     = "out.alice.it";		// ok mail
    $mail_Port     = "25";
    $mail_Auth     = false;
    $mail_Secure   = "";
    $mail_username = "[email protected]";
    $mail_password = "cambiami";
    break;
  case 2:
    $mail_Host     = "smtp.gmail.com";		// ok PHPmailer
    $mail_Port     = 465;
    $mail_Auth     = true;
    $mail_Secure   = "ssl";
    $mail_username = "[email protected]";
    $mail_password = "cambiami";
    break;
  case 3:
    $mail_Host     = "smtp.web.de";		// ok PHPmailer
    $mail_Port     = 587;
    $mail_Auth     = true;
    $mail_Secure   = "tls";
    $mail_username = "[email protected]";
    $mail_password = "cambiami";
    break;
  case 4:
    $mail_Host     = "mail.tin.it";		// ok mail
    $mail_Port     = 587;
    $mail_Auth     = true;
    $mail_Secure   = "";
    $mail_username = "[email protected]";
    $mail_password = "cambiami";
    break;
  case 5:
    $mail_Host     = "smtp.live.com";		// ok PHPmailer
    $mail_Port     = 587;
    $mail_Auth     = true;
    $mail_Secure   = "tls";
    $mail_username = "[email protected]";
    $mail_password = "cambiami";
    break;
  case 99:
    $mail_Host     = "smtp.aruba.it";		// ok mail
    $mail_Port     = 25;
    $mail_Auth     = false;
    $mail_Secure   = "";
    $mail_username = "[email protected]"; // (utente con dominio su aruba)
    $mail_password = "cambiami";
    break;
}

ini_set("SMTP"     ,$mail_Host);
ini_set("smtp_port",$mail_Port);	
ini_set("username" ,$mail_username);	
ini_set("password" ,$mail_password);
?>
 
Ultima modifica:

Discussioni simili