Хорошо, поэтому я отправляю форму html 5 в php-скрипт с некоторым скрытым полем. Одно скрытое поле работает, а другое - нет. Может ли кто-нибудь помочь мне разобраться?
Здесь форма:
<form action="mail_action.php" method="post">
<!--Hidden information data-->
<input type="hidden" name="email_address" value="[email protected]" />
<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: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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 работает, но не тема, будущее спасибо.
Из руководства PHP:
Оператор ('. =') Является конкатенирующим оператором присваивания, который добавляет аргумент в правой части к аргументу слева.
В вашем скрипте аргумент с левой стороны пуст, и он будет генерировать E_NOTICE, говорящий, что переменная $message
не определена.
Другими словами, переменная $message
не существует вне вашего цикла, поэтому вы добавляете к переменной, которая не существует.
Это должно исправить:
$message = ""; //initialize it
foreach($_POST['form_data'] as $item)
{
//Asigning the message fields to $message variable.
$message .= $item;
...
}
Приведенный код работает хорошо, и все значения заполняются в $ _POST. проверьте его и дайте нам знать результат
array(3) { ["email_address"]=> string(22) "[email protected]" ["email_subject"]=> string(11) "Hello World" ["form_data"]=> array(3) { [0]=> string(5) "dwdcw" [1]=> string(2) "fw" [2]=> string(3) "dfw" } }