2017-04-17 12 views
0

私は次のような滑らかなフォームを設計し、PhP & ajaxと一緒に使用して送信します...ターゲットとなる電子メールIDに電子メールを送信することを含むその正常な作業..合計7 )フィールドには訪問者が記入すると仮定します。問題は、誰かがすべてのフィールドでフォームを送信したときに、3つのフィールド(Name、Email & Message)を受け取ることができます....残りの4つのフィールド(Phone、country、Budget & Select)電子メールに表示されていない...私は私のPHPにいくつかの問題がなければならないと確信しています。私は次のPHPで間違っている場所を教えてください。Php&Ajaxを送信するコンタクトフォームPartial Email

<?php 

// Define some constants 
define("RECIPIENT_NAME", "John Smith"); 
define("RECIPIENT_EMAIL", "[email protected]"); 
define("EMAIL_SUBJECT", "Visitor Message"); 

// Read the form values 
$success = false; 
$senderName = isset($_POST['senderName']) ? preg_replace("/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName']) : ""; 
$senderEmail = isset($_POST['senderEmail']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail']) : ""; 
$senderPhone = isset($_POST['senderPhone']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderPhone']) : ""; 
$senderCountry = isset($_POST['senderCountry']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderCountry']) : ""; 
$senderBudget = isset($_POST['senderBudget']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderBudget']) : ""; 
$senderSelect = isset($_POST['senderSelect']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderSelect']) : ""; 
$message = isset($_POST['message']) ? preg_replace("/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message']) : ""; 

// If all values exist, send the email 
if ($senderName && $senderEmail && $senderPhone && $senderCountry && $senderBudget && $senderSelect && $message) { 
    $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">"; 
    $headers = "From: " . $senderName . " <" . $senderEmail . ">"; 
    $success = mail($recipient, EMAIL_SUBJECT, $message, $headers); 
} 

// Return an appropriate response to the browser 
if (isset($_GET["ajax"])) { 
    echo $success ? "success" : "error"; 
} else { 
?> 
<html> 
    <head> 
    <title>Thanks!</title> 
    </head> 
    <body> 
    <?php if ($success) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?> 
    <?php if (!$success) echo "<p>There was a problem sending your message. Please try again.</p>" ?> 
    <p>Click your browser's Back button to return to the page.</p> 
    </body> 
</html> 
<?php 
} 
?> 
+1

**多すぎるコード**。あなた自身でこれをトラブルシューティングするより良い仕事をする必要があります。私たちはデバッガーではありません。あなたは**問題を分離し、そこからデバッグする必要があります。あなたが立ち往生している場合は、[**最小限で完全で検証可能な例**](http://stackoverflow.com/help/mcve)で**動作していないことの**明確な説明を提供してください。私は** [質問] **良い質問と** [完璧な質問](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)**を読むことをお勧めします。 –

+0

質問より良い理解のために改訂... –

答えて

1

郵送中に電話、国、予算、および選択フィールドを追加していません。試してみてください:

if ($senderName && $senderEmail && $senderPhone && $senderCountry && $senderBudget && $senderSelect && $message) { 

    $msgToSend = "Name: ".$senderName."\r\n"; 
    $msgToSend .= "Email: ".$senderEmail."\r\n"; 
    $msgToSend .= "Phone: ".$senderPhone."\r\n"; 
    $msgToSend .= "Sender Country: ".$senderCountry."\r\n"; 
    $msgToSend .= "Sender Budget: ".$senderBudget."\r\n"; 
    $msgToSend .= "Sender Select: ".$senderSelect."\r\n"; 
    $msgToSend .= "Message: ".$message; 

    $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">"; 
    $headers = "From: " . $senderName . " <" . $senderEmail . ">"; 
    $success = mail($recipient, EMAIL_SUBJECT, $msgToSend, $headers); 
} 
+0

はいあなたは正しいです。これは問題でした..(y) –

関連する問題