Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di hopeway
    Registrato dal
    Sep 2017
    residenza
    Catania
    Messaggi
    47

    Errore in form per invio mail

    Salve a tutti, cercando di creare un form di invio all'interno di un sito che mi hanno commissionato. Il problema è che quando cerco di spedire il messaggio mi rimanda ad un messaggio di errore. Ho controllato più volte ma non riesco a trovare l'errore in quanto è il primo script in php che creo. Potreste aiutarmi? vi allego il codice del php

    codice:
    <?php
    if(isset($_POST['email'])){
        $email_to = "--------";
        $email_subject = "Subject";
    
        function died($error){
            echo "We are very sorry, but there were error(s) found with the form you submitted. ";
            echo "These errors appear below.<br /><br />";
            echo $error."<br /><br />";
            echo "Please go back and fix these errors.<br /><br />";
            die();
        }
    
        if(!isset($_POST['fname']) ||
            !isset($_POST['lname']) ||
            !isset($_POST['email']) ||
            !isset($_POST['country']) ||
            !isset($_POST['subject'])) {
            died('We are sorry, but there appears to be a problem with the form you submitted.');       
        }
    
        $first_name = $_POST['fname']; 
        $last_name = $_POST['lname']; 
        $email_from = $_POST['email']; 
        $country = $_POST['country'];
        $comments = $_POST['subject'];
     
        $error_message = "";
        $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    
        if(!preg_match($email_exp,$email_from)) {
            $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
          }
         
            $string_exp = "/^[A-Za-z .'-]+$/";
         
          if(!preg_match($string_exp,$fname)) {
            $error_message .= 'The First Name you entered does not appear to be valid.<br />';
          }
         
          if(!preg_match($string_exp,$lname)) {
            $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
          }
         
          if(strlen($subject) < 2) {
            $error_message .= 'The Comments you entered do not appear to be valid.<br />';
          }
         
          if(strlen($error_message) > 0) {
            died($error_message);
          }
         
            $email_message = "Form details below.\n\n";
         
             
            function clean_string($string) {
              $bad = array("content-type","bcc:","to:","cc:","href");
              return str_replace($bad,"",$string);
            }
    
            $email_message .= "First Name: ".clean_string($fname)."\n";
            $email_message .= "Last Name: ".clean_string($lname)."\n";
            $email_message .= "Email: ".clean_string($email_from)."\n";
            $email_message .= "Country: ".clean_string($country)."\n";
            $email_message .= "Subject: ".clean_string($subject)."\n";
         
        // create email headers
        $headers = 'From: '.$email_from."\r\n".
        'Reply-To: '.$email_from."\r\n" .
        'X-Mailer: PHP/' . phpversion();
        @mail($email_to, $email_subject, $email_message, $headers);  
    }
    ?>
    Ultima modifica di hopeway; 22-06-2018 a 12:42

  2. #2
    Utente di HTML.it L'avatar di hopeway
    Registrato dal
    Sep 2017
    residenza
    Catania
    Messaggi
    47
    Vi allego anche il form in html per completezza
    codice:
    <form action="sender.php" method ="POST" name="contactform">
                         
                          <label for="fname">First Name</label>
                          <input type="text" id="fname" name="firstname" placeholder="Your name..">
                          <label for="lname">Last Name</label>
                          <input type="text" id="lname" name="lastname" placeholder="Your last name..">
                          <label for="email">Email</label>
                          <input type="email" id="email" name="email" placeholder="your email..">
                          <label for="country">Regione</label>
                          <select id="country" name="country">
                            <option value="abruzzo">Abruzzo</option>
                            <option value="basilicata">Basilicata</option>
                            <option value="calabria">Calabria</option>
                            <option value="campania">Campania</option>
                            <option value="emilia">Emilia Romagna</option>
                            <option value="friuli">Friuli-Venezia Giulia</option>
                            <option value="lazio">Lazio</option>
                            <option value="liguria">Liguria</option>
                            <option value="lombardia">Lombardia</option>
                            <option value="marche">Marche</option>
                            <option value="molise">Piemonte</option>
                            <option value="puglia">Puglia</option>
                            <option value="sardegna">Sardegna</option>
                            <option value="sicilia">Sicilia</option>
                            <option value="toscana">Toscana</option>
                            <option value="trentino">Trentino-Alto Adige</option>
                            <option value="umbria">Umbria</option>
                            <option value="valledaosta">Valle d'Aosta</option>
                            <option value="Veneto">Veneto</option>
                            <option value="altro">Altro (specificare)</option>
    
                          </select>
                          <label for="subject">Subject</label>
                          <textarea id="subject" name="subject" placeholder="Write something.." style="height:170px"></textarea>
                          <input type="submit" value="Submit">
                        </form>


  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Tu non trovi l'errore pur avendo letto il messaggio, noi che non abbiamo nemmeno letto il messaggio che dovremmo fare?

    I messaggi d'errore esistono perché danno indicazioni utili per risolvere il problema e quando si chiede aiuto vanno sempre riportati.
    Leggi il regolamento della sezione.

  4. #4
    Hai chiamato i campi in un modo (firstname, lastname ecc) ma in php li richiami in altro modo ($_POST['fname'], $_POST['lname'] ecc).

    In $_POST devi usare lo stesso nome usato per il form: $_POST['firstname'], $_POST['lastname'] ecc.
    Pensate i programmi a librerie, e innalzate il livello d'astrazione

  5. #5
    Utente di HTML.it L'avatar di hopeway
    Registrato dal
    Sep 2017
    residenza
    Catania
    Messaggi
    47
    Ho modificato secondo le indicazioni di inforcurci, ma risponde con questo:
    We are very sorry, but there were error(s) found with the form you submitted. These errors appear below.

    The First Name you entered does not appear to be valid.
    The Last Name you entered does not appear to be valid.
    The Comments you entered do not appear to be valid.


    Please go back and fix these errors.

  6. #6
    Posta il nuovo codice.
    Pensate i programmi a librerie, e innalzate il livello d'astrazione

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    hai tutti i nomi delle variabili sbagliati sui controlli
    per esempio: $fname tu la hai chiamata $first_name...

    correggi il codice e abilita tutte le segnalazioni di errore quando sviluppi, almeno ti rendi conto di cosa modificare (ci saranno un bel po' di notice su variabili che non esistono)

  8. #8
    Utente di HTML.it L'avatar di hopeway
    Registrato dal
    Sep 2017
    residenza
    Catania
    Messaggi
    47
    codice:
    <?php
    codice:
    if(isset($_POST['email'])){
        $email_to = "----";
        $email_subject = "Subject";
    
        function died($error){
            echo "We are very sorry, but there were error(s) found with the form you submitted. ";
            echo "These errors appear below.<br /><br />";
            echo $error."<br /><br />";
            echo "Please go back and fix these errors.<br /><br />";
            die();
        }
    
        if(!isset($_POST['firstname']) ||
            !isset($_POST['lastname']) ||
            !isset($_POST['email']) ||
            !isset($_POST['country']) ||
            !isset($_POST['subject'])) {
            died('We are sorry, but there appears to be a problem with the form you submitted.');       
        }
    
        $first_name = $_POST['firstname'];
        $last_name = $_POST['lastname']; 
        $email_from = $_POST['email']; 
        $country = $_POST['country']; 
        $comments = $_POST['subject']; 
     
        $error_message = "";
        $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    
        if(!preg_match($email_exp,$email_from)) {
            $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
          }
         
            $string_exp = "/^[A-Za-z .'-]+$/";
         
          if(!preg_match($string_exp,$firstname)) {
            $error_message .= 'The First Name you entered does not appear to be valid.<br />';
          }
         
          if(!preg_match($string_exp,$lastname)) {
            $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
          }
         
          if(strlen($subject) < 2) {
            $error_message .= 'The Comments you entered do not appear to be valid.<br />';
          }
         
          if(strlen($error_message) > 0) {
            died($error_message);
          }
         
            $email_message = "Form details below.\n\n";
         
             
            function clean_string($string) {
              $bad = array("content-type","bcc:","to:","cc:","href");
              return str_replace($bad,"",$string);
            }
    
            $email_message .= "First Name: ".clean_string($firstname)."\n";
            $email_message .= "Last Name: ".clean_string($lastname)."\n";
            $email_message .= "Email: ".clean_string($email_from)."\n";
            $email_message .= "Country: ".clean_string($country)."\n";
            $email_message .= "Subject: ".clean_string($subject)."\n";
         
        // create email headers
        $headers = 'From: '.$email_from."\r\n".
        'Reply-To: '.$email_from."\r\n" .
        'X-Mailer: PHP/' . phpversion();
        @mail($email_to, $email_subject, $email_message, $headers);  
    }
    ?>
    Ovviamente 'Sent Email To' la fixo per evitare di postarla qui


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 © 2024 vBulletin Solutions, Inc. All rights reserved.