isset не работает при отправке формы - PullRequest
1 голос
/ 03 декабря 2011

Я хочу проверить поля формы при отправке формы, я использую isset(), чтобы проверить, имеет ли поле значение или нет.Проблема, с которой я сталкиваюсь, это возвращает true, если поле имеет значение не !!!!!

здесь HTML-код

<form action="handler.php" method="post">
<label>userName: </label><input type="text" name="fname" /><br/>
</form>

и здесь php-код

<?php error_reporting(E_ALL);

if(validateForm()){?>

Welcome <?php echo $_POST["fname"]; ?>.<br />
}

function validateForm(){
     $empty=false;
     $empty=isset($_POST['fname'])?'true':'false';
     echo 'empty>>>>'.$empty;
     return $empty;
 }

?>

Ответы [ 4 ]

3 голосов
/ 03 декабря 2011

То, что вы хотите использовать, это empty:

function validateForm(){
     return !empty($_POST['fname']);
}

edit: удалено isset(), поскольку в этом нет необходимости. Спасибо @ Джулиану.

2 голосов
/ 03 декабря 2011

Когда вы выполняете форму ввода, а поле ввода пустое, это не NULL.isset проверяет, является ли NULL или нет.Возвращает true, если не NULL, и возвращает false, если NULL.

. Я бы проверил, пусто ли оно, используя empty().Он проверяет, является ли переданная ему переменная пустой или нет.Возвращает true, если пусто, false, если не пусто.

1 голос
/ 03 декабря 2011

Даже если поле не имеет значения, оно устанавливается со значением «» (строка длиной 0). Если вы хотите проверить, есть ли значение, которое можно использовать, либо используйте empty(), либо проверьте длину строки.

1 голос
/ 03 декабря 2011

используйте

isset($_POST['fname']) && !empty($_POST['fname'])

, если не уверены, что внутри $_POST, просто распечатайте его

var_dump($_POST)
...