[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка полей ввода на пустоту
Dimaz
Всем привет! Пишу скрипт авторизации и регистрации. Возник такой вопрос, какую функцию лучше использовать, empty или isset, или их можно объединить? У них есть какое-то отличие или это функции "синонимы"? Если не сложно напишите пожалуйста отрывок кода где проверяются поля логин и пароль на пустоту. smile.gif



Спустя 1 минута, 37 секунд (2.02.2010 - 13:19) krasilich написал(а):
isset пропустит ноль или пустую строку

$t = 0;

isset($t); //true
!empty($t); // false



Проверка на пустоту

$login = !empty($_POST['login'])?$_POST['login']:null;
$pass = !empty($_POST['pass'])?$_POST['pass']:null;

if($login && $pass)
{
echo 'Все ОК';
}
else
{
echo 'Что-то не заполнено';
}

Спустя 7 минут, 8 секунд (2.02.2010 - 13:27) Dimaz написал(а):
То есть лучше использовать empty. Только я не понимаю зачем перед функцией ставится оператор отрицания(!)? Она же вроде в таком случаи возвратит TRUE а не FALSE.

Спустя 2 минуты, 17 секунд (2.02.2010 - 13:29) Dimaz написал(а):
?$_POST['login']:null;
А это еще что такое? unsure.gif

Спустя 49 секунд (2.02.2010 - 13:30) Kuliev написал(а):
Dimaz
Читай в мануале про функцию empty()

Спустя 1 минута, 39 секунд (2.02.2010 - 13:31) Kuliev написал(а):
Цитата (Dimaz @ 2.02.2010 - 15:29)
?$_POST['login']:null;
А это еще что такое? unsure.gif

Это называется тернарным оператором, если все ОК то выполняется правое условие если нет то левое!

Спустя 6 минут, 9 секунд (2.02.2010 - 13:37) Dimaz написал(а):
Левый проверяет как я понял не пустое ли поле. Стесняюсь спросить а правый оператор что же тогда делает? unsure.gif

Спустя 4 минуты, 43 секунды (2.02.2010 - 13:42) krasilich написал(а):
Условие ? выполняем если условие true : выполняем если условие false ;

Чем-то похоже на конструкцию
if(условие)
{
Выполняем, если условие true
}

Спустя 11 минут, 48 секунд (2.02.2010 - 13:54) Dimaz написал(а):

$login = !empty($_POST['login'])?$_POST['login']:null;

То есть если прочитать этот код человеческим языком то получится так:
1)Проверка не пустое ли поле логин - !empty($_POST['login'])
2)Если оно не пустое, то заносим его значение в переменную $login - ?$_POST['login']
3)Если поле пустое то возвращаем пустой объект что ли? unsure.gif
Че то не врубаюсь все равно окончательно)))

Спустя 5 минут, 58 секунд (2.02.2010 - 14:00) DedMorozzz написал(а):
If (!empty($_POST['login']))
{
$Login=$_POST['login'];
}
else
{
$login=null;
}

и сравни с этой записью :
$login = !empty($_POST['login'])?$_POST['login']:null;

Спустя 2 минуты, 58 секунд (2.02.2010 - 14:03) krasilich написал(а):
Dimaz
Все верно, ты наверно не понял что такое NULL. Это особый тип данных, который обозначает "ничего". Вместо него можно вставить и пустую строку и 0 и false

Вообще, если такая тяга к человеческому языку, то вот....


$ничего = null;
$ФОРМА = $_POST;

function не_пустой ($значение)
{
return !empty($значение);
}

$пароль = не_пустой($ФОРМА['пароль'])?$ФОРМА['пароль']:$ничего;
$логин = не_пустой($ФОРМА['логин'])?$ФОРМА['логин']:$ничего;



Код рабочий, кстати=))

Спустя 12 минут, 22 секунды (2.02.2010 - 14:15) Dimaz написал(а):
DedMorozzz, все равно не врубаюсь(идиот потому что biggrin.gif ) зачем оператор "!" стоит перед функцией, ведь функция empty возвращает значение TRUE в том случаи если поле не заполнено и значение FALSE если поле заполнено, а с оператором отрицания "!" получается все наоборот. Тогда смысла не понимаю. huh.gif

Спустя 4 минуты (2.02.2010 - 14:19) DedMorozzz написал(а):
если не пустое поле(!empty), тогда мы присваеваем переменой "логин" значение этого поля($Login=$_POST['login']), иначе(если оно таки пустое) - присваеваем "нулл"($Login=null).

А если делать без "!", то каков будет результат если такого поля нету?

Спустя 1 минута, 11 секунд (2.02.2010 - 14:20) Dimaz написал(а):
see man, спасибо за человеческий язык biggrin.gif Ну вот получается, что если поле пустое то в переменную записывается пустой объект, то есть ничего. И куда потом это "ничего" применять?

Спустя 2 минуты, 35 секунд (2.02.2010 - 14:23) DedMorozzz написал(а):
иф логин = нулл - алерт, иль надпись: "выне заполниле все поля, раскайтесь и вернитесь обратно, для заполнения". Что то в таком роде. Вариантов масса..

Спустя 1 минута, 44 секунды (2.02.2010 - 14:25) krasilich написал(а):
Dimaz
Тебе посоветовали почитать мануал по empty. Ты это сделал, только чесно?
Если да, то покажи нам тот мануал где написано, что empty возвращает true, если поле не пустое?




Блин, я уже сам запутался...
Факт в том, что empty возвращает значиния, скажем так, инвертированно к isset.

Тоесть если isset вернет true, то empty вернет false, и наоборот.
(С поправкой на различия между этими функциями)
Вот этим и обьясняется инвертирование.

Спустя 2 минуты, 17 секунд (2.02.2010 - 14:27) Dimaz написал(а):
<?
//проверка данных
$login = $_POST['login'];
$pass = $_POST['pass'];
if (empty($login))
{
echo "Не заполнено поле логин!";
exit();
}
else if(empty($pass))
{
echo "Не заполнено поле пароль!";
exit();
}
?>

Вот мой скрипт, разве не то же самое? И без оператора "!".

Спустя 1 минута, 38 секунд (2.02.2010 - 14:29) Dimaz написал(а):
see man мой скрипт как раз говорит об этом))) Ведь сообщение выводится если условие TRUE. Так вот если поле пустое, то возвращается значение TRUE и выводится сообщение об ошибке

Спустя 1 минута, 42 секунды (2.02.2010 - 14:30) Dimaz написал(а):
see man, подожди ка, так я как раз наоборот говорю, что TRUE если поле пустое

Спустя 1 минута, 45 секунд (2.02.2010 - 14:32) krasilich написал(а):
Ну так ты в своем скрипте ищешь пустое поле, а я в смоем ищу НЕ пустое.

Спустя 2 минуты, 30 секунд (2.02.2010 - 14:35) krasilich написал(а):
Цитата
Returns FALSE if var  has a non-empty and non-zero value.


А мне нужно false если поле пустое, что бы записать в него null, поэтому и инвертирую.

Что еще не ясно?

Спустя 2 минуты, 31 секунда (2.02.2010 - 14:37) Dimaz написал(а):
Ах вот где Деды Морозы зимуют biggrin.gif biggrin.gif biggrin.gif А я думаю почему где то так пишут, а где то по иному. Теперб все понятно. Спасибо за ответы господа! И кстати лучше искать пустое поле или не пустое, или без разницы?(последний вопрос)

Спустя 2 минуты, 32 секунды (2.02.2010 - 14:40) krasilich написал(а):
Зависит от логики скрипта=)


Вообще для php без разницы, напишешь ты

$login = !empty($_POST['login'])?$_POST['login']:null;

//или

$login = empty($_POST['login'])?null:$_POST['login'];

Спустя 2 минуты, 5 секунд (2.02.2010 - 14:42) Soldier Ghost написал(а):
$login = !empty($_POST['login']) ? trim($_POST['login']):NULL;


проверка:
if(!empty($login))
{
//...делаем что нужно
}

Не пропустит ничего даже пробелов с интерами )

Спустя 2 минуты, 18 секунд (2.02.2010 - 14:44) Dimaz написал(а):
Круто! Спасибо!!! smile.gif laugh.gif biggrin.gif

Спустя 1 минута, 51 секунда (2.02.2010 - 14:46) Dimaz написал(а):
Soldier Ghost это то что ты ниже написал или вместе верхнее с нижним?

Спустя 2 минуты, 58 секунд (2.02.2010 - 14:49) krasilich написал(а):
Soldier Ghost
Скорее

$login = !empty(trim($_POST['login'])) ?$_POST['login']:NULL;

Спустя 2 минуты, 54 секунды (2.02.2010 - 14:52) Dimaz написал(а):
see man а без trim() пропустит разве пробелы?

Спустя 2 минуты, 25 секунд (2.02.2010 - 14:54) Kuliev написал(а):
Цитата (Dimaz @ 2.02.2010 - 16:52)
see man а без trim() пропустит разве пробелы?

А ты попробуй и узнаешь, экспериментируй ))

Спустя 4 минуты (2.02.2010 - 14:58) Dimaz написал(а):
Kuliev, ага пропускает с пробелами! biggrin.gif
Быстрый ответ:

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