Изменить ссылки на ЧПУ. Правильно ли делаю?

Oleg Telegin

Новичок
Здравствуйте.
Написал с нуля каталог товаров. Каждый товар относится к определенной категории. Меню с ссылками на товары:

мой сайт/index.php?category=14

Ссылка на определенный товар

мой сайт/index.php?page=mat-info&id=96

Прочитав за ЧПУ, чтобы уйти от всяких параметров типа ?page=mat-info&id=96 сделал следующим образом. В таблицу категорий добавил поле kat-url, в которое использовав функцию транслита в таблицу категорий занес название категорий (например: kategorija-kraska-alkidnaja и т.п.) и в таблицу товаров добавил поле mat-url занес названия товаров (например: emal-pf115-belaja, emal-pf266-dlja-pola и т.п.).
Далее на странице в меню со ссылками на товары делаю такие:

мой сайт/category/kategorija-kraska-alkidnaja

Ссылки на страницу товара делаю вида:

мой сайт/product/emal-pf115-belaja
мой сайт/product/emal-pf266-dlja-pola

Затем в файле .htaccess сделал всю переадресацию на index.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

И теперь в файле index.php "распарсиваю" $_SERVER['REQUEST_URI'] . Получаю два параметра: для вывода товаров в категории ( мой сайт/category/kategorija-kraska-alkidnaja ) первый параметр category, второй параметр kategorija-kraska-alkidnaja и соответственно запрос в базу делаю не по id категории, а по добавленному полю kat-url (в данном случае kat-url = kategorija-kraska-alkidnaja).
Если нужна страница товара (мой сайт/product/emal-pf115-belaja) первый параметр получаю product, и второй параметр emal-pf115-belaja и запрос в базу идет по второму параметру mat-url = emal-pf115-belaja.
Предположим, что названия товаров и категорий в транслите изменятся не будут.
ВОПРОС: я вообще правильно все это делаю???
 

С.

Продвинутый новичок
Не корректен вопрос правильно или нет. Если работает, значит правильно. И так тоже можно.

Вопрос в эффективности. Посмотри например как сделано на этом форуме. Это позволяет не делать запроса к базе и вообще освобождает от необходимости иметь эту таблицу перекодировки.
 

hell0w0rd

Продвинутый новичок
Не корректен вопрос правильно или нет. Если работает, значит правильно. И так тоже можно.
Крутой подход;)

Вопрос ТС: у вас первый параметр влияет на выбор таблицы? В общем вы тупо отправляете запрос в базу в зависимости от того что в первом параметре, или нет?
 

Oleg Telegin

Новичок
Вопрос ТС: у вас первый параметр влияет на выбор таблицы? В общем вы тупо отправляете запрос в базу в зависимости от того что в первом параметре, или нет?
.
Вопрос по поводу проверки что пришло в этих параметрах и запрос в базу? Что бы не получилось SQL-инъекции? Или что имеется ввиду?
 

hell0w0rd

Продвинутый новичок
.
Вопрос по поводу проверки что пришло в этих параметрах и запрос в базу? Что бы не получилось SQL-инъекции? Или что имеется ввиду?
имею ввиду у вас будет запрос mysite/users/admin - не пойдет в базу ли запрос?
 

Oleg Telegin

Новичок
По первому параметру, т.е. например product буду подключать блок для вывода описания товара, а по второму параметру делаю уже запрос в базу
SELECT * FROM mat WHERE mat-url = $par2
 

Василий М.

Новичок
ну все правильно. только индекс повесь на поле kat-url и mat-url

и почитай ещё это - http://www.phpinfo.su/articles/theory/sovershennyj_kod_gramotnost.html

твои дурацкие сокращения kat и mat ужасают.
пиши нормально имена полей (и переменных), например category_url
и английский выучишь так, и код яснее и понятнее будет
 
Сверху