[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: isset и форма
Janlui
Есть форма
<form action="" method="post">
<input
type="text" name="email">
<input
type="text" name="login">
<input
type="text" name="password">
<input
type="submit" name="submit" value="Войти">
</form>

И код
if(isset($_POST['email'], $_POST['login'], $_POST['password'])) {
echo 'Привет';
}

Но у меня проблема в том, что при нажатии на кнопку отправки, при пустых полях, выполняется условие. В чем проблема?
rooor
потому что isset - проверка на существование, а не на пустоту
юзай !empty()
Janlui
rooor
А можно ли у empty проверять сразу несколько переменных?
Игорь_Vasinsky
а мануал что говорит?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
HErATuB

if($_POST['email'] && $_POST['login'] && $_POST['password']) {
echo 'Привет';
}

И все.
Guest
HErATuB
и будет 3 notice
zelenin
проверять надо парами isset( $_POST['key1'] ) && !empty( $_POST['key1'] ) && ...
HErATuB

Цитата (Guest @ 25.10.2013 - 17:23)
HErATuB
и будет 3 notice

С чего ты взял?
По твоему (bool) $_POST['login'] тоже будет notice.
Игорь_Vasinsky
Цитата
По твоему (bool) $_POST['login'] тоже будет notice.


при
error_reporting(E_ALL | E_STRICT);

да.



всё очень просто

1. назначить name для sumbit
2. Проверить в POST наличие кнопки
3. Всё остальное будет существовать (т.к. кнопка была нажата) - и проверять по своим уже правилам валидации (на пустоту, паттерн, длину - что душе угодно) - работать с ними заведомо зная что они есть в POST

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
HErATuB
Игорь_Vasinsky
я сейчас специально проверил, и у меня в логах не пишется уведомление. Проверял простым примером:

//error_reporting(E_ALL | E_STRICT);
$logo="";
echo((bool)$logo?'1':'2');

Пусто.

error_reporting(E_ALL | E_STRICT);
$logo="";
echo((bool)$logo?'1':'2');

Пусто.

error_reporting(E_ALL | E_STRICT);
$logo=""
echo((bool)$logo?'1':'2');

[28-Oct-2013 06:45:28 UTC] PHP Parse error: syntax error, unexpected T_ECHO in Z:\home\phpforum.loc\www\php\1\index2.php on line 4
Игорь_Vasinsky
HErATuB

ты разницу видешь в записях

$logo="";
echo((bool)$logo?'1':'2');

и
(bool) $_POST['login'] 



вот так запусти, без инициализации, как ты выше показывал
echo((bool)$logo?'1':'2');




Причём тут вообще
Цитата
[28-Oct-2013 06:45:28 UTC] PHP Parse error: syntax error, unexpected T_ECHO in Z:\home\phpforum.loc\www\php\1\index2.php on line 4


:D :D

$logo="" // где точка с запятой в конце строки?
echo((bool)$logo?'1':'2');


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
HErATuB
Цитата (Игорь_Vasinsky @ 28.10.2013 - 07:02)
вот так запусти, без инициализации, как ты выше показывал

Запустил все так же пусто.
Цитата (Игорь_Vasinsky @ 28.10.2013 - 07:02)

Причём тут вообще
Цитата
[28-Oct-2013 06:45:28 UTC] PHP Parse error: syntax error, unexpected T_ECHO in Z:\home\phpforum.loc\www\php\1\index2.php on line 4


biggrin.gif biggrin.gif

$logo="" // где точка с запятой в конце строки?
echo((bool)$logo?'1':'2');

Это к тому что грубые ошибки он записывает.
Просто бред в C# это стандартная действие как и в Delphi а php будет обращать на это внимание да?
Игорь_Vasinsky
Цитата
Запустил все так же пусто.

Так у тебя где-то жёстко отключён вывод ошибок, в логах сервера хоть глянь
при обращении к переменной, которая не инициализирована - нотис вида
Notice: Undefined variable: logo in C:\path\file.php on line 11


нотис - это нотис - он не останавливает работу скрипта

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
bestxp
я бы сделал так


<form action="" method="post">
<input
type="text" name="form[emai]l">
<input
type="text" name="form[login]">
<input
type="text" name="form[password]">
<input
type="submit" name="submit" value="Войти">
</form>



if(isset($_POST['form']){
//форма отправлена и тут делаешь проверки остального
$formData = $_POST['form'];

/*и тут уже $formData['email'] и т.д. содержат данные твоей формы
но стоит не забывать что html код могут изменить и форма придет измененной, поэтому
все равно придется сделать isset и empty , но что бы не говорить каждый раз одно и тоже, если форм у тебя более чем 1, я бы уже сделал функцию или класс которая будет это делать за меня, и отдавать true или false если все хорошо или плохо
*/

}
Игорь_Vasinsky
это дело вкуса, удобно, но писать чуток больше

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.