0

好的,所以我将一个 html 5 表单发送到一个带有一些隐藏字段的 php 脚本。一个隐藏的领域正在工作,但另一个没有。有人可以帮我清理一下吗?

这是表格:

<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 手册:

('.=') 是连接赋值运算符,它将右侧的参数附加到左侧的参数。

在您的脚本中,左侧的参数为空,它将生成一个 E_NOTICE 说明该$message变量未定义。

换句话说,$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 回答