2017-01-20 7 views
-3

コードの何が間違っているかを知るために助けてもらえますか?実際に私は直接メールIDにフォームデータを送信しようとしていますが、次のコードは動作していません。すべてのユーザー入力データを表形式のメールIDに送信する必要があります。フォームデータをメールに送信する方法ID

HTML部分

<div class="form-group"> 
<label class="control-label col-lg-2" for="Patient">Patient:</label> 
    <div class="col-lg-10"> 
    <input type="text" class="form-control fc" name="patient" id="Patient"> 
    </div> 
</div> 

<div class="form-group"> 
<label class="control-label col-lg-2" for="Date">Date:</label> 
    <div class="col-lg-10">   
    <input type="date" class="form-control fc" name= "date" id="Date"> 
    </div> 
</div> 
<button type="submit" class="btn btn-default" data-loading-text="Sending...">Send</button> 

PHP

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

$userinput==true; // set trigger for verification 

//Error variables 
$patientErr1=""; 
$patientErr2=""; 
$DateErr = ""; 
$DoctErr = ""; 
$patient = $_POST["patient"]; 
$date = $_POST["date"]; 
if(isset($_POST['submit'])){ 

    if(empty($patient)){ 
     $patientErr1 = "You have to provide Name"; 
     $userinput = false; 
    } 
    if (!preg_match("/^[a-zA-Z ]*$/",$patient)){ 
     $patientErr2 = "You can't provide numeric value in name field"; 
     $userinput = false; 
    }else{ 
     $patient = test_input($patient); 
    } 

    if (empty($date)){ 
     $DateErr = "Please select date"; 
     $userinput = false; 

    }else{ 
     $date = test_input($date); 
    } 
    if(empty($doctor)){ 
     $DoctErr = "Please fill Doct Name"; 
     $userinput = false; 
    } 
    if (!preg_match("/^[a-zA-Z ]*$/",$doctor)){ 
     $DoctErr2 = "You can't provide numeric value in name field"; 
     $userinput = false; 
    }else{ 
     $patient = test_input($doctor); 
    } 

if ($userinput == true){ 

    // mail will sent to 
    $to = "[email protected]"; 
    $subject = "User input"; 
    $message = " 
    ?> 
    <html> 
     <head> 
     </head> 
     <body> 
      <table> 
       <tr> 
        <th>Field Name</th> 
        <th>Value</th> 
       </tr> 
       <tr> 
        <td>patient Name</td> 
        <td><?php echo $patient; ?></td> 
       </tr> 
       <tr> 
        <td>date</td> 
        <td><?php echo $doctor; ?></td> 
       </tr> 
      </table> 
     </body> 
    </html> 
    <?php"; 
} 
    //send mail 
    mail($to,$subject,$message); 
?> 
+0

メールは4つの引数を受け入れます。 '$ headers'が見当たりません他の賢明なコードを見つけようとしてみましょう –

+0

私はいくつか間違いを見ました '$ message ="?> ... <?php ";' $ message in varable –

+0

@ M SIDDIQUIヘッダーはオプションです... – phpLover

答えて

0

あなたがPHPメール()関数を使用してHTML形式の電子メールを送信したい場合、あなたはヘッダーを設定し、HTMLにコンテンツタイプを設定する必要があります。

あなたのスクリプトには多くの問題があります。あなたのフォームには存在しない_POSTがあなたのPHPにあります。私はあなたのスクリプト全体をやり直しました。私とあなたとを照らし合わせて、間違っていて、それから学ぶのを見てください。

感謝:)

<?php 



$errors = ""; 
; // check number of errors 

//Error variables 
$patientErr1 = ""; 
$DateErr  = ""; 
$DoctErr  = ""; 
$emailErr = ""; 


$DoneMessage = ""; 
$to   = "[email protected]"; 
$subject  = "User input"; 

if (isset($_POST['submit'])) { 


    if (empty($_POST['patient'])) { 

     $patientErr1 = "You have to provide Name"; 
     $errors++; 
    } else { 

     $patient = test_input($_POST['patient']); 

     if (!preg_match("/^[a-zA-Z ]*$/", $patient)) { 

      $patientErr1 = "You can't provide numeric value in name field"; 
      $errors++; 
     } 
    } 

    if (empty($_POST['date'])) { 

     $DateErr = "Please select date"; 
     $errors++; 
    } else { 

     $date = test_input($_POST['date']); 
    } 

    if (empty($_POST['email'])) { 

     $emailErr = "enter email"; 
     $errors++; 
    } else { 

     $email = test_input($_POST['email']); 

     if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { 

      $emailErr = "Enter valid email"; 
     } 
    } 


    if ($errors > 0) { 

     // We have errors print them back 

     $DoneMessage = "Please fix " . $errors . " below to send message"; 
    } else { 
     // No Errors set headers and send email 

     $headers = "MIME-Version: 1.0" . "\r\n"; // set html 
     $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 
     $headers .= 'From: ' . $patient . ' <' . $email . '>' . "\r\n"; 


     $message = "<table> 
        <tr> 
         <th>Patient Name</th> 
         <th>Value</th> 
         <th>Email</th> 

        </tr>"; 
     $message .= "<tr> 

          <td>$patient</td> 

        </tr>"; 
     $message .= "<tr> 
         < 
         <td>$date</td> 

        </tr>"; 

     $message .= "<tr> 

         <td>$email</td> 

        </tr>"; 

     $message . "=  </table>"; 

     if (mail($to, $subject, $message, $headers)) { 

      $DoneMessage = "Thaks email sent"; 
     } else { 

      $DoneMessage = "Server problem could not send email"; 
     } 
    } 



    // mail will sent to 




} 



function test_input($data) 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 



?> 

    <?php echo $DoneMessage;?> 

<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    <div class="form-group"> 
     <label class="control-label col-lg-2" for="Patient">Patient: <?php echo $patientErr1;?></label> 
     <div class="col-lg-10"> 
      <input type="text" class="form-control fc" name="patient" id="Patient"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="control-label col-lg-2" for="Date">Date: <?php echo $DateErr;?></label> 
     <div class="col-lg-10">   
      <input type="date" class="form-control fc" name= "date" id="Date"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="control-label col-lg-2" for="email">Your email: <?php echo $emailErr;?></label> 
     <div class="col-lg-10"> 
      <input type="email" class="form-control fc" name="email" id="email"> 
     </div> 
    </div> 
    <button type="submit" name="submit" class="btn btn-default" data-loading-text="Sending...">Send</button> 
</form> 
関連する問題