Опять про "фонарные" ЧПУ

DIG

Новичок
Партнер клуба
Автор оригинала: tf
DIG, /news/15 ?
В чем вопрос? Чтото я не понял.

-~{}~ 14.11.07 08:30:

Автор оригинала: dark-demon
DIG, и как этой функции передать несколько параметров?
Да легко.
news/short/2007/11/14/

class news
{
function short($y,$m,$d){}
}


Ну если нужны подробности, почитайте документацию, если хотите могу конечно и примеры привести.
 

tf

крылья рулят
DIG, ты форумом своей тех поддержки непопутал?
 

dark-demon

d(^-^)b
а если параметров скажем десяток?
function short($a,$b,$c,$d,$e,$f,$g,$h,$i,$j){}

чтобы узнать какой параметр куда пойдёт - извольте считать до десяти. а если нужно какой-то параметр опустить?

наглядный пример - вывод товаров, соответствующих определённому набору из десятка фильтров.
 

DIG

Новичок
Партнер клуба
Автор оригинала: tf
DIG, ты форумом своей тех поддержки непопутал?
Что я попутал форумом? Я ваш вопрос не понял.
Какой моей тех. поддержки? Я ничего не поддерживаю.

-~{}~ 14.11.07 10:58:

Автор оригинала: dark-demon
а если параметров скажем десяток?
function short($a,$b,$c,$d,$e,$f,$g,$h,$i,$j){}

чтобы узнать какой параметр куда пойдёт - извольте считать до десяти. а если нужно какой-то параметр опустить?

наглядный пример - вывод товаров, соответствующих определённому набору из десятка фильтров.
Я далеко не гуру php, поэтому не хочу показывать сайт над которым работаю, тут засмеют. Там у меня не десять а восемь фильтров, и ничего, в урле не приходится вообще никаких параметров передавать, записать например в сессию 10-15 id я думаю не зазорно.
 

daevaorn

Новичок
Я далеко не гуру php, поэтому не хочу показывать сайт над которым работаю, тут засмеют. Там у меня не десять а восемь фильтров, и ничего, в урле не приходится вообще никаких параметров передавать, записать например в сессию 10-15 id я думаю не зазорно.
А закладку как сделать?
 

DIG

Новичок
Партнер клуба
Автор оригинала: daevaorn
А закладку как сделать?
Да, это проблема.
Сам мучаюсь.
Пока думаю для закладки формировать урл типа: www.xxx.ru/show/1/2/3/4/5/6/7/8/p1/p2/p3/
А пока несчастным пользователям приходится каждый раз 8 фильтров выбирать по-новой.
 

HraKK

Мудак
Команда форума
:)
псц)

Вот тебе наглядный пример несостоятельности твоего метода
 

DIG

Новичок
Партнер клуба
Автор оригинала: HraKK
:)
псц)

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

Еслиже это например новости или статьи, которые хранятся всегда - то всеравно урл будет class/function/param1/.../paramN
 

daevaorn

Новичок
Автор оригинала: DIG
Да, это проблема.
Сам мучаюсь.
Пока думаю для закладки формировать урл типа: www.xxx.ru/show/1/2/3/4/5/6/7/8/p1/p2/p3/
А пока несчастным пользователям приходится каждый раз 8 фильтров выбирать по-новой.
Мне кажется, что фильтры и прочие похижие параметры должны передоваться в GET query.
Автор оригинала: DIG
Ради красивых урлов приходится чемто жертвовать. В моем случае это не критично т.к. даже если выбрав все 8 фильтров пользователь создаст закладку - зайдя через 10 минут по этой закладке он увидит другую картину, т.к. владелец товара удалил его с витрины или перестал пользоваться нашим сервисом или малоли чего еще произошло с живой системой.
Вероятность что это произойдет за 10 минут не очень велика, да и все товары не уйдут. А клиента потерять очень просто.
Автор оригинала: DIG
Еслиже это например новости или статьи, которые хранятся всегда - то всеравно урл будет class/function/param1/.../paramN
Я предпочитаю для url mapping'a использовать регулярные выражения, тогда я не являюсь заложником структуры системы, т.к. чтобы достучаться для модуля новостей вовсе не обязательно в url иметь слово news.
 

HraKK

Мудак
Команда форума
daevaorn
И он может. Даже в таком виде. только вот зачем?
 

Nelius

кипарис во дворе
К вопросу о закладках...
У меня новости реализованны так:

www.site.ru/news/ - тут вы получите все новости скопом + календарик + форму для выборки новостей по параметрам
Сама же ссылка на новость выглядит так
www.site.ru/news/tsunami_smilo_ostrov_jonny_deppa.html

А если я делаю выборку я получаю
www.site.ru/news/?startdate=2334524352&enddate=43513453

Так вот во первых делать из этого ЧПУ мне какжется смысла мало, так как это "временная" ссылка мало кто ее будет добавлять в избранное, скорее добавят в избранное саму понравившуюся новость.
А если даже и делать я бы делал парсинг в 2 шага:

www.site.ru/news/12.07.2007/12.11.2007
первый регэксп получает: news + 12.07.2007/12.11.2007
передает управление в news а в news есть набор готовых правил идеальных для этого раздела.
 

HraKK

Мудак
Команда форума
www.site.ru/news/12.07.2007/12.11.2007
первый регэксп получает: news + 12.07.2007/12.11.2007
передает управление в news а в news есть набор готовых правил идеальных для этого раздела.
Я бы тока.
www.site.ru/news/date/12.07.2007/14.08.2007/
так логичнее. да и при таком подходе я могу указать
www.site.ru/news/date/12.07.2007/
и мне вернется новости ОТ этой даты.

тока науйх тут регулярки?
 

Nelius

кипарис во дворе
Автор оригинала: HraKK
Я бы тока.
www.site.ru/news/date/12.07.2007/14.08.2007/
так логичнее. да и при таком подходе я могу указать
www.site.ru/news/date/12.07.2007/
и мне вернется новости ОТ этой даты.

тока науйх тут регулярки?
Согласен побойдет банальный explode который я собстно и юзаю...

-~{}~ 14.11.07 18:49:

для проверки формата.
Так делать нельзя. ИМХО.
Все входящие данные должны соответствующим образом обрабатываться, от этого зависит безопасность вашего проекта.
 

daevaorn

Новичок
Автор оригинала: Nelius
Так делать нельзя. ИМХО.
Все входящие данные должны соответствующим образом обрабатываться, от этого зависит безопасность вашего проекта.
Ну так для того и сдалано. Я в рег.выражении указываю, что мне нужно(нужный формат). Если прошла проверка, то дальше обработка(выемка переменных(сам парсер мне их выдает) и проверка их на легитимность, ), нет -отдаем 404.
 

HraKK

Мудак
Команда форума
daevaorn
explode+строковые функции дадут вам тот же результат меньшей кровью.
 

daevaorn

Новичок
Автор оригинала: HraKK
daevaorn
explode+строковые функции дадут вам тот же результат меньшей кровью.
Щаз. Сколько кода вам понадобиться, чтобы реализовать вот такой паттерн и вытянуть из него 5 именнованных параметров?
Код:
"^/blog/(?P<username>[\w-_]+)/archive/(?P<year_id>\d{4})/(?P<month_id>\d{1,2})/(?P<day_id>\d{1,2})/(?P<post_slug>[\w_-]+)/$"
Мне с рег. выражениями - 1 короткая строчка.
 
Сверху