PHP: дождаться ввода пользователя перед выполнением скрипта

У меня есть форма ввода HTML, а также сценарий электронной почты php, который принимает эти значения на той же странице.

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

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

Спасибо и вот мой код

<div id = "center">
<form action="post.php" name="emailform" method="post">
<input type="text" name="name">
<input type="text" name="email">
<input type="text" name="message">
<input type="submit" value="Send Email">
</form>
</div>

<?php
if (!isset($_POST['submit'])) {
echo 'you have hit the submit button';

$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];

$email_from = '[email protected]';
$email_subject = "Message from client";
$email_body = "Message from: $visitor_email \n \n Message:$message";$to = "[email protected]";
$headers = "from:adam\r\n";
mail($to,$email_subject,$email_body,$headers);
} else {
echo 'You have not hit the submit button yet';
}
?>

0

Решение

Во-первых, дайте вашей кнопке отправки имя, например «отправить» (потому что вы уже ссылались на это имя в PHP). Пример:

<input type="submit" name="submit" value="Send Email">

Теперь вы можете использовать $_POST['submit'] в вашем коде.

Затем еще один твик:
Когда вы заявляете if (!isset($_POST['submit'])) {, следующий код выполняется, если кнопка отправки имеет не был нажат, из-за !, Чтобы исправить, просто удалите !, делая это:

if (isset($_POST['submit'])) {

! сообщает оператору if значение true, если следующее выражение здесь isset($_POST['submit']), оценивается как ложное. Следовательно ! означает «если наоборот».

NB: Кроме того, концепция, которая запускается PHP при нажатии кнопки отправки, слегка отключена. Кнопка отправки запускает эту страницу для загрузки другой страницы (или той же страницы). Код PHP запускается только один раз при загрузке страницы.

3

Другие решения

Попробуй это.

<div id = "center">
<form action="post.php" name="emailform" method="post">
<input type="text" name="name">
<input type="text" name="email">
<input type="text" name="message">
<input type="submit" value="Send Email">
</form>

</div><?phpif (isset($_POST['submit'])) {echo 'you have hit the submit button';

if (empty(trim($_POST['name'])) || empty(trim($_POST['email'])) || empty(trim($_POST['message']))) {
echo 'Some fields are empty.';
} else {

$name = $_POST['name'];
$visitor_email = $_POST['email'];
$message = $_POST['message'];

$email_from = '[email protected]';
$email_subject = "Message from client";
$email_body = "Message from: $visitor_email \n \n Message:$message";$to = "[email protected]";
$headers = "from:adam\r\n";
mail($to,$email_subject,$email_body,$headers);
}
} else {echo 'You have not hit the submit button yet';

}

?>
1

По вопросам рекламы [email protected]