2010-10-01 8 views
0

J'ai créé un simple formulaire de soumission dans lequel l'utilisateur saisit son adresse e-mail et clique sur Soumettre et son adresse e-mail est envoyée par e-mail pour une utilisation dans un mailing liste.Ce formulaire de contact ne fonctionnera pas correctement

Pour une raison quelconque, il continue à me donner la même erreur et pas envoyé l'e-mail: semble

Désolé, mais cela ne pas être une adresse e-mail valide.

Voici mon code:

<?php define('access', true); ?> 
<?php 
    // Configuration 
    $emailTo = '[email protected]'; // The e-mail address 
    $mySite = 'test Mailing List'; // The name of the website 
    $subject = 'test | New Mailing Lister!'; 
    $msg = ''; 

    // If the form is submitted 
    if(isset($_POST['submit'])) { 
     // Check that the email entered is valid and not empty 
     if(trim($_POST['email']) == '') { 
      $hasError = true; 
      $msg = '<p class="error">Sorry but that doesn\'t seem to be a valid e-mail address.</p>'; 
     } else if (!eregi("^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) { 
      $hasError = true; 
      $msg = '<p class="error">Sorry but that doesn\'t seem to be a valid e-mail address.</p>'; 
     } else { 
      $email = trim($_POST['email']); 
     } 

     // Are we error free? If so send away 
     if(!isset($hasError)) { 
      $body = "Someone has signed up for the test mailing list, the e-mail address they used is:\n\n<strong>$email</strong>"; 
      $headers = 'From: ' . $mySite . ' <' . $emailTo . '>' . "\r\n" . 'Reply-To: ' . $email; 
      $msg = '<p class="thanks">Thanks for subscribing to test\'s services mailing list. We\'ll keep you posted on service updates!</p>'; 

      mail($emailTo, $subject, $body, $headers); 
      $emailSent = true; 
     } 
    } 
?> 
<?php include('includes/html_header.php'); ?> 
    <?php include('includes/header.php'); ?> 

    <div id="container"> 
     <?php if(!isset($_GET['id'])) { ?> 
     <div id="container_column-1"> 
      <h1>test</h1> 
      <p>Li Europan lingues es membres del sam familie. Lor separat existentie es un myth. Por scientie, musica, sport etc, litot Europa usa li sam vocabular. Li lingues differe solmen in li grammatica, li pronunciation e li plu commun vocabules. Omnicos directe al desirabilite de un nov lingua franca: On refusa continuar payar custosi traductores. At solmen va esser necessi far uniform grammatica, pronunciation e plu sommun paroles. Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues. It va esser tam simplic quam Occidental in fact, it va esser Occidental. A un Angleso it va semblar un simplificat Angles, quam un skeptic Cambridge amico dit me que Occidental es. Li Europan lingues es membres del sam familie.</p> 
     </div> 

     <div id="container_column-2"> 
      <h1>Coming <span>soon</span>!</h1> 
      <p>We have an exciting new service to offer to our customers. We're not able to announce anything right now, but watch this space for updates in the very near future!</p> 
      <p>Alternatively, you can enter your e-mail address below to be informed of any new services and offers we have. Don't worry, we won't sell on your e-mail address and you won't receive any junk mail!</p> 

      <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
       <label>Be the first to hear about new services!</label> 
       <input type="text" size="35" name="mailinglist" id="mailinglist" title="Enter your e-mail address" /> 
       <button type="submit" name="submit">&raquo;</button> 
      </form> 
      <?php if(isset($_POST['submit'])) { echo $msg; } ?> 
     </div> 
     <?php 
      } else { 
       include($_GET['id'] . ".php"); 
      } 
     ?> 
    </div> 

    <?php include('includes/footer.php'); ?> 
<?php include('includes/html_footer.php'); ?> 
+0

Vérifiez ce que la page envoie au serveur. La clé POST "email" est évidemment vide. –

+0

Il n'est pas clair à quelle étape de l'instruction if est attraper. À des fins de test, modifiez le message d'erreur de l'un des deux et voyez ce qu'il n'aime pas. – OpenDataAlex

Répondre

1

C'est assez facile à voir. Votre erreur est ici:

<input type="text" size="35" name="mailinglist" id="mailinglist" title="Enter your e-mail address" /> 

il devrait être ceci:

<input type="text" size="35" name="email" id="mailinglist" title="Enter your e-mail address" /> 
+0

Merde, pourquoi ai-je négligé cela. Je dois d'essayer tout le reste sauf ça! Merci! – Chrish

+0

J'ai eu quelques problèmes similaires en construisant mes formulaires et en ayant toujours les formes remplies avec l'entrée de ma base de données et des entrées post, mais après un certain temps vous vous habituerez et peut-être même utiliserez-vous codeigniter créer des formulaires – ITroubs

2

si vous allumerait erreur repoting

<?php 
error_reporting(E_ALL); 
ini_set('display_errors','on'); 

alors vous finiriez avec le message d'erreur:

Notice: Undefined index: email in %script% on line %line% 

et c'est parce que vous n'avez aucun email déposé dans votre formulaire. à la place, vous l'avez appelé mailinglist

alors changez le nom du champ en email ou changez votre code pour demander un champ mailinglist.

1

changement trim($_POST['email']) à trim($_POST['mailinglist']).

Questions connexes