Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фильтр на переменные адресной строки
 
 автор: GлюК   (30.01.2006 в 15:23)   письмо автору
 
 

Как можео сделать фильтр адресной строки, чтоб пропускал только разрешённые переменные, а остальные блокировал?

   
 
 автор: cheops   (30.01.2006 в 15:28)   письмо автору
 
   для: GлюК   (30.01.2006 в 15:23)
 

Под разрешёнными символами что имеется ввиду?

   
 
 автор: GлюК   (30.01.2006 в 21:11)   письмо автору
 
   для: cheops   (30.01.2006 в 15:28)
 

Не символы, а переменные. Ну например я хочу, чтобы моя страница пропускала переменные razd и page из строки адреса. Как сделать чтобы прошли только они , а например если туда вписать, скажем, status, эту переменную просто не пропустило к моему скрипту.

   
 
 автор: cheops   (31.01.2006 в 02:51)   письмо автору
 
   для: GлюК   (30.01.2006 в 21:11)
 

Хм... а вы просто не используйте параметр status...

   
 
 автор: GлюК   (31.01.2006 в 16:08)   письмо автору
 
   для: cheops   (31.01.2006 в 02:51)
 

Вы меня наверно просто не поняли. Я имел ввиду, что кто-то в адресе (test.ru/index.php?status=admin) пропишет такую вещь и получит статус админа. Как можно сделать чтобы все переменные пришедшие из строки адреса стирались, кроме, допустим, "page" и "id".

   
 
 автор: TrunK   (31.01.2006 в 16:27)   письмо автору
 
   для: GлюК   (31.01.2006 в 16:08)
 

Хм... Странно как-то.
Как у вас реализованна авторизация?
можно просто сделать:

$status = "";

   
 
 автор: GлюК   (31.01.2006 в 17:47)   письмо автору
 
   для: TrunK   (31.01.2006 в 16:27)
 

Да авторизация то через сессию, тем более "status" это было для примера. В строке можно же любую переменную написать, это получается все, что у меня есть вначале надо приравнивать к пустоте... эт не рационально. Задам вопрос подругому: Как разделить всё что после "?" (test.ru/index.php?peremennaja=1&...) на имя идентификатора(peremennaja) и на значение(1), учитывая что их может быть сколько угодно?

   
 
 автор: m@rchello   (01.02.2006 в 16:02)   письмо автору
 
   для: GлюК   (31.01.2006 в 17:47)
 

вверх

   
 
 автор: Loki   (01.02.2006 в 16:13)   письмо автору
 
   для: GлюК   (31.01.2006 в 17:47)
 

используйте register_globals off, и никакие лишние переменные будут вам не страшны.

   
 
 автор: m@rchello   (02.02.2006 в 12:02)   письмо автору
 
   для: Loki   (01.02.2006 в 16:13)
 

Вы наверное неверно поняли! Нужно чтоб пропускались например переменные page и error а остальные попросту говоря стирались! Вот и нужно как то проверить адресную строкуна содержимое после знака вопроса и если встречаются эти переменные то оставить их а если какието посторонние то стереть эти посторонние переменные!

   
 
 автор: cheops   (02.02.2006 в 14:07)   письмо автору
 
   для: m@rchello   (02.02.2006 в 12:02)
 

Хм... ну можно пройтись в цикел по массиву $_GET и потереть неугодные переменные при помощи функции unset()...

   
 
 автор: m@rchello   (02.02.2006 в 15:33)   письмо автору
 
   для: cheops   (02.02.2006 в 14:07)
 

А можете на примере это показать??

   
 
 автор: Loki   (02.02.2006 в 16:30)   письмо автору
 
   для: m@rchello   (02.02.2006 в 15:33)
 

<?
foreach ($_GET as $KEY=>$VAL)
{
 if (
$key!=|| $key!=b|| ....) // a и b - названия разрешенных переменных
 
unset($_GET[$key]);
}
?>

   
 
 автор: GлюК   (02.02.2006 в 21:08)   письмо автору
 
   для: Loki   (02.02.2006 в 16:30)
 

Огромное пасибо!!!

   
 
 автор: Loki   (02.02.2006 в 21:24)   письмо автору
 
   для: GлюК   (02.02.2006 в 21:08)
 

только у меня ошибка в скрипте. должно быть:
if ($key!=a && $key!=b && ....)

   
 
 автор: GлюК   (03.02.2006 в 16:15)   письмо автору
 
   для: Loki   (02.02.2006 в 21:24)
 

Насчёт этого я сам понял, а вот unset почему-то у меня не работает. Я пробую её ниже вывести а она просто переменная остаётся.

   
 
 автор: Loki   (03.02.2006 в 16:40)   письмо автору
 
   для: GлюК   (03.02.2006 в 16:15)
 

а как вы задаете a и b?
их надо без доллара в начале и взять в кавычки. то есть просто как текст.

   
 
 автор: GлюК   (05.02.2006 в 22:48)   письмо автору
 
   для: Loki   (03.02.2006 в 16:40)
 

Я так и делаю! Но всё-равно не работает. Unset может быть как-то отключен или что-нибудь ещё???

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования