Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс для обработки адресной строки 
:(
    Опции темы
Gold Dragon
Дата 18.1.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



В общем решил я потихоньку переходить на class`ы и возникла такая задача.
Как мне грамотнее сделать обработку адресной строки чтобы управлять самим контентом.
Т.е. есть к примеру строка
http://buw.ru/index.php?option=com_datsoga...y&Itemid=13
вот и нужно из неё вытаскивать нужные параметры, проверять есть или нет и так далее.

Наверняка кто-то уже писал... Мне хотябы теории малость, но от примеров не откажусь


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
AztEK
Дата 18.1.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Уже написали smile Разработчики PHP smile
parse_str()


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
mishaSL
Дата 18.1.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Gold Dragon @  18.1.2007,  12:30 Найти цитируемый пост)
вот и нужно из неё вытаскивать нужные параметры, проверять есть или нет и так далее.


Странная какая-то идея, есть же  массив $_GET и предопределенные переменные. А что там еще "так далее"?

Добавлено @ 13:59 
Ссори я наверное просто не понял вопрос, если чужие адресные строки обрабатывать, то тогда 
AztEK, прав, parse_str()  тебе в помощь.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Gold Dragon
Дата 18.1.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



AztEK, это немного не то... это может быть одной из функций класса.

Может я не так объяснил.. попробую ещё раз.

Когда страница загружается и считывается заголовок, то я каждуй раз вычлиняю необходимые переменные, их значения. Проверяю вообще на их наличие/отсутсвие. Проверяю допустимость значений, проверяю разрешённость значений и переменных и т.п. и т.д.

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

Просто я видел такие классы в нескольких CMS, но разобраться там слишком пока для меня сложно  smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 18.1.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



По-моему лучший вариант это пользоваться mod_rewrite. Тогда на уровне сервера проверяется. И данные уже проходят первичную проверку. 
Я делаю так:
1. Весь сайт написан с использованием mod_rewrite
2. В самом начале скрипта проверяешь массив $_GET и удаляешь все не нужные символы, к примеру если у тебя в системе не используются символы $, :, / то убираешь их.
3. Если есть какие-то специфические проверки, то это уже проверяется на уровне модуля к которому обращаются.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
SamDark
Дата 18.1.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Gold Dragon
Сама идея достаточно спорная. Созданием класса просто усложняется синтаксис и замедляется выполнение скрипта.

И что всё-таки значит вычленять переменные?

Может покажешь, как это обычно выглядит в коде и как хочешь, чтобы это выглядело?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Mal Hack
Дата 18.1.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Это все лишнее.
Ты должен сделать ядро системы, куда должны войти функции разбора строки запроса с нужными проверками.... И то, лишнее
Лично я, используя mod_rewrite, как написано тут: http://vingrad.ru/WEB-SERVER-002835
работаю с такой функцией, причем вызывается она ДО создание объекта ядра:
Код

    function glGetURI( $uri , $path )
    {
        $t = parse_url( $uri );
        $uri = preg_replace( "#/+#" , "/" , $t['path'] );

        $t = parse_url( $path );
        $uri = preg_replace( "#(^" . preg_quote( $t['path'] ) . "|\.\./|/$)#" , "" , $uri );
        
        return explode( "/" , $uri );
    }


На выходе получая массив параметров, с которым очень удобно работать.
PM ICQ   Вверх
SamDark
Дата 18.1.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Mal Hack
Не понял... Зачем руками парсить, когда всё в GET пойдёт и так?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Gold Dragon
Дата 18.1.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(SamDark @  18.1.2007,  15:29 Найти цитируемый пост)
Может покажешь, как это обычно выглядит в коде и как хочешь, чтобы это выглядело?

Да выглядит просто. Допустим у меня есть такая переменная в адресной строке как Id. вот что мне приходится с ней делать

- проверка на наличие самой переменной
- проверка значения на null
- проверка значения на содержание только цифр
- сверка значения с шаблонами

эти действия я делаю как подряд, так и в произвольном порядке. Вот и хотелось это всё упорядочить

mod_rewrite для меня сложноват. Вернее я ещё в нём не раздирался. Могу использовать его только как попугай - тупо переписывать, не понимаю сути.  smile 

ps
Mal Hack, я пока делаю сайты как их вижу (без планирования) хотя уже начал по немногочто-то систематизировать. Но понятие ядра для меня ещё очень туманное. Может новый топик создать, а то я опять с середины начинаю smile


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 18.1.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



_http://mysite.com/par1/par2/par3/par4
Что тут в $_GET пойдет?
PM ICQ   Вверх
mishaSL
Дата 18.1.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(Gold Dragon @  18.1.2007,  16:36 Найти цитируемый пост)
проверка на наличие самой переменной
- проверка значения на null
- проверка значения на содержание только цифр
- сверка значения с шаблонами

эти действия я делаю как подряд, так и в произвольном порядке. Вот и хотелось это всё упорядочить

mod_rewrite для меня сложноват. Вернее я ещё в нём не раздирался. Могу использовать его только как попугай - тупо переписывать, не понимаю сути. 


Проще разобраться с mod_rewrite тогда не надо будет всего этого делать. Тем более это будет гораздо лучше и систематизированее.




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Gold Dragon
Дата 19.1.2007, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Mal Hack @  18.1.2007,  16:37 Найти цитируемый пост)
_http://mysite.com/par1/par2/par3/par4Что тут в $_GET пойдет?
ну ты спросил.. smile Я не знаю.

Я так и не понял, mod_rewrite вроде в данном случае служет для "нормального" отображения самой адресной строки. Но я то малость о другом спрашиваю.. smile 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
SamDark
Дата 19.1.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Mal Hack
При использовании в mod_rewrite правила
Код

RewriteRule ^(\w+)/(\w+)/(\w+)/(\w+)[/]?$ index.php?p1=$1&p2=$2&p3=$3&p4=$4

в $_GET[] попадут все 4 параметра с известными индексами.

mishaSL
Полностью на mod_rewrite полагаться не стоит. Злые люди могут обратиться к скрипту напрямую.


Gold Dragon
Похоже, тебе нужен класс валидации. Дело хорошее. Сам об этом задумываюсь.

Немного приведу в порядок список желаемых фич:

- приведение значения к определённому типу или сверка значения с шаблонами (возможно с регулярными выражениями)
- проверка существования значения. Если не существует - выброс исключения, либо использование умолчания.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Glip
Дата 19.1.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



www.onphp.org

BasePrimitive и его наследники

Это сообщение отредактировал(а) Glip - 19.1.2007, 10:23


--------------------
user posted image
PM MAIL   Вверх
SamDark
Дата 19.1.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Glip
Ну, это не совсем то. Делать обёртки для примитивов == сильное замедление выполнения.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1105 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.