- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Столкнулся с такой проблемой. Мне надо сделать, чтобы если пользователь запросил site.ru/page/0 или site.ru/page/00000 (любое число нулей), ему бы возвращалась 404 ошибка. Но вот в чем проблема. 0 в гет запросе приравнивается к !$_GET, а на этот случай у меня выполняется другой код. Пробовал писать if($_GET['p']=='0'). Без толку. Но на том же хабре, это каким-то образом реализовано. Т.е. это возможно, но как?
Пожалуйста, помогите решить эту проблему, а то уже мозг сварился!
!$_GET, а на этот случай у меня выполняется другой код.
видимо, нужно случай переписать.
if($_GET['p']==='') сработает только для пустого $_GET['p'] (?p=)
Вообще, это довольно странно, потому что site.ru/page/ и site.ru/page/0 при нормальной реализации - это всегда разные страницы.
и $_GET['p'] == '0' должно корректно работать (кстати, причем тут GET, если вы разбираете адресную строку? )
Вероятно, ошибка где-то еще в логике.
Вкстати, причем тут GET, если вы разбираете адресную строку?
Почитайте про роуты, у ТС, видимо, они используются! (или ТС тупит, со всеми бывает)
---------- Добавлено 02.11.2012 в 00:30 ----------
rubodon, попробуйте так:
---------- Добавлено 02.11.2012 в 00:33 ----------
rubodon, если не работает, давайте сюда весь код
Если это проверка, на то, что параметр p не установлен, то надо не так проверять. А !isset($_GET['p']), и всё встанет на свои места. =)
А ошибка в том, что !$_GET['p'] при p==0 будет истинным... Соответственно при такой проверке, проверять потом p на равенство 0 нет смысла, вы уже пошли выполнять какой-то другой код условием выше.
Но вот в чем проблема. 0 в гет запросе приравнивается к !$_GET
Ну тут просто подучить php (конкретно - приведение типов)
Пробовал писать if($_GET['p']=='0').
Всем спасибо за ответы.
fa2m, if ((int) $_GET['p'] == 0) не помогло.
Код очень большой, у меня так проверяется несколько гетов в запросе, поэтому не стоит выкладывать.
Вообщем отложу решение проблемы до лучших времен.
Еще раз всем спасибо.
---------- Добавлено 02.11.2012 в 02:47 ----------
bay_ebook, сейчас попробую
удалил. неправильно понял задачу. сори.
Так чего откладывать-то? =) Чуть выше указано в чем ошибка.
Кстати, если вам нужно проверять произвольное кол-во нулей, более одного, то это делается с помощью регулярного выражения:
if ($p ==== '0') {
Что за новый оператор - ====? =)
И зачем вся эта конструкция, которая не поможет ничем топикстартеру?
У меня ни черта не работает )
Структура примерно такая:
if(get[p]==0) echo 'oshibka 404' // т.е. если есть гет[p] и он = 0 то 404
else {
if(!get[p]) echo 'glavnaya stranica'; // если в адресной строке вообще нет get[p], то грузим главную
}
А может у вас с rewrite что-то не так?
Попробуйте вывести для отладки print_r($_GET); и посмотрите, что там вообще содержится при том или ином запросе...
Вообще, конструкция должна быть примерно такой: