Pagina 2 di 5 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 44

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    16
    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

  2. #2
    Il problema è più che ovvio: non resetta le sessioni.
    La mail arriva a destinazione?

  3. #3
    Ecco, adesso ti sei spiegato più che bene infatti 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:

    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']   =  "";
    }
    ?>
    Insomma basta che non lo metti prima di session_start();

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    16
    O.K. intanto ti ringrazio, più tardi proverò.

    Grazie

  5. #5
    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.

  6. #6
    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:

    codice:
    <?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']   =  "";
    }
    ?>
    Ovviamente attento alla URL, mettila giusta, non so dove hai il file contatti.php

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    16
    Niente, ho provato in tutti i modi... non da nemmeno gli errori dei campi obbligatori vuoti.

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,134
    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    16
    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

  10. #10
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Quote Originariamente inviata da lucyanne Visualizza il messaggio
    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   
    Scusate, ma che senso ha sto codice? a parte l'errore segnalato da Satifal, se ogni volta sovrascrivi $error tieni traccia solo dell' ultimo errore (o meglio invierai l'email lo stesso, basta che $human == "yes" ).

    Se vuoi resettare i campi, non fai prima a farlo alla fine di form.php, come ti suggeriva camionistaxcaso? alla chiusura di </form> metti
    Codice PHP:
      $_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']   =  ""
    Se poi gli errori li metti un un (sub)array, invece che "liberi" fai pure prima, con un unset

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.