Il problema è più che ovvio: non resetta le sessioni.
La mail arriva a destinazione?
Il problema è più che ovvio: non resetta le sessioni.
La mail arriva a destinazione?
Riepilogo, si la mail arriva e tutto il modulo funziona correttamente a parte questa cosa degli avvisi.
Ho notato ora che se il modulo (form.php) non viene compilato correttamente vengono visualizzati gli errori dei campi obbligatori e fin qui tutto bene. Se l'utente corregge e inserisce i campi obblig. il modulo viene inviato e al ritorno alla pagina del form gli errori visualizzati in precedenza sono spariti, e anche qui tutto perfetto.
Il problema è invece: se l'utente non compila correttamente il modulo e cerca di inviarlo, giustamente gli errori del campi obblig. vengono visualizzati ma poi se l'utente decide di annullare la compilazione e cambiare pagina oppure di ritornare al modulo dopo diverso tempo... il modulo (form) gli si presenta gia con gli errori dei campi obblig. evidenziati in precedenza. (solo cancellando la cache del browser risolvo il problema)
Tutto questo per me non risulta carino anche se perfettamente funzionante.
Spero di essermi spiegato... intanto ringrazio chi mi sta aiutando.
Ultima modifica di lucyanne; 29-12-2014 a 20:06
Ecco, adesso ti sei spiegato più che beneinfatti l' unica cosa possibile era proprio quella, che la procedura veniva laciata a metà. Non sono sicuro visto che te lo dico cosi in diretta senza testarlo, ma credo che per risolvere il tuo problema tu debba resettare le sessioni anche in fase di visualizzazione del modulo (e non dopo averlo inviato).
Prova a mettere nel file form.php prima del codice che crea il modulo:
Insomma basta che non lo metti prima di session_start();codice:<?php if(!isset($_POST["name"])) { //Reset error messages $_SESSION['emailerror'] = ""; $_SESSION['nameerror'] = ""; $_SESSION['subjecterror'] = ""; $_SESSION['messageerror'] = ""; $_SESSION['humanerror'] = ""; $_SESSION['privacyerror'] = ""; $_SESSION['senderror'] = ""; //Reset Validation Session Variables $_SESSION['message'] = ""; $_SESSION['tel'] = ""; $_SESSION['name'] = ""; $_SESSION['email'] = ""; $_SESSION['subject'] = ""; } ?>
O.K. intanto ti ringrazio, più tardi proverò.
Grazie
Comunque a pensarci bene non credo funzioni nemmeno come ti ho detto nel post precedente...a meno che tu, nel file contatti.php, non includa il form ad ogni errore riscontrato (mettendo include("form.php") al posto della redirect header("Location: bla bla bla") ) allora si che resetterebbe le sessioni solo alla visualizzazione del form e non dopo il suo invio. In questo caso però ti da sicuramente l' errore di session_start(); perchè verrebbe aperto in contatti.php e in form.php quando viene incluso.
A questo punto direi che c' è proprio un "errore" strutturale.
Un' altra idea potrebbe essere quella di intercettare la provenienza dell' utente al momento dell' apertura della pagina form.php, quindi al posto di quello che ti ho detto di metterci qualche post fa, dovresti mettere:
Ovviamente attento alla URL, mettila giusta, non so dove hai il file contatti.phpcodice:<?php if($_SERVER["HTTP_REFERER"] != "http://www.tuosito.com/contatti.php") { //Reset error messages $_SESSION['emailerror'] = ""; $_SESSION['nameerror'] = ""; $_SESSION['subjecterror'] = ""; $_SESSION['messageerror'] = ""; $_SESSION['humanerror'] = ""; $_SESSION['privacyerror'] = ""; $_SESSION['senderror'] = ""; //Reset Validation Session Variables $_SESSION['message'] = ""; $_SESSION['tel'] = ""; $_SESSION['name'] = ""; $_SESSION['email'] = ""; $_SESSION['subject'] = ""; } ?>
Niente, ho provato in tutti i modi... non da nemmeno gli errori dei campi obbligatori vuoti.
Devi cambiare tutti gli if aggiungendo else della pagina contatti.php
Codice PHP:if($name == ""){
$_SESSION['nameerror'] = "Obbligatorio";
$error = true;
}else{
$_SESSION['nameerror'] = "";
$error = false;
}
![]()
Cavicchi Andrea
Problemi con javascript, jquery, ajax clicca qui
Caspita ha ragione cavicchiandrea, in effetti faccio sempre così anch' io. Scusa la svista.
Ciao, ho provato a fare le modifiche che mi hai suggerito ma mi da errore a riga 117... non capisco. Posto il codice contatti.php
Codice PHP://Validation
if($name == ""){
$_SESSION['nameerror'] = "Obbligatorio";
$error = true;
}else{
$_SESSION['nameerror'] = "";
$error = false;
}
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
$_SESSION['emailerror'] = "E-mail non valida";
$error = true;
}else{
$_SESSION['emailerror'] = "";
$error = false;
}
if($email == ""){
$_SESSION['emailerror'] = "Obbligatorio";
$error = true;
}else{
$_SESSION['emailerror'] = "";
$error = false;
}
if($subject == ""){
$_SESSION['subjecterror'] = "Obbligatorio";
$error = true;
}else{
$_SESSION['subjecterror'] = "";
$error = false;
}
if($message == ""){
$_SESSION['messageerror'] = "Obbligatorio";
$error = true;
}else{
$_SESSION['messageerror'] = "";
$error = false;
}
if($privacycheck == ""){
$_SESSION['privacyerror'] = "Obbligatoria l'accettazione.";
$error = true;
}else{
$_SESSION['privacyerror'] = "";
$error = false;
}
if($human != "yes"){
$error = true;
$_SESSION['humanerror'] = "Prego, selezionare Si.";
}else{
$_SESSION['humanerror'] = "";
$error = false;
}
if($error == true) {
$_SESSION['senderror'] = "Campi errati o mancanti";
}else{
$_SESSION['senderror'] = "";
$error = false;
header("Location: $contactpage");
exit;
} else { //Quì da errore
$to = $youremail;
$sbj = "Messaggio dal sito";
$msg = "
Ultima modifica di lucyanne; 30-12-2014 a 18:24