regi
Новичок
Организация базы, скрипта и mod_rewrite
Не знал как точно тему назвать
Проблема у меня такая:
Использую алгоритм nested sets для удобства юзаю класс phpDBTree. Понадобилось сделать красивые урл вида /news/computer/php/. До этого всегда пользовал урл вида /news/3/1/ то есть передавал идентификатор разделов.
Для реализации сего дела добавил в таблицу категорий одно поле rewrite. Получилось вот столько полей:
cid ctitle cleft cright clevel rewrite.
В поле rewrite я, естественно, храню урл соответствие данного раздела то есть:
0 Главная - - - /
1 Новости - - - news
2 PHP - - - php
3 Софт - - - soft
4 Железо - - - hard
Но проблема возникла при обработке ссылки.
mod_rewrite все посылает на index.php:
RewriteRule ^(.*)$ index.php?url=$1
Делаю, допустим, так:
$what_to_select = array_pop(explode("/", $_GET['url']));
$q = "SELECT * FROM catalog WHERE rewrite='".mysql_real_escape_string($what_to_select)."' ";
$r = ....
затем определяю родителей данного cid и строю навигацию, тайтл и т.п. вещи.
Все вроде работает, но возникает проблема, что если ввести в строку запроса /news/php/news/php/ то все будет работать, а по идее не должно
в какую сторону тут думать? Правила для
mod_rewrite или во время определения родителей элемента считать clevel и сравнить его с count(explode("/", $_GET['url'])) ? Последнее мне кажется наиболее правильным, может есть еще какие-то варианты или вообще нужно изменить всю структуру?
Не знал как точно тему назвать

Проблема у меня такая:
Использую алгоритм nested sets для удобства юзаю класс phpDBTree. Понадобилось сделать красивые урл вида /news/computer/php/. До этого всегда пользовал урл вида /news/3/1/ то есть передавал идентификатор разделов.
Для реализации сего дела добавил в таблицу категорий одно поле rewrite. Получилось вот столько полей:
cid ctitle cleft cright clevel rewrite.
В поле rewrite я, естественно, храню урл соответствие данного раздела то есть:
0 Главная - - - /
1 Новости - - - news
2 PHP - - - php
3 Софт - - - soft
4 Железо - - - hard
Но проблема возникла при обработке ссылки.
mod_rewrite все посылает на index.php:
RewriteRule ^(.*)$ index.php?url=$1
Делаю, допустим, так:
$what_to_select = array_pop(explode("/", $_GET['url']));
$q = "SELECT * FROM catalog WHERE rewrite='".mysql_real_escape_string($what_to_select)."' ";
$r = ....
затем определяю родителей данного cid и строю навигацию, тайтл и т.п. вещи.
Все вроде работает, но возникает проблема, что если ввести в строку запроса /news/php/news/php/ то все будет работать, а по идее не должно
в какую сторону тут думать? Правила для mod_rewrite или во время определения родителей элемента считать clevel и сравнить его с count(explode("/", $_GET['url'])) ? Последнее мне кажется наиболее правильным, может есть еще какие-то варианты или вообще нужно изменить всю структуру?
