VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
TYPE_INT - числа, допускаются отрицательные значения
TYPE_UINT - числа, только 0 или больше нуля
TYPE_BOOL - булево значение, 0/1 или true/false
очень подробно все типы расписаны в комментах файла class_core.php
Sellrion
Kernel panic
Join Date: Aug 2007
Location: Екатеринбург
Posts: 2,536
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 1921
Репутация в разделе: 793
0
Quote:
Originally Posted by usrg
Значение 0 воспринимается условием также как неопределенное
Метод clean_gpc используется для очистки существующей переменной. В теле этого метода вызывается метод clean с параметром $exists, в который из clean_gpc передается isset($varname). То есть тут все делается за вас. В вашем случае есть два способа: 1. Поставить на форму соответствующий элемент управления, чтобы гарантировать ввод только чисел и исключить пустые значения. 2. Проверять на содержимое перед очисткой.
@usrg
Эксперт
Join Date: May 2009
Posts: 982
Версия vB: 3.8.4
Reputation:
Expert 1420
Репутация в разделе: 161
0
Quote:
Originally Posted by kerk
можно еще проверять существование переменной
if($vbulletin->GPC_exists['varname']))...
[/PHP]
Очень похоже на искомое, только у меня не получается -
PHP Code:
<?php
require_once('./global.php');
if ($vbulletin->gpc_exists["WantZero"]) { echo "Here it is - ".$vbulletin->input->clean_gpc('p', "WantZero", TYPE_INT); }
?>
<form method='post'>
<input type=text name=WantZero>
<input type=submit>
</form>
Условие почему то не срабатывает.
Quote:
Originally Posted by Sellrion
Метод clean_gpc используется для очистки существующей переменной
Я ищу встроенный метод типа вышеподсказанного exists, чтобы отличать пустые значения от значений с 0.
это разные вещи
$vbulletin->GPC['varname'] может быть пустой либо равна нулю
можно еще так
PHP Code:
if($vbulletin->GPC_exists['varname'] AND !empty($vbulletin->GPC['varname'])) { // ...... }
Sellrion
Kernel panic
Join Date: Aug 2007
Location: Екатеринбург
Posts: 2,536
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 1921
Репутация в разделе: 793
0
Quote:
Originally Posted by usrg
чтобы отличать пустые значения от значений с 0
Вы в HTML используете текстовое поле. Это изначально текст. Вы пытаетесь работать с ним как с числом. В результате пустое значение интерпретируется как 0. Условие, которое вы написали, срабатывает, потому как переменная есть. Вот только intval от пустой строки - это 0. Вам нужно, как я уже писал выше, либо заменить в HTML элемент управления, либо проверять перед очисткой:
PHP Code:
if(empty($vbulletin->GPC['WantZero'])){
Тут ваш код...
}
@usrg
Эксперт
Join Date: May 2009
Posts: 982
Версия vB: 3.8.4
Reputation:
Expert 1420
Репутация в разделе: 161
0
Quote:
Originally Posted by Sellrion
Вы в HTML используете текстовое поле. Это изначально текст. Вы пытаетесь работать с ним как с числом. В результате пустое значение интерпретируется как 0.
Очень ценное замечание - вопрос решила замена проверки на сравнение со строкой
PHP Code:
if ($vbulletin->gpc["WantZero"] == '0')
P.S. Sellrion, кнопка "Спасибо" под вашими постами отсутствует, так что спасибкаю словами