Тема: _GET и ЧПУ Расширенный поиск по форуму
 
Новая тема Новая тема   Ответить Ответить Перейти на страницу 1, 2  След.» 
Автор Сообщение
Информация о пользователе Sterx
http://all-fetish-links.com

Зарегистрирован: 08.12.02
Сообщения: 6246
Рейтинг: 4108

Ссылка на сообщениеДобавлено: 20/07/08 в 19:55      Ответить с цитатойцитата 

в общем урлы сайта имеют вид
site.com/category/subcategory/
в индексе REQUEST_URI разбирается и собирается страница
но вот как передать параметром непременно в адресной строке?
вид site.com/category/subcategory/?var=1 не работает
в $_GET пусто

K началу

Gay and Fetish Partnership Programs

 
Информация о пользователе xreload


Зарегистрирован: 19.11.03
Сообщения: 3748
Рейтинг: 2449

Ссылка на сообщениеДобавлено: 20/07/08 в 20:33      Ответить с цитатойцитата 

Ну да, поправь в правиле регу , чтобы получалось :
site.com/category/subcategory/var/1/

и тогда все у тебя будет.

K началу

Гербалайф и технологии 2009 года

 
Информация о пользователе Kitschy


Зарегистрирован: 19.03.07
Сообщения: 68
Рейтинг: 49

Ссылка на сообщениеДобавлено: 21/07/08 в 02:08      Ответить с цитатойцитата 

Может быть это?
$_SERVER["QUERY_STRING"]

K началу

Fetish ТОПЫ: BDSM, Bizarre, FemDom, Pissing и т.д.

 
Информация о пользователе Sterx
http://all-fetish-links.com

Зарегистрирован: 08.12.02
Сообщения: 6246
Рейтинг: 4108

Ссылка на сообщениеДобавлено: 21/07/08 в 07:25      Ответить с цитатойцитата 

передает только path=user/25/privates/add/
?var=1
игнорит
нужно сделать передачу переменных для поиска
то есть search/?q=key&q2=key2
так и придется парсить REQUEST_URI

K началу

Gay and Fetish Partnership Programs

 
Информация о пользователе Corex


Зарегистрирован: 17.03.07
Сообщения: 371
Рейтинг: 1011

Ссылка на сообщениеДобавлено: 21/07/08 в 08:02      Ответить с цитатойцитата 

Sterx:
Если не передаются параметры, то в правилах mod_rewrite это не описано. Покажи код, так проще понять и сделать будет.

K началу

Power of the lime madness...

 
Информация о пользователе Stek
www.phpdevs.com

Зарегистрирован: 24.10.02
Сообщения: 8307
Рейтинг: 7807


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 21/07/08 в 10:34      Ответить с цитатойцитата 

бери REQUEST_URI переменную и парси самостоятельно в начале скрипта. Иначе в mod_rewrite только правила описывать

K началу

Обещали $$$ а насчитали ХХХ? Лей траф на SearchAnyway. Точно как в аптеке.

 
Информация о пользователе _s_[sov] +
php кодер

Зарегистрирован: 09.10.06
Сообщения: 1099
Рейтинг: 803

Ссылка на сообщениеДобавлено: 21/07/08 в 12:12      Ответить с цитатойцитата 

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

K началу

Мой Блог

 
Информация о пользователе Sha


Зарегистрирован: 11.06.03
Сообщения: 870
Рейтинг: 765


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 21/07/08 в 15:35      Ответить с цитатойцитата 

В .htaccess какое правило ?
Можно в RewruteRule в конец добавить [QSA] , но это потенциальная дырка в безопасности.

K началу

 
Информация о пользователе Sterx
http://all-fetish-links.com

Зарегистрирован: 08.12.02
Сообщения: 6246
Рейтинг: 4108

Ссылка на сообщениеДобавлено: 21/07/08 в 16:17      Ответить с цитатойцитата 

не хочу трогать htaccess
буду распарсивать

K началу

Gay and Fetish Partnership Programs

 
Информация о пользователе CJLOG


Зарегистрирован: 03.05.07
Сообщения: 716
Рейтинг: 824

Ссылка на сообщениеДобавлено: 21/07/08 в 18:42      Ответить с цитатойцитата 

Я смотрю ты здесь очень часто задаёшь вопросы. Ты таким образом учишь язык, или же у тебя какой-то (судя по кол-ву вопросов большой) проект, который ты пишешь, но постоянно сталкиваешься с трудностями в релизации тех или иных вещей? Просто если второе (я сам так учил php), то могу предостечерь от ошибок, посоветовав, как сразу начать грамотно писать. А в наше время писать грамотно - это заморачиваться с кодом по минимуму, возлогая всё на доп. библиотеки - фреймворки, в которых уже всё продуманно за тебя.

Мне показалось, что ты пишешь что-то типа движка блога или чего-то подобного, где применяется много разных технологий и методов. Если так, то погляди возможности того же Zend Framework (http://framework.zend.com) С помощью него ты сможешь сделать в принципе любое приложение, т.к. там уже давно сделан мощный шаблонизатор и реализованны методы работы с юзерами, с базой данных, с обработкой форм, с сессиями, работа с конфигом, с поиском, с rss и фидами, система сообщений и емейлов, логи, дебаг, многоязычность и т.п. Всего не перечислить.

Вот то что ты щас спрашиваешь (про ЧПУ), делается через класс Zend Controller. Вот пример http://framework.zend.com/manual/ru/zend.controller.router.html

Zend Framework больше для профи, там сложная архитектура - т.е. этот фреймворк нужно изучать на равне с php icon_smile.gif Есть так же супер-фреймворк как раз для новичков или для ленивых icon_smile.gif Называется CakePHP (http://www.cakephp.org/) Просто глянь сюда http://manual.cakephp.org/view/219/blog - на этой странице размещён код примитивного блога. Там кстати тоже сделан ЧПУ.

Это как JQuery для JavaScript - тоже, пересев на него ты уже никогда не захочешь соскочить на написание килобайтов кода, которые в JQuery делаются парой строк.

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

K началу

Уарабей!

 
Информация о пользователе Sterx
http://all-fetish-links.com

Зарегистрирован: 08.12.02
Сообщения: 6246
Рейтинг: 4108

Ссылка на сообщениеДобавлено: 21/07/08 в 18:47      Ответить с цитатойцитата 

да согласен.
но это скорее переписывание текущего проекта
перетаскивать на фреймворк нет времени тупо, да и библиотеки уже написаны все, просто фишки дописываю , да натягиваю новый дизайн
а пишу я здесь, потому что помогают быстро icon_smile.gif

K началу

Gay and Fetish Partnership Programs

 
Информация о пользователе CJLOG


Зарегистрирован: 03.05.07
Сообщения: 716
Рейтинг: 824

Ссылка на сообщениеДобавлено: 21/07/08 в 19:06      Ответить с цитатойцитата 

Тогда попробую ответить по существу icon_smile.gif

На самом деле, немного неясно, что ты хочешь. Если у тебя урл вида site.com/category/subcategory/?var1=1&var2=2&var3=3, то что у тебя делает скрипт и что делает mod_rewrite? т.е. в каком виде подобная строка передаётся скрипту и что надо вытащить из этой строки?

На всякий случай приведу пример, как делать простой ЧПУ. Если у тебя урл типа domain.com/var1/var2/var3 (т.е. чётко заданный порядок переменных), то решение:

Адрес вида domain.com/1/2/3

Код:

list($var1,var2,var3)=explode("/",$_SERVER["QUERY_STRING"]);

Таким образом, в $var1 будет 1, в $var2 будет 2 и т.п.

Так же ты можешь передавать в адресной строке ещё и переменные (если урл формируется динамически и какие-то переменные надо опустить):

Адрес вида domain.com/var1_1/var2_2/var3_3 (знак "_" можно заменить на что угодно, надо только поправить второй explode)
Код:

foreach (explode("/",$_SERVER["QUERY_STRING"]) as $val)
{
list($l,$r)=explode("_",$val);
$tmp[$l]=$r;
}
extract($tmp);

Таким образом у тебя, опять же, $var1 будет 1, в $var2 будет 2 и т.п. ;) Но это я описал скорее как бонус. Вдруг кому пригодится. Главное передавать правильно параметры. Т.е. если скипт называется index.php, то mod_rewrite должен делаеть такое перенаправление: index.php?var1_1/var2_2/var3_3

Хз, может это как-то поможет, т.к. я не совсем понял суть проблемы

K началу

Уарабей!

 
Информация о пользователе Sha


Зарегистрирован: 11.06.03
Сообщения: 870
Рейтинг: 765


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 21/07/08 в 21:32      Ответить с цитатойцитата 

Из второго примера жить будет четь лучьше если
explode('_',$val) заменить на explode('_',$val,2)

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

K началу

 
Информация о пользователе Stek
www.phpdevs.com

Зарегистрирован: 24.10.02
Сообщения: 8307
Рейтинг: 7807


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 21/07/08 в 21:57      Ответить с цитатойцитата 

нафига вы вообще мутите с explode, когда можно использовать parse_str функцию, специально предназначенную для вытягивания параметров в массив.

K началу

Обещали $$$ а насчитали ХХХ? Лей траф на SearchAnyway. Точно как в аптеке.

 
Информация о пользователе CJLOG


Зарегистрирован: 03.05.07
Сообщения: 716
Рейтинг: 824

Ссылка на сообщениеДобавлено: 21/07/08 в 23:11      Ответить с цитатойцитата 

Sha писал:
Из второго примера жить будет четь лучьше если
explode('_',$val) заменить на explode('_',$val,2)

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

Спасибо за useless-поправку. Особенно, если учесть, что значение может быть строковое и в нём тоже может содержаться символ "_".
Пока кто-то будет что-то включать в учебники, кто-то будет писать софт ;) Интересно было бы взглянуть на ошибку. Возьму на заметку, если что. Тут уже без побъёба. Только про extract не надо - вставил его для изащности кода. Если нужна секюрность, то можно создать массив с допустимыми именами переменных, передаваемых в QUERY_STRING, или просто заюзать тип EXTR_SKIP. Но тут про секюрность не было вопроса.

Цитата:
нафига вы вообще мутите с explode, когда можно использовать parse_str функцию, специально предназначенную для вытягивания параметров в массив.
Скажи пожалуйста, при чём тут вообще parse_str. Вернее, вытяни пожалуйста с помощью этой функции все переменные и их значения из строки "var1_1/var2_2/" Действительно, чего это все мутят explode...

K началу

Уарабей!

 
Информация о пользователе Sha


Зарегистрирован: 11.06.03
Сообщения: 870
Рейтинг: 765


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 22/07/08 в 01:48      Ответить с цитатойцитата 

CJLOG писал:
Спасибо за useless-поправку. Особенно, если учесть, что значение может быть строковое и в нём тоже может содержаться символ "_".

Для того и нужен третий параметр.

K началу

 
Информация о пользователе CJLOG


Зарегистрирован: 03.05.07
Сообщения: 716
Рейтинг: 824

Ссылка на сообщениеДобавлено: 22/07/08 в 01:55      Ответить с цитатойцитата 

А тут ступил чё-то, подумал что наоборот icon_smile.gif Бывает.

K началу

Уарабей!

 
Информация о пользователе Stek
www.phpdevs.com

Зарегистрирован: 24.10.02
Сообщения: 8307
Рейтинг: 7807


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 22/07/08 в 14:37      Ответить с цитатойцитата 

CJLOG: а RewriteRule в таком случае зачем придумано ?
Имхо не есть гуд идея, вешать все на один файл и в нем парсить на параметры.

K началу

Обещали $$$ а насчитали ХХХ? Лей траф на SearchAnyway. Точно как в аптеке.

 
Информация о пользователе CJLOG


Зарегистрирован: 03.05.07
Сообщения: 716
Рейтинг: 824

Ссылка на сообщениеДобавлено: 22/07/08 в 15:17      Ответить с цитатойцитата 

Stek писал:
CJLOG: а RewriteRule в таком случае зачем придумано ?
Имхо не есть гуд идея, вешать все на один файл и в нем парсить на параметры.

Так человек выше сказал, что не хочет лишний раз теребить htaccess. Во-вторых, я описал "универсальный" алгоритм, при котором в htaccess ставится одна запись, а всё остальное возлагается на скрипт.

Вынужден не согласиться с тем, что всё надо хранить в htaccess. Я проводил тесты и выяснял, что htaccess на сложных регулярках очень сильно тупит и даже на небольшом трафе апач очень сильно нагибается. Именно по этому почти в кажом фреймворке встроен класс, который с лёгкостью конвертит ЧПУ в php-переменные. У меня в софте тоже юзается подобный класс. И всё потому, что он проще и главное быстрее. А когда у тебя в htaccess километровые записи с регулярками - это моветон.

