Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проверка isset() [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
movEAX
Отправлено: 10 Июля, 2010 - 22:23:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




D1ma пишет:
если не сложно ,пример, пожалуйста

По поводу isset, допустим ты полагаешься на то, что в форме всеравно все эти элементы есть и никуда они не денутся, поэтому проверку ты не делаешь. Теперь какой-нибудь злодей ( обычно я так делаю Хорошо ) возьмет и какое-нибудь поле удалит =) Как?!? FireBug к примеру!! Вряд ли это конечно нанесет существенный урон, помимо вызова ошибки, хотя все зависит от скрипта.

Ну empty тут и говорить нечего, взять в пример хотя бы поле ввода пароля


-----
армия.. самое убогое место
 
 Top
D1ma
Отправлено: 10 Июля, 2010 - 22:51:07
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




скажите пожалуйста,такой вариант будет правильным?
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if (isset($_POST['name'])  {
  4.  
  5. $name = $_POST['name'];
  6.  
  7. if $name ='' {
  8.  
  9. unset($name);
  10.  
  11. }
  12.  
  13.  


поправил Улыбка

(Отредактировано автором: 10 Июля, 2010 - 22:57:49)

 
 Top
SAD
Отправлено: 10 Июля, 2010 - 22:54:30
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




Нет, переменная существует, какая тут ошибка?
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $name = trim($_POST['name']);
  2. if (strlen($name) > 0)
  3.   echo 'Good';

Самый хороший вариант)

(Отредактировано автором: 10 Июля, 2010 - 23:02:10)

 
 Top
movEAX
Отправлено: 10 Июля, 2010 - 23:04:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. // удаляем пробельные символы, накой они нам? ))
  3. $name = trim($_POST['name']);
  4.  
  5. // Вместо or лучше использовать ||, т.к. при использовании or
  6. // будут проверены оба условия даже если первое вернет ИСТИНУ
  7. // При || если условие слева вернет ИСТИНА, второе условие  
  8. // уже не будет проверяться, сам думай что быстрее ))
  9. // И для использования проверки на равенство нужно юзать == ))
  10.  
  11. if (!isset($name) || $name == '' ) {
  12.  
  13. // можно так, создав свое исключение и обработав его
  14. // вывести сообщение пользователю
  15. //throw new Exception();
  16.  
  17. // можно die();
  18. //die('Hacking attempt!');
  19.  
  20. // ну можно и exit
  21. exit('Error!'); // старайся везде где можно применять одинарные кавычки
  22.  
  23.  
  24. }


Только сейчас заметил ошибку )) Но править не стану
Вот мой вариант, может пригодиться
PHP:
скопировать код в буфер обмена
  1.  
  2. $name = isset($_POST['name']) && trim($_POST['name']) ? $_POST['name'] : FALSE;
  3. if (!$name) {
  4. // делаем чего-нибудь
  5. }

(Отредактировано автором: 10 Июля, 2010 - 23:11:17)



-----
армия.. самое убогое место
 
 Top
D1ma
Отправлено: 10 Июля, 2010 - 23:05:23
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




SAD, интересный способ Улыбка

movEAX, спасибо,а по чему одинарные кавычки ?

(Отредактировано автором: 10 Июля, 2010 - 23:08:03)

 
 Top
movEAX
Отправлено: 10 Июля, 2010 - 23:16:35
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




D1ma пишет:

movEAX, спасибо,а по чему одинарные кавычки ?

Ну во первых если в тексте случайно будет нечто $var, то оно так и останется $var, в отличие, от двойных кавычек. Т.е. безопасность.

Во-вторых, при использовании регулярнызх выражений меньше мучится с экранированием придется (открою секрет на будущее, в регулярках вместо / можно использовать любой другой символ).

В-третьих, это хороший тон в плане программирования на php

В-четвертых, гугль скажет за меня =)

ps: советую почитать Expert php5 Tools, там есть ответы на вопросы: "Зачем?", "Как?" и "Почему?". Правда книжка на английском.

(Отредактировано автором: 10 Июля, 2010 - 23:26:25)



-----
армия.. самое убогое место
 
 Top
JustUserR
Отправлено: 12 Июля, 2010 - 14:59:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




movEAX пишет:
Ну во первых если в тексте случайно будет нечто $var, то оно так и останется $var, в отличие, от двойных кавычек. Т.е. безопасность.
То есть вы считаете что механизм интерполяции данных в строку с двойными кавычками является небезопасным - конечно его можно считать более медленным но безопасность зависит от предварительной проверки и экранирования интерполируемых данных Помимо прочего строки с двойными кавычками поддерживают удобное использования последовательностей \n и ей подобных - в то время как в строках с одиночными кавычками их приходится вставлять как соответствующей символьные константы в исходном PHP-коде


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
movEAX
Отправлено: 12 Июля, 2010 - 15:25:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




JustUserR пишет:
То есть вы считаете что механизм интерполяции данных в строку с двойными кавычками является небезопасным

Это скорее характерно для новичков. Что им мешает написать такое (хоть и маловероятно)?
PHP:
скопировать код в буфер обмена
  1. $dbpass = 'pass';
  2. // в спешке забыли заэкранировать $
  3. echo "Переменная $dbpass содержит пароль к базе";


По счет скорости Вы правы, и это еще одна мотивация использовать одинарные кавычки.


-----
армия.. самое убогое место
 
 Top
JustUserR
Отправлено: 12 Июля, 2010 - 21:19:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




movEAX пишет:
Это скорее характерно для новичков. Что им мешает написать такое (хоть и маловероятно)?
По многим критериям я соглашусь с вами особенно в плане регулярных выражений - ведь в PHP в отличие от языков Perl и JS константы шаблонов регулярных выражений не являются особым типом и хранятся в обычных строковых константах - а это добавляет один уровень экранирования по строковым символам что при использовании дополнительных двойных кавычек может быть неочевидно для восприятия Тем не менее если следовать C/C++-синтаксису то двойные кавычки для обрамления строк воспринимаются гораздо лучше - одиночные кавычки в свою очередь хорошо подходят по смыслу для обрамления ключей хеш-массивов который мысленно можно воспринимать как единый индекс


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
D1ma
Отправлено: 22 Июля, 2010 - 22:59:22
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




а как лучше проверять на заполнение формы ?


PHP:
скопировать код в буфер обмена
  1.  if (!isset($login) || $login == '') {
  2.         $error .= "Вы не ввели логин.";
  3.     }


или
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!isset($login) || empty($login) {
  3.         $error .= "Вы не ввели логин.";
  4.     }
  5.  


в плане скорости выполнения и как показателя хорошего стиля Закатив глазки

(Отредактировано автором: 22 Июля, 2010 - 23:07:30)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB