Василий Г.
101 повідомлення
#15 років тому
Приветствую
Есть ссылка в которой передаются параметры
Например
http://sait/watermark.php?type=large&lang=en&thumb=1677891_CH-477Pool%20&%20Villa.jpg
При обращении к $_GET
вместо 1677891_CH-477Pool%20&%20Villa.jpg содержится 1677891_CH-477Pool
т.е. обрезается до символа &
Что сделать, чтобы получить правильно?
Спасибо
Максим Ф.
3195 повідомлень
#15 років тому
А в $_GET что у вас? large&lang=en&thumb=1677891_CH-477Pool%20&%20Villa.jpg ИЛИ просто large?
Василий Г.
101 повідомлення
#15 років тому
$_GET = large
тут правильно
Никита К.
1594 повідомлення
#15 років тому
Выводить в виде %
Артём К.
1157 повідомлень
#15 років тому
Цитата ("DiamondPhoenix"):
Что сделать, чтобы получить правильно?


Убрать & из названий картинок.
Максим Ф.
3195 повідомлень
#15 років тому
Цитата ("DiamondPhoenix"):
$_GET = large
тут правильно

Немножко логики, и вы бы сами всё поняли
Василий Г.
101 повідомлення
#15 років тому
Цитата ("superkoder"):
Убрать & из названий картинок.

картинок много и еще в БД в название хранится
Цитата ("Anexroid"):
Выводить в виде %

т.е. & превратить в уникальное какое нибудь значение
Никита К.
1594 повідомлення
#15 років тому
DiamondPhoenix, ну, почти что. %20 - это пробел. Вот и амперсанд надо на что то заменять.
Хотя & убрать вообще надёжнее всё таки.
Роман Р.
132 повідомлення
#15 років тому
Preg_match & $_SERVER используйте
Василий Г.
101 повідомлення
#15 років тому
Цитата ("neadekvat"):
загружать картинки с исходными названиями

это не я и они уже загружены)
Всем спасибо за помощь
Идей много теперь - решу эту задачу
Евгений О.
263 повідомлення
#15 років тому
Цитата ("DiamondPhoenix"):
...
т.е. обрезается до символа &
Что сделать, чтобы получить правильно?

Чтобы "получить правильно" вместо сивола "&" надо передавать его шестнадцатиричный код: %26. По определению, в строке URL при передаче параметров методом GET шестнадцатиричным кодом надо заменять, по крайней мере, символы "?" и "&", но лучше заменять и все символы не входящие в набор ASCII. Замену символов в строке URL можно, например, выполнить функцией JavaScript escape().

Примеры (из руководства по JavaScript):

1. escape("&" возвращает %26;

2. <A HREF=\Q"mypage.html?val1="+escape(theValue)\Q)>Click Here</A>
Евгений О.
263 повідомлення
#15 років тому
Цитата ("neadekvat"):
Illarion_SA, ну не js для этого же использовать) А в php - хотя бы urlencode(), например.

Если автор темы владеет исходным кодом скриптов и имеет время и желание с ними повозиться, то URL можно кодировать и на стороне сервера. Если же исходных текстов нет или нет желания/возможности вносить доработки, то придется пользоваться JS. Выбор подходящего варианта определяется его ценой с учетом всех сопутствующих факторов.
Владимир М.
578 повідомлень
#15 років тому
Товарисч хочет просто в скрипе watermark.php принять имя не заморачивась с переработкой всей системы.
это отлично, что кривой параметр идет последним. тогда просто пройдитесь foreach'ем ($key as $value) по глоб.массиву $_GET - тогда
первым $key будет type и его $value будет large
вторым $key будет lang и его $value будет en
третьим $key будет thumb и его $value будет 1677891_CH-477Pool%20
четвертым $key будет null (или вообще ничего) и его $value будет %20Villa.jpg
Владимир М.
578 повідомлень
#15 років тому
neadekvat вы вполне оправдываете свой ник ))) - к чему такой строгий разгром моего профессионализма (который я при себе держу и не размахиваю им - как вы там его усмотрели)? просто поправили бы - например так - владмакс, в приведенном вами примере %20Villa.jpg будет передана в $key а не $value. зачем же переходить на личности, мм?
----------
по поводу "мягко говоря плОхости варианта" могу возразить - склеить в цикле эти кусочки - весьма не проблематично, между тем автор будет избавлен от необходимоти что-то перерабатывать на стороне, посылающей запрос скрипту watermark.php - я так понимаю он не настроен перекраивать базу и систему. конечно самый правильный вариант распарсить вручную QUERYSTRING, но я предлагаю фактически то же самое, полюбому $_SERVER надо будет explode по амперсанду и затем в полученном массиве ходить в том же цикле форич (ну может быть и в простом ФОРе).
---------
представьте себе ситуацию что watermark.php вызывается не из одной функции а из десяти, и что, переписываь все 10 прототипов или проще все же распарсить то что пришло.
Андрей Халецкий
3562 повідомлення
#15 років тому

Без варинтов.
Владимир М.
578 повідомлень
#15 років тому
Цитата ("SmartDesign"):
http://www.php.net/manual/en/function.urlencode.ph...
Без варинтов
простите, насколько я понимаю вы подразумеваете энкодирование на стороне отправителя запроса? а что если отправителем является статическая html страница? или недоступный для редактирования скрипт. или отправителем является 10 разных скриптов (мало ли маловалидных сайтов, в которых в коде разных страниц дублируются сходные блоки, вместо объединения в функции). поэтому как минимум с вариантами
-----------
Цитата ("neadekvat"):
И чем вам регулярные выражения не нравятся?
очень даже нравятся. эксплод это упрощение конечно же...
Андрей Халецкий
3562 повідомлення
#15 років тому
Цитата ("vladmax"):
простите, насколько я понимаю вы подразумеваете энкодирование на стороне отправителя запроса? а что если отправителем является статическая html страница? или недоступный для редактирования скрипт. или отправителем является 10 разных скриптов (мало ли маловалидных сайтов, в которых в коде разных страниц дублируются сходные блоки, вместо объединения в функции). поэтому как минимум с вариантами
Когда я говорю "без вариантов" я имею ввиду правильное решение задачи в "нормальных" условиях. Конечно может быть что религия/условия/знания не позволяют использовать нормальное решение, но советовать костыли в общем случае я не рекомендую.
Владимир М.
578 повідомлень
#15 років тому