Да и вообще я очень сложно себе представляю запись в htaccess, которая преобразовала бы "/var1_1/var2_2/var3_3" в "var1=1&var2=2&var3=3" icon_smile.gif

K началу

Уарабей!

 
Информация о пользователе Stek
www.phpdevs.com

Зарегистрирован: 24.10.02
Сообщения: 8307
Рейтинг: 7807


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 22/07/08 в 17:11      Ответить с цитатойцитата 

http://www.site.com/news/var1_1/var2_2/var3_3/
http://www.site.com/news/1-2-3/
какой из таких адресов будет удобнее ? icon_smile.gif

K началу

Обещали $$$ а насчитали ХХХ? Лей траф на SearchAnyway. Точно как в аптеке.

 
Информация о пользователе ibiz
I ♥ Mаster-X!

Зарегистрирован: 24.10.04
Сообщения: 5670
Рейтинг: 3883


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 22/07/08 в 17:28      Ответить с цитатойцитата 

Stek писал:
http://www.site.com/news/var1_1/var2_2/var3_3/
http://www.site.com/news/1-2-3/
какой из таких адресов будет удобнее ? icon_smile.gif


хм... смотря в сторону сео, думаю первый выгоднее... или нет?

K началу

Ratio 1:300, FHG, FHS, RSS, Free Host, Free Content.
Все для вебмастера! Fucking Cash v2 и Money Cult

 
Информация о пользователе CJLOG


Зарегистрирован: 03.05.07
Сообщения: 716
Рейтинг: 824

Ссылка на сообщениеДобавлено: 22/07/08 в 18:05      Ответить с цитатойцитата 

Stek писал:
http://www.site.com/news/var1_1/var2_2/var3_3/
http://www.site.com/news/1-2-3/
какой из таких адресов будет удобнее ? icon_smile.gif

Удобнее для кого? Для htaccess, для парсинга через php, для сео? Если у тебя количество и порядок переменных постоянны, то второй вариант проще действительно сделать через 1-2 правила в htaccess. Но обычно люди увлекаются и начинают перечислять в htaccess все возможные комбинации параметров, дико нагружая этим апач. Щас вот наконец-то увидел исходники Clip-Share - у него там в .htaccess около 100 RewriteRule. Я считаю, что это пиздец, мягко говоря. Это апач должен при каждом заходе применять до 100 регулярных выражений!

А первый вариант я придумал на ходу, как универсальное решение. Сам не юзал его, но считаю его интересным для какой-нибудь CMS, где может быть много различных комбинаций параметров в урлах, и наверно заюзаю где-нибудь. Главное соблюдать секюрность.

K началу

Уарабей!

 
Информация о пользователе Sha


Зарегистрирован: 11.06.03
Сообщения: 870
Рейтинг: 765


Передовик Master-X (01.01.2008)
Ссылка на сообщениеДобавлено: 22/07/08 в 21:03      Ответить с цитатойцитата 

В детстве я юзал оба варианта. А первый вариант щас много кто юзает. Тот же вордпресс.

Действительно правильно будет парсить скриптом. Ибо упрощает .htaccess
Можно конечно использовать внешний парсер для RewriteRule, но зачем для очень связанных задач использовать две технологии ?

K началу

 
Информация о пользователе taj


Зарегистрирован: 05.04.07
Сообщения: 431
Рейтинг: 437

Ссылка на сообщениеДобавлено: 24/07/08 в 19:54      Ответить с цитатойцитата 

+1 за ZF - всё уже написанно.
Сайт русского комьюнити zendframework.ru

З.Ы. Кстати, там тоже парсинг проходит скриптами, а не в .htaccess

K началу

Лучшие вебкамы в рунете!

 
Информация о пользователе leroy_17


Зарегистрирован: 01.03.07
Сообщения: 77
Рейтинг: 28

Ссылка на сообщениеДобавлено: 25/07/08 в 06:21      Ответить с цитатойцитата 

zend хорошо для небольших или средних проектах где надо быстро написать , а там где надо например postgres или поиск релевантный по 100 мб базе подключать там уже не до zend , ИМХО

K началу

 
Royal Cash Новая тема Новая тема   Ответить Ответить Перейти на страницу 1, 2  След.» 
Показать сообщения:     
Перейти:  


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Спонсор раздела GlobalAcces