2017-07-26 6 views
0

Je suis un peu nouveau à php.Certains de mes champs n'apparaissent pas sur un rd-mailform.php

J'ai attaché rd-mailform.php à mon site et il envoie et redirige parfaitement.

Problème lorsque je l'ai ramassé il avait seulement deux champs, email et message, donc j'ai essayé d'ajouter le nom et le téléphone qui dans mon formulaire html, mais ne peut pas obtenir ces 2 nouveaux champs à apparaître dans l'email I reçois, essaye de comprendre ce qui me manque.

code

est la suivante

<?php 
 

 
$recipients = ''; 
 
//$recipients = ''; 
 

 
try { 
 
    require './phpmailer/PHPMailerAutoload.php'; 
 

 
    preg_match_all("/([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)/", $recipients, $addresses, PREG_OFFSET_CAPTURE); 
 

 
    if (!count($addresses[0])) { 
 
     die('MF001'); 
 
    } 
 

 
    if (preg_match('/^(127\.|192\.168\.)/', $_SERVER['REMOTE_ADDR'])) { 
 
     die('MF002'); 
 
    } 
 

 
    $template = file_get_contents('rd-mailform.tpl'); 
 

 
    if (isset($_POST['form-type'])) { 
 
     switch ($_POST['form-type']){ 
 
      case 'contact': 
 
       $subject = 'A message from your site visitor'; 
 
       break; 
 
      case 'subscribe': 
 
       $subject = 'Subscribe request'; 
 
       break; 
 
      case 'order': 
 
       $subject = 'Order request'; 
 
       break; 
 
      default: 
 
       $subject = 'A message from your site visitor'; 
 
       break; 
 
     } 
 
    }else{ 
 
     die('MF004'); 
 
    } 
 
    
 
    if (isset($_POST['name'])) { 
 
     $template = str_replace(
 
      ["<!-- #{NameState} -->", "<!-- #{FromName} -->"], 
 
      ["Name:", $_POST['name']], 
 
      $template); 
 
    }else{ 
 
     die('MF006'); 
 
    } 
 

 
    
 
    if (isset($_POST['phone'])) { 
 
     $template = str_replace(
 
      ["<!-- #{PhoneState} -->", "<!-- #{FromPhone} -->"], 
 
      ["Phone:", $_POST['phone']], 
 
      $template); 
 
    }else{ 
 
     die('MF005'); 
 
    } 
 

 

 
    if (isset($_POST['email'])) { 
 
     $template = str_replace(
 
      ["<!-- #{FromState} -->", "<!-- #{FromEmail} -->"], 
 
      ["Email:", $_POST['email']], 
 
      $template); 
 
    }else{ 
 
     die('MF003'); 
 
    } 
 
    
 
    if (isset($_POST['message'])) { 
 
     $template = str_replace(
 
      ["<!-- #{MessageState} -->", "<!-- #{MessageDescription} -->"], 
 
      ["Message:", $_POST['message']], 
 
      $template); 
 
    } 
 

 
    preg_match("/(<!-- #{BeginInfo} -->)(.|\n)+(<!-- #{EndInfo} -->)/", $template, $tmp, PREG_OFFSET_CAPTURE); 
 
    foreach ($_POST as $key => $value) { 
 
     if ($key != "name" && $key != "phone" && $key != "email" && $key != "message" && $key != "form-type" && !empty($value)){ 
 
      $info = str_replace(
 
       ["<!-- #{BeginInfo} -->", "<!-- #{InfoState} -->", "<!-- #{InfoDescription} -->"], 
 
       ["", ucfirst($key) . ':', $value], 
 
       $tmp[0][0]); 
 

 
      $template = str_replace("<!-- #{EndInfo} -->", $info, $template); 
 
     } 
 
    } 
 

 
    $template = str_replace(
 
     ["<!-- #{Subject} -->", "<!-- #{SiteName} -->"], 
 
     [$subject, $_SERVER['SERVER_NAME']], 
 
     $template); 
 

 
    $mail = new PHPMailer(); 
 
    $mail->From = $_SERVER['SERVER_ADDR']; 
 
    $mail->FromName = $_SERVER['SERVER_NAME']; 
 

 
    foreach ($addresses[0] as $key => $value) { 
 
     $mail->addAddress($value[0]); 
 
    } 
 

 
    $mail->CharSet = 'utf-8'; 
 
    $mail->Subject = $subject; 
 
    $mail->MsgHTML($template); 
 

 
    if (isset($_FILES['attachment'])) { 
 
     foreach ($_FILES['attachment']['error'] as $key => $error) { 
 
      if ($error == UPLOAD_ERR_OK) { 
 
       $mail->AddAttachment($_FILES['attachment']['tmp_name'][$key], $_FILES['Attachment']['name'][$key]); 
 
      } 
 
     } 
 
    } 
 

 
    $mail->send(); 
 
    header('Location: http://www.mut-con.co.za/thankyou.html'); //Redirect 
 

 
    die('MF000'); 
 
} catch (phpmailerException $e) { 
 
    die('MF254'); 
 
} catch (Exception $e) { 
 
    die('MF255'); 
 
} 
 
?>

Comme je l'ai dit la forme envoie bien, juste besoin d'envoyer le nom et le téléphone ainsi.

Répondre

0

Assurez-vous que le formulaire qui est publié dans le fichier php a les champs nommés les mêmes (même cas, aucun espace, etc) et ont la propriété "name" spécifiée. Si vous avez seulement "id" (qui est utilisé pour identifier le champ uniquement sur la page HTML, mais n'est pas utilisé lors de la soumission du formulaire), les données de champ ne sont pas affichées.

Utilisez var_dump($_POST) pour voir vos données de formulaire affichées sur le serveur, et utilisez l'onglet réseau des outils de développement dans votre navigateur pour voir ce qui a été envoyé sur le réseau. Cela vous aidera à déboguer beaucoup de ces types de problèmes très rapidement.

0

merci beaucoup Douglas tests de Phillips vraiment aidé, parce que je me rendais compte que mon formulaire affichait et recevant tous les champs du navigateur au serveur si commencé à chercher ailleurs, s'avère que j'ai oublié de mettre à jour le modèle qui délivre le courrier. Oeuf dans le moment du visage ici