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 :: 0 в переменной урла

 PHP.SU

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


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

> Без описания
zmaster01
Отправлено: 29 Ноября, 2011 - 08:36:33
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2011  


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




Есть переменная с числовым значением получаемая из урла $_GET-запросом.
Корректно ли передавать через урл цифру 0?
Не вызовет ли это проблем ввиду того, что числовой 0 в php может восприниматься как false.

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

p.s.
С нулем, в моем случае, было бы проще.
 
 Top
EuGen Администратор
Отправлено: 29 Ноября, 2011 - 08:40:45
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Можно.
У Вас не выходит, так как Вы не учитываете приведение типов в PHP.
Чтобы получилось, нужно делать примерно так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['q']))
  2. {
  3.    echo('yes');
  4. }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Самогонщик
Отправлено: 29 Ноября, 2011 - 08:41:03
Post Id



Посетитель


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


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




Результат везде должен быть одинаковым.

http://www.php[dot]ru/manual/types[dot]comparisons[dot]html
 
 Top
sKaa
Отправлено: 29 Ноября, 2011 - 08:45:53
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


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.  

(Отредактировано автором: 29 Ноября, 2011 - 08:46:49)

 
 Top
DlTA
Отправлено: 29 Ноября, 2011 - 09:18:51
Post Id



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


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


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




sKaa пишет:
/* Не правильный вариант */
// Скорей всего вызовет ошибку
if ($_GET[q]) echo'yes!';
else echo 'no!';
не вызовет, в данном случае регистрируется новая константа q ="q"
хотя в общем способ через 5т.
 
 Top
Мелкий Супермодератор
Отправлено: 29 Ноября, 2011 - 09:25:35
Post Id



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


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


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




DlTA пишет:
не вызовет, в данном случае регистрируется новая константа q ="q"

Вызовет. Дважды.
Обращение к неизвестной константе и обращение к отсутствующему элементу массива.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 29 Ноября, 2011 - 09:36:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




DlTA пишет:
не вызовет, в данном случае регистрируется новая константа q ="q"

Не регистрируется.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
sKaa
Отправлено: 29 Ноября, 2011 - 09:55:21
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


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.  
 
 Top
DlTA
Отправлено: 29 Ноября, 2011 - 10:00:05
Post Id



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


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


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




sKaa пишет:
define('q', 'q');
этого делать не обязательно!
sKaa пишет:
$_GET[q]
хотя такое не желательно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB