rubodon

Рейтинг
16
Регистрация
25.08.2012

siv1987, а как же быть? Не использовать мод рерайт я не могу, а с ним, получается не могу проверить, есть ли точки в конце урла или нет? Или все-таки как-то можно это проверить, несмотря на мод рерайт?

Так вся соль в том, что страница 1-vasya.pupkin-p1 открывается и по запросу 1-vasya.pupkin-p1 и по запросу 1-vasya.pupkin-p1. и по запросу 1-vasya.pupkin-p1..................... А мне надо чтобы эта страница открывалась только по запросу 1-vasya.pupkin-p1

Даже можно и проще сделать. Написал в htaccess вот что:

RewriteEngine on

RewriteRule ^([a-z]+)$ ?t=$1

Ввожу в адресную строку localhost/test/aa...

Скрипт выводит aa ( Опять же без точек!!!)

Ввожу в адресную строку localhost/test/?t=aa...

Скрипт выводит aa... Как положено, с точками!

Так как тогда проверить что ввел пользователь? Или это не реально? Не верю!

Нет, в htaccess не обязательно.

Извините, не понял if (последний_символ($_GET['youVar']) == '.')?

И, кстати, если вводить localhost/test/1-vasya.pupkin-p1... а не localhost/test/?t=1-vasya.pupkin-p1... , то в $_GET['t'] нет последних точек, поэтому вот это: if (последний_символ($_GET['youVar']) == '.') походу дела не сработает.

Милованов Ю.С, да, тему поднимал, но решил переформулировать вопрос, поэтому создал новую. Я бы хотел, чтобы если в конце запроса точки, то отдавалась 404. Но я не понимаю, почему правило не реагирует на точки, которые написаны в конце гет-запроса.

Я не понимаю вот чего:

Ввожу в адресную строку

?article=123-vasya.pupkin-p123-

делаю так: echo $_GET['article'];

Выводит: 123-vasya.pupkin-p123-

Ввожу в адресную строку

?article=123-vasya.pupkin-p123...

делаю так: echo $_GET['article'];

Выводит: 123-vasya.pupkin-p123 (Без точек)

Не знаете почему?

Chukcha, [L] стоит.

И это работает?

Сам сейчас удивляюсь как я такое написал, и самое главное, что работает.

Вот так написал

^dir/([a-zA-Z-]+)/([0-9-]+-[\.a-zA-Z0-9-]+-p[0-9]+)$

Не помогло. Опять же точки в конце пропускает.

Милованов Ю.С, спасибо за совет, но не помогло.

foxi, у меня еще есть проверка внутри скрипта.


$id=mysql_real_escape_string($_GET['article']);
$q="SELECT * FROM articles WHERE id='$id'";
$a=mysql_fetch_array(mysql_query($q));
$article=$a['id'].'-'.strtolower($a['name']).'-p'.$a['num'];
if($article==$_GET['article']){...}else echo '404';

И самое интересное, что если ввести, например,

dir/category/123---article...name---p123

то откроется 404, но если ввести

dir/category/123-article.name-p123.....(или одну точку в конце)

то страница

dir/category/123-article.name-p123

открывается без ошибок.

Как это предотвратить?

P.S. Кстати $_GET['article'] почему-то отбрасывает последние точки. И еще, если поставить в конце какой-нибудь другой символ вместо точки, то откроется 404.

siv1987, к сожалению, не помогло.

Всего: 66