Передача URL с параметрами через GET-запрос
Текущий рейтинг темы: Нет
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 5 ноября 2005 12:39
Как передать в качестве параметра GET-запрос, который содержит URL, который также содержт GET-параметры. Т.е., например,
http://somesite.com/go.php?url=http://openproj.ru/index.php?m=stdforum&f=4&a=std_newtopic
Пока единственная идея, которая мне приходит в голову - это вручную обрабатывать $_SERVER['QUERY_STRING'] с помощью регулярных выражений.
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
avm
Новичок
Всего сообщений: 12 Рейтинг пользователя: 1
Дата регистрации на форуме: 20 нояб. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 20 ноября 2005 23:33
XXXX Pro написал: [q] обрабатывать $_SERVER['QUERY_STRING'][/q]
или в url заменять символы "&" и "?" например на ":amp:" и ":que:" соответственно (некие последовательности, которые с достаточной вероятностью не могут встретиться в url), а позднее их преобразовывать обратно...
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 21 ноября 2005 9:14
avm с помощью регулярных выражений ИМХО правильнее. Ибо со всякими ":amp:" - нагрузка будет больше на веб-сервер, если я тебя корректно понял. Хоть нагрузка будет и не значительной, но всё же. А регулярными выражениями нагрузка на PHP - ИМХо это правильнее.. | | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 21 ноября 2005 14:29
avm Ну, пожалуй, удачное решение.
wsx Вообще, замену можно вести не regexpом, а strreplace, от которой нагрузка не такая уж большая. А во вторых я не понял насчет разницы между нагрузкой на Web-сервер и нагрузкой на PHP? И то и другое все равно на одном процессоре выполняется, какая разница, кто из них берет больше времени (тем более если PHP подключен в виде модуля, как это часто делают, то там и в том и в другом случае все выполяется в пределах процесса Web-сервера).
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 21 ноября 2005 15:20
Дело в том, что нагрузки по определению больше на Веб-Сервер. Следовательно следует равномерно распределять, по возможности.
| | |
avm
Новичок
Всего сообщений: 12 Рейтинг пользователя: 1
Дата регистрации на форуме: 20 нояб. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 22 ноября 2005 4:39 Сообщение отредактировано: 22 ноября 2005 4:40
wsx, о какой нагрузке речь?
то что я предложил:
$url = str_replace( ':amp:', '&', str_replace( ':que:', '?', str_replace( ':eq:', '=', $_GET['url'] ) ) );
какая тут нагрузка на сервер? 3 str_replace ? не смешите...
| | |
wsx
Участник Проекта
Юниксойд, сетевик
Откуда: Казань Всего сообщений: 1074 Рейтинг пользователя: 28 Репутация пользователя: 1Дата регистрации на форуме: 14 янв. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 22 ноября 2005 9:25
Ну значит я вас не понял! Чтож, приношу извинения и советую в следующий раз выродаться яснее! | | |
Gram
Модератор раздела
Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 25 ноября 2005 20:57
avm, ну вообще идея не нова и в голову мне приходила.. ведь всегда можно что то переобозначить но я думал есть более красивый вариант, решаемый штатными средствами PHP... | | |
avm
Новичок
Всего сообщений: 12 Рейтинг пользователя: 1
Дата регистрации на форуме: 20 нояб. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 27 ноября 2005 2:49
Gram есть. Например завернуть сначала URL в base64, а потом развернуть его оттуда. И заодно юзер в броузере его не прочитает...
| | |
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79 Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 27 ноября 2005 12:34
avm написал: [q] И заодно юзер в броузере его не прочитает...[/q]
А на мой взгляд, это скорее плохо, чем хорошо... (Если смотреть с точки зрения обычного пользователя, а не разработчика).
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | |
Gram
Модератор раздела
Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 27 ноября 2005 21:43
XXXX Pro написал: [q] Если смотреть с точки зрения обычного пользователя, а не разработчика[/q]
Я тоже так считаю. Я хотел сделать так, чтобы url никак не искажался при просмотре ссылки... | | |
avm
Новичок
Всего сообщений: 12 Рейтинг пользователя: 1
Дата регистрации на форуме: 20 нояб. 2005
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 28 ноября 2005 0:39 Сообщение отредактировано: 28 ноября 2005 0:42
Так, задача постепенно видоизменяется
Нужно:
1. Передать в качестве значения переменной GET весь URL со всеми его частями QUERY_STRING, при этом его переменные не должны быть применены к нам самим!!!.
2. Пользователь должен видеть всю строку передаваемого URL (или достаточно только его proto://hostname ?)
3. Нужно сделать так, чтобы это было реализовано минимальным количеством действий для того чтобы не создавать нагрузку на сервер.
4. Нужно это реализовать имеющимися в php функциями.
Так?
Ответ: Ну так ведь чудес-то не бывает....
значит пользуем простые "rawurlencode" "rawurldecode" на этот URL целиком, при этом "?" и "&" заменятся на из UTF8 коды...
| | |
Время выполнения скрипта: 0.0768. Количество выполненных запросов: 18, время выполнения запросов 0.0311
|