Вот думаю так, проверять то что прислали в запросе, но если ошибка явно из-за того что подменены данные в форме(скрытие поля) или в строке браузера подменили ссылку (если метод get) то не париться и не выдавать подробный отсчет об ошибке, ведь у простого юзера такая ситуация сложится не могла. Как думаете?
должно быть дефолтное действие на такую ситуацию. нпример если тебе подсунули page=-1 или page=' То page в таом варианте присваиваить 1 $page = (int) GetFromRequest('page'); if(empty($page)) $page = 1; я вот так делаю $page = GetVars:age('page',1); где в методе все обрабатывается ну и так далее... по сути твой скрипт должен всегда правлиьо отработать вне звисимости что ему подсунули и сообщений об ошибках быть В ПРИНЦИПЕ НЕ ДОЛЖНО. на крайная на момент отладки, но тогда ты сам гарантировано подсунешь не верные данные и все это можно реализовать единым методом класса. т.е. править в 1 месте
Ruzzz старик, я смотрю ты и на phpclub пишешь. ты уж определись где ты? http://phpclub.ru/talk/showthread.php?s ... post780234 ты думаешь что там тебе по другому ответят?
Я больше тут, вопросы дублирую, потому как хочу большую аудиторию профи затронуть. Но слова "старик, ... ты уж определись где ты?" заставили себя предателем почувствовать! Странно, что в этом плохого. Я нашел ваш форум и "приписался" здесь, но изучаю и тот форум. За ваши ответы искренне спасибо! этот кусок кода: Код (Text): $page = (int) GetFromRequest('page'); if(empty($page)) $page = 1; Аж понравился Вот в своем, который писал с нуля, в процессе "вечного усовершенствования" прихожу примерно к такому виду. Учусь )
ну мы там и тут и еще на нескольких форумах, так что разницы особой для тебя не будет. но пиши конечно. дело твое.
Значит для себя уяснил следующее: - сообщение об ошибках давать если они нужны как подсказки для пользователя, при вводе данных(например этот логин занят) - не давать ошибки, так как они покажут логику работы скрипта - иметь на все случаи значения по умолчанию - помнить, что просто так простой пользователь не будет менять строку Get запроса и тем более изменять данные в Post запросе
Да я тоже решил что-то подобное делать ) и еще сделал заметку, в будушем подумать о выявлении таких ситуаций и их протоколировании - возможно как-то будет помогать. Я еще не знаю, но на всякий пожарный заметку сделал )
Это плохой вариант, ИМХО. "Хакер" НЕ должен видеть какие-то ошибки. Я придерживаюсь варианта, который уже предложил 440Hz. Т.е фильтровать все данные. Если $page = -1, к примеру, присвоить ей значение равное 1 (единице). Конструкцию die хорошо использовать только во время дебаггинга и в SQL запросах. Ну и при header:location надо использовать exit.
Придерживаюсь противоположного мнения, более того сервер при подсовывании в адрес id=-1 вместо того чтоб выдавать первую страницу должен вернуть либо 404 либо вовсе что по страшнее. (зачем сайту две одинаковые страницы по двум адресам, когда на сайте упоминается лишь один адрес ?) Глупейшее решение, поисковики и будут индексировать ваши страницы с фразами "Не надо нас ломать" и думать что это у вас контент такой... Я придерживаюсь философии что если значение числовое то надо делать так PHP: <?php // (для unsigned) if (!is_numeric($_GET['id']) || $_GET['id'] < 1) { header('тра-ля-ля 404 .и.т.д.'); exit; } // А уже потом в запрос безбоязненно вставлять $_GET['id'] ?> PS Updated
+1, только не 404, а какую-нибудь рандомную из 404, 403, 500 и тд. Пусть ипётся и думает что происходит после каждого варианта скулки =).
приложение должно реагировать адэкватно. запросил отрицательную страницу - получи 404 со сообщением о недопустимости отрицательных номеров страниц. думать нужно только о пользователе. хакер - тоже пользователь. он помогает вам найти уязвимости в вашей системе.
Из контекста мои слова не надо выдирать. Я die() ставлю на те места, на которые поисковик никогда в жизни не придёт.
Если я не правильно понял то поясни где именно я ошибся и я исправлюсь, пока ни я ни другие ответившие не заметили никаких "нестыковок"
А вот я сейчас дам ссылку на ваше сообщение http://php.ru/forum/viewtopic.php?p=86sajdhkashjd487 и подменю запрост GET а яндекс "склеит" эту ссылку со ссылкой на http://php.ru/forum/viewtopic.php?p=86 и будет думать что обе они правильные
Vladson Ну и что? Тут стоит небольшое отклонение - если сайту нужна оптимизация (на первом месте) и поднятие вверх по поисковым запросам поисковых ботов - тогда да, твой вариант предпочительнее, генерировать при неправильном запросе страницу с ошибкой. Если же сайту на это наплевать - то лучше отдавать страницу как есть. Т.е принять какое-то дефолтное действие. $page = (int) $_GET['page']; if ($page < 1 || strlen ($page) > $allowed_pages) $page = 1; Как-то так