Modrewrite или настоящие ЧПУ
урл на сайте составляются про принципу
http://site.com/index.php?id_language=1&id_page=3 - страничка например на ней список машины разных марок грузится из базы, в базе записано что id_page=3 будет грузить шаблон для вывода списка авто и категория авто category=10. id_page=3 определяет тип страницы и конретно что выбирать из этого типа, напрмер какую категорию авто
но у меня ещё сделано что о каждом авто я могу получить продобную информацию по ссылке вида http://site.com/index.php?id_language=1&id_page=3&show=descr_car&id_car=23
вот какое правило можно описать для последнего урл
RewriteRule ^([0-1])/([0-9])/([A-Za-z])])/([0-9])$ index.php?id_language=$1&id_page=$2&show=$3&id_car=$4
id_page - дерево... каждый id_page знает своего родителя, как реализовать стуктуру урл например http://site.com/rus/red/small/cool/zaz где rus - id_language - 1, а путь red/small/cool/ это ветка до cool - id_page=3, zaz - id_car=23 :) я конечно могу сократить и упростить... небудет пути до выбранного id_page, http://site.com/rus/cool/zaz/ но хочется именно чтобы посетитель видел где он находится по каталогам и стирая их в урл... выходил на родительску страницу
Глобальный вопрос :) вложеность конечно же неограниченая и как определить что zaz это вызов шаблона с описанием машины заз, а не раздел сайта... или надо обязательно после cool ставить мою переменую show=descr_car - http://site.com/rus/red/small/cool/show_car/zaz
а урл всё равно получается http://site.com/index.php?id_language=1&id_page=3&show=descr_car&id_car=23
Ещё один вопросик, если я хочу сделать имена этих псевдо папок человеческими занчет на кажду запись в таблице мне надо будет писать индекс по которому я буду выбирать запись из таблицы? Например таблица машин id_car=2 car_name="ЗАЗ машина" url_index="zaz" я выбираю уже не по WHERE id_car=2, а по url_index='zaz'? Правельно я понимаю, тоесть для каждой записи я должен определять index - человекопонятный и уникальный :) впрос делать эту в ручну или автоматом при записи в базу не стоит
Жду любых советов и отзывов :) Спасибо
Получается что для каждой записи в таблице БД мне надо создать человеко-понятный индекс? и выбирать я буду уже например по ... WHERE cars.url_key='bmw' , а не WHERE cars.id_car=3 именно так это и реализуется? Просто нехочется изобретать велосипед, чтобы потом не стало это боком...
Ну мне кажеться что всё-таки лучше описывать правила в .htaccess, так как пропадает необходимость дёргать регулярные выражения средствами php - это сделает апач
Можно и так, но не совсем безопасно (подпихнуть в урл всё что угодно можно будет). Как вариант можно брать какой-нибудь хеш от урла, но тогда возникает проблема уникальности урлов.
З.Ы. Смотри как в других cms реализовано.
Я как говорится не спец - немного отмазываюсь... проблему подпихивания урл краем уха понимаю... получается что человек сможет просто вмешаться в мой sql запрос... но разве варианта if (preg_match("/[^(\w)|(\x7F-\xFF)|(\s)]/", $var)) $var = ""; не хватит? кроме сплошного текста без спец символов человек не сможет подствить... я наверное не знаю всех тонкостей... Врятли мне придётся проверять сотни переменных... :eek:
Единственный обработчик позволяет делать гораздо более гибкую обработку, чем простой подбор регулярок.
Так же он позволяет централизованно выполнять базовые действия — инициализацию, подключение нужных файлов, авторизацию, проверку привилегий, обертывание в шаблон и т.п. Конкретному экшену останется только заниматься своими непосредственными делами не делая каждый раз общую рутину.
Хотя в каждом конкретном случае нужно выбирать то что лучше для него :)
Так же он позволяет централизованно выполнять базовые действия — инициализацию, подключение нужных файлов, авторизацию, проверку привилегий, обертывание в шаблон и т.п. Конкретному экшену останется только заниматься своими непосредственными делами не делая каждый раз общую рутину.
Хотя в каждом конкретном случае нужно выбирать то что лучше для него :)
что-то Zend Framework'ом в твоих словах отдаёт :) Ведь там реализовано точно так как говоришь.;)
погугли с фразами 'sql иньекция', 'XSS атака' - найдёшь что почитать
Выше мне советовали посмотреть примеры уже готовых решений... Подскажите где можно посмотреть код cms в которой реализованы чпу, только не такие чпу /category64/car45/ а именно человеческие имена /redcars/bmw/ ну или там заголовок новости пишется типа news/novostj_o_viborah.html типа того :)