0

さて、隠しフィールドを持つphpスクリプトにhtml 5フォームを送信しています。1 つの非表示フィールドは機能していますが、もう 1 つのフィールドは機能していません。誰かが私が物事を片付けるのを手伝ってくれますか?

フォームは次のとおりです。

<form action="mail_action.php" method="post">
    <!--Hidden information data-->
    <input type="hidden" name="email_address" value="example@googlemail.com" />
    <input type="hidden" name="email_subject" value="Hello World" />

    <!--The form-->
    <input name="form_data[]">
    <input name="form_data[]">
    <input name="form_data[]">
    <input type="submit">

</form>

そして、ここにスクリプトがあります:

<?php
//Grabbing hidden field data.
$email = $_POST["email_address"];
$subject = $_POST["email_subject"];
$headers = 'From: no-reply@example.co.uk' . "\r\n" .
            'Reply-To: no-reply@example.co.uk' . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

foreach($_POST['form_data'] as $item)
{
//Asigning the message fields to $message variable.
$message .= $item;

//The spaces inbetweeen
$message .= "\r\n";
}

if(mail ($email, $subject, $message, $headers)){
    echo "Your Message was sucessfully emailed to: ".$email;
    } else {
        echo "Opps, Didn't send.";  
        }
?>

email_address 非表示フィールドは機能しますが、件名は機能しません。今後ともよろしくお願いいたします。

4

2 に答える 2

2

PHPマニュアルから:

('.=') は連結代入演算子で、右側の引数を左側の引数に追加します。

スクリプトでは、左側の引数が空で、$message変数が未定義であることを示す E_NOTICE が生成されます。

つまり、$message変数はループの外には存在しないため、存在しない変数に追加しています。

これで修正されるはずです:

$message = ""; //initialize it
foreach($_POST['form_data'] as $item)
{
//Asigning the message fields to $message variable.
$message .= $item;

...

}
于 2013-09-18T11:36:48.410 に答える
1

指定されたコードは正常に機能しており、すべての値が $_POST に取り込まれています。チェックして、結果をお知らせください

array(3) { ["email_address"]=> string(22) "example@googlemail.com" ["email_subject"]=> string(11) "Hello World" ["form_data"]=> array(3) { [0]=> string(5) "dwdcw" [1]=> string(2) "fw" [2]=> string(3) "dfw" } } 
于 2013-09-18T12:50:51.997 に答える