скрипт PHP обрезающий динамические параметры в статическом урле

12
SF
На сайте с 11.10.2005
Offline
137
1393

тут возникла задача написать скрипт который бы обрезал несуществующие(вымышленные) динамические параметры, типа- ?id , если бы пользователь захотел обратиться к странице подставив вымышленный параметр.

Работает скрипт только если на вашем сайте статические адреса без параметров.

Скрипт написан по мотивам скрипта известного пользователя этого форума - malls

Так как я в регулярных выражениях не очень разбираюсь то получился он не очень красивым, но рабочеспособным.

<? if($_SERVER["QUERY_STRING"]<>'')

{//если передан запрос, то попробуем его уничтожить
$ru=$_SERVER["REQUEST_URI"]; //получаем урл
$qs='?'.$_SERVER["QUERY_STRING"]; //получаем запрос
$right_uri = str_replace($qs,"",$ru); //из урла удаляем запрос
header("Location: $right_uri"); //редиректим на урл без запроса
} ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

или другой вариант скрипта, при вводе любого запроса в адресе - сервер отвечает что страница не существует, отдается ошибка 404

<? if($_SERVER["QUERY_STRING"]<>'')

{//если передан запрос, то отвечаем что такой страницы не существует
header('HTTP/1.0 404 Not found'); exit; //отдаем заголовок что страницы не существует
} ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Ну и напоминаю что php коды которые отдают заголовок header и редиректят на другую страницу должны ставиться в самом верху страницы, перед <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Инструкция: Как Правильно Делать Сайты: Домен, Хостинг, Установка CMS (http://www.3sd.ru/kak-delat-site/index.php).
I
На сайте с 04.11.2007
Offline
20
#1

а смысл все равно лишние пераметры будут игнорироваться скриптом даже без такой конструкции

Я покупаю хостинг и VDSки здесь (http://sweb.ru/p14170)
SF
На сайте с 11.10.2005
Offline
137
#2
irbiss:
а смысл

- Смыслов может быть много, один из смыслов в теме

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#3

проблема в том, что обрезаются не лишние, а все параметры

кстати как вам мой метод удаления гет-запроса?

$uri=$_SERVER['REQUEST_URI'];

$uri=parse_url($uri);

$uri=$uri['path'];

а для удаления "вымышленных" нужно собирать урл в ручную из используемых в скрипте переменных, ведь та же проблема возникает не только при появления лишних параметров, а даже при перемешивании нужных!

W
На сайте с 19.06.2006
Offline
142
#4

irbiss, видимо, SellingFeis так укоротил урлы. Только нафига - непонятно...

// Удалено. Ибо уже ответили )

Zlo_606ep
На сайте с 14.12.2006
Offline
129
#5

Стоит отметить, что это будет очень даже хорошо работать если вы используете чпу

W
На сайте с 19.06.2006
Offline
142
#6

Zlo_606ep, как погодка в KZ? )

ЧПУ нужно реализовывать другими методами, имхо. В .htaccess - редирект на index.php, а там - парсить уже.

W
На сайте с 19.06.2006
Offline
142
#7
SellingFeis:

Ну и напоминаю что php коды которые отдают заголовок header и редиректят на другую страницу должны ставиться в самом верху страницы, перед <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

PHP не редиректят на другую страницу... Поправились бы 🙄

I
На сайте с 04.11.2007
Offline
20
#8
Zlo_606ep:
проблема в том, что обрезаются не лишние, а все параметры
кстати как вам мой метод удаления гет-запроса?
$uri=$_SERVER['REQUEST_URI'];
$uri=parse_url($uri);
$uri=$uri['path'];
а для удаления "вымышленных" нужно собирать урл в ручную из используемых в скрипте переменных, ведь та же проблема возникает не только при появления лишних параметров, а даже при перемешивании нужных!

а не прще ли через ЧПУ сразу обрубать лишнее еще до обработки скриптом

I
На сайте с 04.11.2007
Offline
20
#9
wayly:
PHP не редиректят на другую страницу... Поправились бы 🙄

почему не редиректят

header ("Location: ваш урл на который нужно перейти");
W
На сайте с 19.06.2006
Offline
142
#10

Потому, что отдают header. А как его отдавать - не важно. в ASP, Perl есть такие штуки. Это директива то-ли серверу, то-ли браузеру.. Не скажу точно. Но факт-фактом: php лишь отдает директиву, которая исполняется сторонними дата-провайдерами :)

Добавлено:

Все-таки браузеру :)


class js
{ ....
function redirect($to, $time)
{ echo '<script language="javascript">
function Redirect()
{ document.location.href = "'.$to.'"
}
setTimeout("Redirect()",'.$time.')
</script>';
}
}

И вот исчо

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий