2017-07-26 21 views
0

私はphpに少し新しくなっています。私のフィールドのいくつかはrd-mailform.phpに表示されません

私のサイトにrd-mailform.phpを添付して送信し、完全にリダイレクトします。

問題を取り上げたのは、2つのフィールド、電子メール、メッセージしか持たなかったので、私のhtmlフォームに名前と電話を追加しようとしましたが、この2つの新しいフィールドをメールに表示することはできません。私が紛失しているものを理解し、受け取ります。私は、フォームがうまく送信言ったように

<?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'); 
 
} 
 
?>

を次のように

コードがある、それは同様に名前と電話を送信する必要があります。

答えて

0

PHPファイルに送信するフォームには、同じ名前(同じ大文字、スペースなしなど)のフィールドがあり、「名前」プロパティが指定されていることを確認してください。 "id"(HTMLページでフィールドを一意に識別するために使用されますが、フォームの送信時には使用されません)のみの場合、フィールドデータは転記されません。

var_dump($_POST)を使用すると、サーバー側に投稿されたフォームデータが表示され、ブラウザの開発者ツールのネットワークタブを使用して、送信された内容を確認できます。これは、これらのタイプの問題の多くを非常に迅速にデバッグするのに役立ちます。

0

ダグラスフィリップスのテストが本当に助けてくれてありがとう、私のフォームがブラウザからサーバーへのすべてのフィールドを受信して​​受信していることが分かったので、メールを配信するテンプレートを更新するのを忘れてしまった。顔の瞬間の卵はこちら

関連する問題