|
|
|
Всем привет!
Мучаюсь уже второй день с такой проблемой - когда 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'];
?>
Первые две строки, без амперсанда, воспримет нормально, а третью разделит по амперсанду в две переменные.
Подскажите, как можно решить эту проблему?
Заранее большое спасибо! |
|
|
|
|
|
|
Конечно используй пост, он и безопасней будет, 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'];
?> |
|
|
|
|
|
exolon, действительно, чего-то меня переклинило немного
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-запросом никак, столько мучился.
Спасибо! |
|
|
|
|
|
Вообще, и через гет, браузер должен кодировать строку, а пхп на стороне хоста, его декодировать, знаки разделения гет переменных, не должны вроде как прерывать переменные. Может у тебя пхп какой то еще 4-ой версии. На современных версиях, никогда подобного не встречал, хотя то что такое явление может быть, совершенно возможно. |
|
|
|
|
|
IseeDeadPeople, спасибо!
Да я знаю как с GET и POST работать, просто писал API-скрипт для своего сервиса, хотел через GET сделать, так удобнее, когда одной строкой запрос, можно через file_get_contents получить результат, зациклился именно на GET-запросе.
Остается только POST |
|
|
|
|
|
Бррр че ты морочишься объясни еще раз? Если гет и в запросе у тебя &, то тебе надо юрленкод юзать
http://php.net/manual/ru/function.urlencode.php
У поста минусы т.ч. локально хрен потестишь надо форму рисовать
Вот так гет пропиши и увидишь что браузер сам кодирует & в то что надо.
<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> |
|
|
|
|
|
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 |
|
|
|
|
|
Ничего подобного 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 ващето или ты в дампе увидишь что один хер их там ТРИ!!! |
|
|
|
|
|
|
|
JM, спасибо! |
|
|
|
|
|
Обращайся |
|
|
|
|
|
Точно так. Если браузер сабмитит форму, то он сам делает urlencode.
Если дергаешь через file_get_contents , то надо вручную сделать urlencode. |
|
|
|
|
|
Я про тоже, любой браузер должен сам гет запрос, query переменную заurlencoдить при передаче на хост.
Что то мне кажется, дело в браузере Яба, или же, какие то там настройки не те стоят. |
|
|
|
|
|
|
|