L-S1mk@ Опубликовано 6 Сентября 2007 Жалоба Поделиться Опубликовано 6 Сентября 2007 Приветствую. Иметься небольшая проблема с php программированием. Дело в том, что я хочу сделать так, что если в Url адресе встречается запрещённое слово, то выдается ошибка. Например, при переходе на адрес вида: index.php?catalog=1&code=slovo всё будет открываться.А если кто-то переедет по адресу index.php?catalog=1&code=slovo1 то ему выдастся ошибка, и скрипт не выполниться дальше. Вот я написал код: $slova = array("slovo1","slovo2",); if ($_REQUEST == $slova) { print "Доступ в закрытый раздел невозможен"; exit(); } Но он не работает. Его суть – если в запросе встречаются слова: slovo1 или slovo2 то выполнение скрипта прекращается, и выдается ошибка. Я новичок в программировании, поэтому наверно что-то не доделал. Кто-нибудь может помочь, и сделать, чтобы он заработал, как надо? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-gorn- Опубликовано 6 Сентября 2007 Жалоба Поделиться Опубликовано 6 Сентября 2007 Ну как нибудь так.$slova = array('word1', 'word2'); foreach($slova as $slovo) { if(strpos($_SERVER['REQUEST_URI'], $slovo)) { die('Доступ в закрытый раздел невозможен'); } }Только этот код фильтрует весь запрос, включая папки и т.д.Если тебе надо фильтровать только значение передаваемое в code, то код будет немного другой. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 6 Сентября 2007 Жалоба Поделиться Опубликовано 6 Сентября 2007 $slova = array('word1', 'word2');foreach($slova as $slovo){ if( strpos($_SERVER['REQUEST_URI'], $slovo) !== false ) { die('Доступ в закрытый раздел невозможен'); }} Конечно понятно, что в начале адреса скорее всего будет http://www. и т.д., но вдруг это должно быть "запретным" словом. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 Дык если запрещаемое слово находится только в параметре code то зачем strpos? Вот так не катит что ли: if ( $_GET['code'] == 'слово' ) { die('Доступ в закрытый раздел невозможен'); } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
-gorn- Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 $slova = array('word1', 'word2');foreach($slova as $slovo){ if( strpos($_SERVER['REQUEST_URI'], $slovo) !== false ) { die('Доступ в закрытый раздел невозможен'); }} Конечно понятно, что в начале адреса скорее всего будет http://www. и т.д., но вдруг это должно быть "запретным" словом.Если я правильно помню, то в REQUEST_URI не попадает домен. То есть например при запросе http://site.ru/forum/index.php в REQUEST_URI будет тольк о /forum/index.php Дык если запрещаемое слово находится только в параметре code то зачем strpos? Вот так не катит что ли: if ( $_GET['code'] == 'слово' ) { die('Доступ в закрытый раздел невозможен'); }Ему вроду не только в code надо фильтровать..Дело в том, что я хочу сделать так, что если в Url адресе встречается запрещённое слово, то выдается ошибка. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 По крайней мере приводит пример он именно так:Например, при переходе на адрес вида: index.php?catalog=1&code=slovo всё будет открываться.А если кто-то переедет по адресу index.php?catalog=1&code=slovo1 то ему выдастся ошибка, и скрипт не выполниться дальше.Слово указано после code в обоих случаях. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 7 Сентября 2007 Жалоба Поделиться Опубликовано 7 Сентября 2007 Если я правильно помню, то в REQUEST_URI не попадает домен. То есть например при запросе http://site.ru/forum/index.php в REQUEST_URI будет тольк о /forum/index.phpТогда тем более по моему варианту, вдруг у него запретное слово скажем /f ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
L-S1mk@ Опубликовано 8 Сентября 2007 Автор Жалоба Поделиться Опубликовано 8 Сентября 2007 Спасибо! Способы работают. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.