mod_rewrite вопрос об изменении URL - PullRequest
0 голосов
/ 18 февраля 2010

Я наконец-то несколько изменил правило mod_rewrite, но хотел бы сделать с ним немного больше и не уверен, как это сделать. Вот что у меня сейчас есть:

RewriteRule ^rider/(.*)/(.*)*$ /bar/standings/rider.php?lnum=$1&short=$2

Что позволяет мне сделать это:

http://pca.localhost/rider/214142/sme 
instead of 
http://pca.localhost/bar/standings/rider.php?lnum=214142&short=sme

Это прекрасно работает, но я бы хотел усовершенствовать его, чтобы оно было:

http://pca.localhost/rider/fred/flinstone

Однако мне нужно передать переменную lnum, потому что это единственный истинный ключ id (то есть их может быть два человека в БД с именем fred flinstone). Короткая переменная не имеет большого значения. Моя цель - как-то передать только имя, не показывая переменную lnum. Есть ли способ сделать это? Могу ли я как-то скрыть переменную lnum при ее передаче? Или мне нужно сделать несколько работ php / mysql?

Любые советы, комментарии или предложения приветствуются.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2010

Единственный ключ, который вы получаете от клиента, когда он переходит на ваш сайт, это URL.Если URL-адрес не уникально идентифицирует страницу для просмотра, то вы должны либо показать какую-то страницу неоднозначности, либо отказаться от идеи.

0 голосов
/ 19 февраля 2010

Если вам необходимо получить идентификатор из БД, почему бы не использовать идентификатор сеанса в файле cookie?Или идентификатор сеанса в качестве параметра GET или POST (т. Е. Со скрытым полем формы).

В любом случае, выставлять идентификатор пользователя таким образом не очень безопасно.Используйте «случайный» идентификатор, такой как идентификатор сеанса, и свяжите его с идентификатором пользователя.

0 голосов
/ 19 февраля 2010

Вы можете попробовать сгенерировать уникальный идентификатор для пользователя во время регистрации и использовать его повсюду. Например, для Фреда Флинстоуна

уникальный идентификатор = Фред (если Фреда уже нет) уникальный идентификатор = Фред-Флинстоун (если Фред уже есть) уникальный идентификатор = fred-flinstone1 (если уже есть Фред Флинстоун)

Некоторая логика такого рода.

...