2016-06-17 6 views
-1

donc c'est un script Formulaire de contact php avec base de validation. Ce script fonctionnait parfaitement sans problème ni erreur. Jusqu'à récemment, j'ai transféré le fichier sur un autre site d'hébergement.PHP Notice: Undefined index - Formulaire de contact ne fonctionne pas

L'hébergeur précédente version était PHP 5.4.35 Alors que le nouvel hébergeur a la version PHP 5.4.45

Je ne sais pas beaucoup sur PHP, donc je ne sais pas ce qui se passe. Voici ce que le journal des erreurs a enregistré chaque fois que quelqu'un a envoyé le formulaire de contact.

[17-Jun-2016 17:05:20 Etc/GMT] Avis de PHP: Undefined index: nom /home/domain/public_html/contact.php en ligne 70

[17-Jun -2016 17:05:20 Etc/GMT] Note PHP: Index indéfini: email dans /home/domain/public_html/contact.php sur la ligne 76

[17-Jun-2016 17:05:20 Etc/GMT ] Note PHP: Indéfini index: message dans /home/domain/public_html/contact.php sur la ligne 82

Pour résoudre ce problème, j'ai initialisé le Ror variables ($ nom, $ email, $ message) comme nulle dans ce cas, il n'y avait plus d'erreurs, mais le formulaire de contact n'a pas fonctionné.

Aidez-moi s'il vous plaît! Je ne sais pas pourquoi ce problème se produit.

<?php 

if (isset($_POST["submit"])) { 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $human = intval($_POST['human']); 
    $to = '[email protected]'; 
    $subject = 'Contact Form'; 

    $header = "From:[email protected] \r\n"; 
    $header = "Cc:[email protected] \r\n"; 
    $header .= "MIME-Version: 1.0\r\n"; 
    $header .= "Content-type: text/html\r\n"; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 
    if (!$_POST['name']) { 
     $errName = 'Please enter your name'; 
    } 

    if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
     $errEmail = 'Please enter a valid email address'; 
    } 

    if (!$_POST['message']) { 
     $errMessage = 'Please enter your message'; 
    } 

    if ($human !== 2) { 
     $errHuman = 'Your anti-spam is incorrect'; 
    } 

    if (!$errName && !$errEmail && !$errMessage && !$errHuman) { 
     if (mail($to, $subject, $body, $header)) { 
      $result='Thank You! Your message will be replied soon!'; 
     } else { 
      $result='Sorry there was an error sending your message.'; 
     } 
    } 
} 
?> 
     <form class="col l12" method="post" action="contact.php"> 
        <input id="name" name="name" type="text" class="validate" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
        <?php echo "<p class='red-text'>$errName</p>";?> 
        <label for="name">Name</label> 

        <input id="email" name="email" type="email" class="validate" value="<?php echo htmlspecialchars($_POST['email']); ?>"> 
        <?php echo "<p class='red-text'>$errEmail</p>";?> 
        <label for="email">Email</label> 

        <textarea name="message" class="materialize-textarea"><?php echo htmlspecialchars($_POST['message']);?></textarea> 
        <?php echo "<p class='red-text'>$errMessage</p>";?> 
        <label for="message">Message</label> 

        <label for="human"><strong>AntiSPAM Check:</strong> 5 - 3 = ?</label> 
        <input id="human" name="human" type="text" class="validate"> 
        <?php echo "<p class='red-text'>$errHuman</p>";?> 

         <p class="left-align"><button class="blue darken-1 btn-large waves-effect waves-light" id="submit" type="submit" style="font-weight:500;" name="submit">Send</button> 
         <?php echo $result; ?> 
     </form> 
+0

@ Rizier123 Bien que cela puisse sembler double à cause des mêmes balises d'erreur que j'avais mis en œuvre les changements mentionnés dans l'autre fil, mais qui ne résout pas le problème. Ce problème est unique bien que marqué sous la même étiquette "notice php". – Swayam

Répondre

0

Ces erreurs vous disent que votre tableau $_POST ne pas name ou email ou message. Quelqu'un a soumis un formulaire vide.

Maintenant, vous vérifiez les valeurs manquantes plus tard dans votre script, mais pas jusqu'à ce que vous avez déjà essayé d'accéder à ces valeurs de tableau manquantes.

La meilleure chose serait de déplacer votre code de validation ...

if (!$_POST['name']) { 
    ... 

... au sommet il se dirige d'abord. Ensuite, faites seulement $name = $_POST['name']; une fois que vous êtes sûr qu'il existe.

+0

J'ai fait les changements mais il semble que les erreurs apparaissent quand la page est rafraichie ou chargée. Cependant après avoir implémenté les changements vous avez mentionné les erreurs qui ont été générées après avoir soumis le formulaire n'est pas là mais le formulaire ne fonctionne toujours pas :( – Swayam

+0

@Swayam Bien votre question était au sujet des erreurs, et j'ai répondu à cette question. que les erreurs sembleraient lorsque la page est actualisée, il n'y a pas de données de formulaire soumis à ce moment-là! – Here2Help

+0

@Swayam Je ne sais pas ce que vous entendez par « ne fonctionne toujours pas. » Si vous êtes maintenant trouvé des erreurs différentes, ou peut-être tout simplement pas obtenir un e-mail, alors c'est un tout nouveau problème.Faites un peu de dépannage, l'ajout de la journalisation, et de revenir et de poster une nouvelle question lorsque vous avez des détails sur votre problème et peut montrer ce que vous avez essayé – Here2Help