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
Форумы портала PHP.SU :: Версия для печати :: 0 в переменной урла
Форумы портала PHP.SU » » Вопросы новичков » 0 в переменной урла

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

1. zmaster01 - 29 Ноября, 2011 - 08:36:33 - перейти к сообщению
Есть переменная с числовым значением получаемая из урла $_GET-запросом.
Корректно ли передавать через урл цифру 0?
Не вызовет ли это проблем ввиду того, что числовой 0 в php может восприниматься как false.

К примеру если передать ?q=0, то условие
if ($_GET[q]) echo'yes!';
срабатывает. (у меня)
Но будет ли это работать везде?

p.s.
С нулем, в моем случае, было бы проще.
2. EuGen - 29 Ноября, 2011 - 08:40:45 - перейти к сообщению
Можно.
У Вас не выходит, так как Вы не учитываете приведение типов в PHP.
Чтобы получилось, нужно делать примерно так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['q']))
  2. {
  3.    echo('yes');
  4. }
3. Самогонщик - 29 Ноября, 2011 - 08:41:03 - перейти к сообщению
Результат везде должен быть одинаковым.

http://www.php[dot]ru/manual/types[dot]comparisons[dot]html
4. sKaa - 29 Ноября, 2011 - 08:45:53 - перейти к сообщению
zmaster01 пишет:
К примеру если передать ?q=0, то условие
if ($_GET[q]) echo'yes!';

В таком виде оставлять всё очень печально.

Index.php?q=0 :
PHP:
скопировать код в буфер обмена
  1.  
  2. ini_set("register_globals",0); // Если версия пхп ниже 5.3
  3.  
  4. /* Не правильный вариант */
  5. // Скорей всего вызовет ошибку
  6. if ($_GET[q]) echo'yes!';
  7. else echo 'no!';
  8.  
  9.  
  10.  
  11. /* Правильный */
  12. $q = '';
  13. if(isset($_GET['q'])) $q = $_GET['q'];
  14. echo $q;
  15.  
  16.  
5. DlTA - 29 Ноября, 2011 - 09:18:51 - перейти к сообщению
sKaa пишет:
/* Не правильный вариант */
// Скорей всего вызовет ошибку
if ($_GET[q]) echo'yes!';
else echo 'no!';
не вызовет, в данном случае регистрируется новая константа q ="q"
хотя в общем способ через 5т.
6. Мелкий - 29 Ноября, 2011 - 09:25:35 - перейти к сообщению
DlTA пишет:
не вызовет, в данном случае регистрируется новая константа q ="q"

Вызовет. Дважды.
Обращение к неизвестной константе и обращение к отсутствующему элементу массива.
7. EuGen - 29 Ноября, 2011 - 09:36:48 - перейти к сообщению
DlTA пишет:
не вызовет, в данном случае регистрируется новая константа q ="q"

Не регистрируется.
8. sKaa - 29 Ноября, 2011 - 09:55:21 - перейти к сообщению
sKaa пишет:
/* Не правильный вариант */
// Скорей всего вызовет ошибку
if ($_GET[q]) echo'yes!';
else echo 'no!';

Я всего лишь скопировал пример топикастера ))) только сейчас заметил, что там константа q ))
в таком случае : )
PHP:
скопировать код в буфер обмена
  1.  
  2. define('q', 'q');
  3. if ($_GET[q]) echo'yes!';
  4. else echo 'no!';
  5.  
9. DlTA - 29 Ноября, 2011 - 10:00:05 - перейти к сообщению
sKaa пишет:
define('q', 'q');
этого делать не обязательно!
sKaa пишет:
$_GET[q]
хотя такое не желательно

 

Powered by ExBB FM 1.0 RC1