Скрытое поле не появляется в PHP-скрипте

0

Хорошо, поэтому я отправляю форму 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 работает, но не тема, будущее спасибо.

Теги:
forms
hidden

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;

...

}
  • 1
    Это правильное предложение, но оно не касается фактического вопроса, который был задан.
  • 0
    Но это работает. Моя проблема, $ subject = $ _POST ["email_subject"]; не входит в мой сценарий.
1

Приведенный код работает хорошо, и все значения заполняются в $ _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" } } 
  • 0
    По некоторым причинам решено работать. Я думаю, что браузер, возможно, кэшировал страницу или что-то в этом роде. Это очень странно!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню