В следующем сценарии у меня isset($_POST[]) всегда возвращает true, даже если данные в форму не введены. Помогите, пожалуйста! Может, надо что-то в php.ini подправить? Потому что этот пример списан из книги по пхп, а в моем сценарии у меня с _POST еще большие глюки. PHP: <?php $num_to_guess = 42; $message = ""; if (!isset($_POST['guess'])) { $message = "Добро пожаловать!"; } else if ($_POST['guess'] > $num_to_guess) { $message = $_POST['guess'] . "Слишком велико!"; print_r ($_POST); } else if ($_POST['guess'] < $num_to_guess) { $message = $_POST['guess'] . "Слишком мало!"; print_r ($_POST); } else $message = "Угадал!"; if (isset($_POST['guess1'])) print "<br>guess1 прочел<br>"; if (isset($_POST['guess2'])) print "<br>guess2 прочел<br>"; ?> HTML: <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN"> <html> <head> <title>Проверка _POST</title> </head> <body> <h1> <?php print $message ?> </h1> <form action="<?php print $_SERVER['PHP_SELF'] ?>" method="POST"> <p> Введите число: <input type="text" name="guess" /> <input type="text" name="guess1"/> <input type="text" name="guess2"/> <input type="submit" value="Ввод" /> </p> </form> </body> </html>
Kap если поле формы не заполнено (оставлено пустым) и нажать сабмит. То ваш - $_POST['guess'] будет все равно существовать ( if (!isset($_POST['guess'])) == true), но оно будет пустым - (empty) Поэтому делайте проверку заполненности полей формы. например PHP: if (!isset($_POST['guess']) && !empty($_POST['guess'])) { ................ }
Adamant, это что такое, простите? :lol: Вы поменяли значения isset и empty на обратные, какой смысл? Что изменится если я напишу Код (Text): if (isset($_POST['guess']) && empty($_POST['guess'])) { Правильно, ничего.
Код (Text): isset($_POST['guess']) это то же самое что: Код (Text): $_POST['guess'] !== null Разница в том, что isset() не выкинет notice, если ключа guess нет в массиве $_POST.
<form action="<?php print $_SERVER['PHP_SELF'] ?>" method="POST"> а почему не поставили ";" в конце строки? правельно: PHP: <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST">
Pomaska, ты бы на дату поста-то смотрел. Нет, не правЕльно. Точка с запятой отделяет одно выражение от другого. Тут всего одно, а значит точка с запятой не обязательно.