АРМАДА
PHP, как передать в GET\POST-запросе знак & (амперсанд)?
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11270
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 4:33 pmДобавить в избранноеОтветить с цитатой
Всем привет!
Мучаюсь уже второй день с такой проблемой - когда php-скрипту обработчику отправляются данные переменной с формы, содержащей значок & в строке, то он их разделяет как две разные переменные.
Переменная - строка для ввода УРЛа, может содержать или не содержать амперсанд, например, задаются такие строки:
http://site.com/
или
http://site.com/index.html
или
http://site.com/index.php?a=123&b=super
и т.д.

Обработчик:
<form action=1.php method=get>
<input type=text name=url>
<input type=submit>
</form>

<?php
echo $_GET['url'];
?>

Первые две строки, без амперсанда, воспримет нормально, а третью разделит по амперсанду в две переменные.

Подскажите, как можно решить эту проблему?

Заранее большое спасибо! Drinks or Beer
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

exolon
V.I.P.
Зарегистрирован: 22.11.2007
Сообщений: 2398
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 7:01 pmОтветить с цитатой
Посылай post'ом

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 7:58 pmОтветить с цитатой
Конечно используй пост, он и безопасней будет, get больше для случаев, когда на линк заходишь сразу с браузера, без форм, т.е. напр domain.com/admin.php?login=111&pass=222

замени

<form action=1.php method=get>

на

<form action=1.php method=post>


Также,

<?php
echo $_GET['url'];
?>

замени на

<?php
echo $_POST['url'];
?>
http://m.lsl.com/

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11270
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 8:02 pmОтветить с цитатой
exolon, действительно, чего-то меня переклинило немного Smile

POST-запросом:
<form action=2.php method=post>
<input type=text name=a style="width:550px;" value="http://ya.ru/index.php?id=789&subid=super"><br>
<input type=text name=b style="width:550px;" value="100"><br>
<input type=submit>
</form>

обработчик:
<?php

echo $_POST['a'];
echo "<br>".$_POST['b'];

?>

И все нормально. А GET-запросом никак, столько мучился.
Спасибо! :thup: Drinks or Beer
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 8:03 pmОтветить с цитатой
Вообще, и через гет, браузер должен кодировать строку, а пхп на стороне хоста, его декодировать, знаки разделения гет переменных, не должны вроде как прерывать переменные. Может у тебя пхп какой то еще 4-ой версии. На современных версиях, никогда подобного не встречал, хотя то что такое явление может быть, совершенно возможно.
http://m.lsl.com/

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11270
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 8:04 pmОтветить с цитатой
IseeDeadPeople, спасибо!
Да я знаю как с GET и POST работать, просто писал API-скрипт для своего сервиса, хотел через GET сделать, так удобнее, когда одной строкой запрос, можно через file_get_contents получить результат, зациклился именно на GET-запросе.
Остается только POST :thup:
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

JM
Гуру
Зарегистрирован: 25.08.2006
Сообщений: 1383
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 9:34 pmОтветить с цитатой
Бррр че ты морочишься объясни еще раз? Если гет и в запросе у тебя &, то тебе надо юрленкод юзать
http://php.net/manual/ru/function.urlencode.php

У поста минусы т.ч. локально хрен потестишь надо форму рисовать Smile

Вот так гет пропиши и увидишь что браузер сам кодирует & в то что надо.
<form action=2.php method=get>
<input type=text name=a style="width:550px;" value="http://ya.ru/index.php?id=789&subid=super"><br>
<input type=text name=b style="width:550px;" value="100"><br>
<input type=submit>
</form>
Конвертит мобильный траф как зверь!!!
VDS и домены от AHnames.com - лучшие решения по доступным ценам

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11270
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 10:35 pmОтветить с цитатой
JM, когда GET-запрос приходит, то он думает, что здесь три переменных:
2.php?a=http://ya.ru/index.php?id=789&subid=super&b=100
Через POST так:
action = 2.php
a = http://ya.ru/index.php?id=789&subid=super
b = 100
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

JM
Гуру
Зарегистрирован: 25.08.2006
Сообщений: 1383
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 10:45 pmОтветить с цитатой
Ничего подобного 2 переменные и есть...
2.php?a=http%3A%2F%2Fya.ru%2Findex.php%3Fid%3D789%26subid%3Dsuper&b=100

