PHP: Отправить электронное письмо с данными, которые пользователь заполнил в форме, только после того, как пользователь нажал «отправить»?(данные являются массивом) - PullRequest
1 голос
/ 17 октября 2011

Я очень новичок в PHP и программировании в целом, и я все еще читаю мое руководство. Я пробую некоторые упражнения и создаю собственные простые тесты.

У меня есть форма с несколькими флажками и выбранными элементами. Пользователь заполняет форму и показывает вывод. Это как маленькая игра, в которой пользователь выбирает несколько ответов, а сценарии показывают число, которое является его / ее счетом.

Теперь я хотел бы получать электронное письмо каждый раз, когда пользователь завершает игру, со всеми ответами.

Пользователи устанавливают некоторые флажки и выбирают элементы, поэтому все ответы являются массивами (поэтому я пробовал $ message_answer2 = $ _POST ['answer2']; и это не сработает).

Итак, я попробовал:

$to   = 'myown@mail.com';
$subject = 'New Game '.date("m/d/Y h:m:s");
$message_answer2 = join(', ', $_POST['answer2']);
mail($to, $subject, $message_answer2);

Есть 2 проблемы с этим:

  • Появляется ошибка PHP: Предупреждение: join () [function.join]: неверные аргументы переданы в ...

  • Электронное письмо отправляется (пустое письмо) каждый раз, когда я просто перезагружаю страницу. Электронные письма следует отправлять только после того, как пользователь нажмет кнопку «отправить» формы.

Буду очень признателен, если кто-нибудь поможет мне с этим:)

Спасибо !!

Rosamunda

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

join() для использования с массивами. Если вы не использовали специфичную для PHP нотацию массива в именах полей формы <input name="answer2[]">, PHP НЕ сделает $_POST['answer2'] массивом - это будет просто обычная строка.

Если ваша форма выглядит как

<input name="answer2" ...>
<input name="answer2" ...>

тогда вы все равно получите только одно строковое значение в $ _POST. Вы должны использовать нотацию [], чтобы сообщить PHP, что он должен создать массив и добавить каждый отдельный ответ2 в этот массив. Когда не в режиме массива, PHP будет просто перезаписывать $_POST['answer2'] каждым значением answer2, которое он находит в данных формы.

2 голосов
/ 17 октября 2011

Вы должны попробовать это:

if (isset($POST['answer2'])) {
    $to   = 'myown@mail.com';
    $subject = 'New Game '.date("m/d/Y h:m:s");
    $message_answer2 = join(', ', $_POST['answer2']);
    mail($to, $subject, $message_answer2);
}

Я предполагаю, что когда пользователь отправляет форму, которую вы отправляете, на текущую страницу.Если это так, то при первоначальной загрузке страницы нет набора данных в $ _POST ['answer2'], поэтому вы получаете сообщение об ошибке, а затем отправляет пустое сообщение, потому что нет данных для отправки.,Добавление того, что электронное письмо будет отправлено только в том случае, если это будет сделано в заявлении, только в том случае, если на странице «answer2» будут размещены данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...