echo urlencode('http://ya.ru/index.php?id=789&subid=super');
сам посмотри что выдаст и это же выдаст браузер если ты в форму пропишешь get вместо post

В пост тебе тоже надо переменные загонять через urlencode ващето или ты в дампе увидишь что один хер их там ТРИ!!!
Конвертит мобильный траф как зверь!!!
VDS и домены от AHnames.com - лучшие решения по доступным ценам

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11270
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 11:07 pmОтветить с цитатой
JM, а как я эти данные в обработчик получу?

Т.е. либо $_GET['variable']; либо $_POST['variable']; и GET на переменную 'a' отдаст только http://ya.ru/index.php?id=789 вместо http://ya.ru/index.php?id=789&subid=super, посчитав, что subid - это тоже переменная.
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

JM
Гуру
Зарегистрирован: 25.08.2006
Сообщений: 1383
Обратиться по нику
# Добавлено:Вт Авг 13, 2013 11:13 pmОтветить с цитатой
Блин )
Я тебе про фому ты мне про ерему Smile
Так (неправильно отдашь), посчитает за две
http://ya.ru/index.php?id=789&subid=super
и
если так (правильно отдашь) посчитает за одну!!!
http%3A%2F%2Fya.ru%2Findex.php%3Fid%3D789%26subid%3Dsuper
Разницу видишь как правильно и как не правильно?
На гугл зайди увидишь Smile
http://www.google.com/search?q=habra - второй линк
http://www.google.com/url?q=http://ru.wikipedia.org/wiki/%25D0%25A5%25D0%25B0%25D0%25B1%25D1%2580%25D0%25B0%25D1%2585%25D0%25B0%25D0%25B1%25D1%2580

положи в 2.php
<?php
echo "a:$a b:$b subid:$subid";
?>
и пошли
1. 2.php?a=http%3A%2F%2Fya.ru%2Findex.php%3Fid%3D789%26subid%3Dsuper&b=100
2. 2.php?a=http://ya.ru/index.php?id=789&subid=super&b=100

Сам все увидишь!

вот так правильно если тебе надо дальше запулить грубо говоря...
file_get_contents ("http://domain.com/?a=".urlencode($_GET['a'])."&b=".urlencode($_GET['b']));
Конвертит мобильный траф как зверь!!!
VDS и домены от AHnames.com - лучшие решения по доступным ценам

Yabuti
V.I.P.
Зарегистрирован: 28.11.2008
Сообщений: 11270
Contest (Сумма: 2)
Обратиться по нику
# Добавлено:Ср Авг 14, 2013 5:30 amОтветить с цитатой
JM, спасибо! :thup:
Ксен ВПС и выделенные серверы от PQCService.net с бесплатным администрированием в 7 локациях, icq: 87244588
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: [email protected] и ICQ: 750000

JM
Гуру
Зарегистрирован: 25.08.2006
Сообщений: 1383
Обратиться по нику
# Добавлено:Ср Авг 14, 2013 9:32 amОтветить с цитатой
Обращайся Smile
Конвертит мобильный траф как зверь!!!
VDS и домены от AHnames.com - лучшие решения по доступным ценам

exolon
V.I.P.
Зарегистрирован: 22.11.2007
Сообщений: 2398
Обратиться по нику
# Добавлено:Ср Авг 14, 2013 11:53 amОтветить с цитатой
Точно так. Если браузер сабмитит форму, то он сам делает urlencode.
Если дергаешь через file_get_contents , то надо вручную сделать urlencode.
Задержите поезд!
Хостинг | TDS | котики

IseeDeadPeople
Объединенная Электрическая
Зарегистрирован: 06.12.2005
Сообщений: 18000
Обратиться по нику
# Добавлено:Ср Авг 14, 2013 12:56 pmОтветить с цитатой
Я про тоже, любой браузер должен сам гет запрос, query переменную заurlencoдить при передаче на хост.

Что то мне кажется, дело в браузере Яба, или же, какие то там настройки не те стоят.
http://m.lsl.com/
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры