Разный эфект от rawurlencode() через форму и по ссылке :(

Статус
В этой теме нельзя размещать новые ответы.

Страшный Злодей

Бывший член клуба (достало хамство).
Разный эфект от rawurlencode() через форму и по ссылке :(

Суть вопроса: нужно передавать некую переменную как через форму (методом get), так и по html ссылке. Переменная предварительно закодирована через rawurlencode(). Так вот, форма и html-ссылка передают эту переменную по разному (одна в декодированом виде, другая в закодированном)
Чтобы было понятнее о чем говорю, ниже представил пример кода:
PHP:
<?php
$string = rawurlencode('бум');
?>

<form action='testreg.php' method='get'>
<select name="test">
<option value="<?php echo $string; ?>" selected="selected">прикол</option>
</select>
<input type="submit" name="Submit" value="Go" />
</form>

<hr />
<a href="testreg.php">назад</a> | 
<a href="testreg.php?test=<?php echo $string; ?>&Submit=Go">вперёд</a>
<?php
echo 'Сейчас $_GET["test"] = '.$_GET["test"];
?>
Вопрос: это лечится? И если нет, то как определить закодирована переменная или нет, не прибегая к регуляркам?
 

Фанат

oncle terrible
Команда форума
а зачем ты кодируешь передаваемое через форму?
 

Фанат

oncle terrible
Команда форума
чей strict? валидный код запрещает использование русского языка?
 

Страшный Злодей

Бывший член клуба (достало хамство).
Автор оригинала: *****
чей strict?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

валидный код запрещает использование русского языка?
К сожалению, да (в передаваемых параметрах, через get)...
 

cDLEON

Онанист РНРСlub
Страшный Злодей
о_О. Вы что то странное говорите.
Браузер перед отправкой всегда сам делает rawurlencode.
 

Gas

может по одной?
Страшный Злодей
ты смотри не то, что показывает броузер при наведении на ссылку, а source code.

<a href="testreg.php?test=<?php echo $string; ?>&Submit=Go">вперёд</a>
тут оно у тебя ругается не на русский, а на &, нужно заменить на &amp;amp;
 

Gas

может по одной?
Anarki
спасибо, точно
поправил

-~{}~ 10.12.07 21:59:

Страшный Злодей
и конечно для значения формы не нужно делать rawurlencode
 

Страшный Злодей

Бывший член клуба (достало хамство).
Автор оригинала: Gas
Страшный Злодей
ты смотри не то, что показывает броузер при наведении на ссылку, а source code.
А я и не смотрю, на то, что браузер показывает при наведении на ссылку...Достаточно посмотреть на адресную строку после перехода по ссылке и форме, не говоря уже об исходнике страницы...


тут оно у тебя ругается не на русский, а на &, нужно заменить на &amp;amp;
Хм.. ну да, надо было мне ещё, в примере и теги хеад, боди написать и в дивы упаковать напоследок... ага..
amp здесь ни при чем, в исходном коде с этим все в порядке.

-~{}~ 10.12.07 23:03:

cDLEON
о_О. Вы что то странное говорите.
Что именно из того, что я говорю вам кажется странным?
Браузер перед отправкой всегда сам делает rawurlencode.
Кто с этим спорит? Вы вот попробуйте код мой запустить и поймёте о чем я...
 

Gas

может по одной?
как отображает броузер в адресной строке - тебя не должно волновать.
php сам делает rawurldecode над пришедшими переменными, всё правильно.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Gas
как отображает броузер в адресной строке - тебя не должно волновать.
php сам делает rawurldecode над пришедшими переменными, всё правильно.
Вы не правы. Попробуйте запустить код который я кинул в начале...
 

Gas

может по одной?
Страшный Злодей
что я должен увидеть в твоём кривом примере? убери rawurlencode кодирование для option'а, оставь только для ссылки.
 

Страшный Злодей

Бывший член клуба (достало хамство).
Gas
... в твоём кривом примере
Чего так вежливо? Типа уже большой мальчик и пытаешься оценку ставить? Ну-ну...
убери rawurlencode кодирование для option'а
Вопрос об использовании rawurlencode - я не ставил. Option должен кодироваться и точка. Вопрос был по PHP-програмированию, а именно - как решить трабл с "принятием" переменной из формы и по html-ссылке?
 

Gas

может по одной?
Страшный Злодей
ладно, давай не будем про мальчик-девочек, просто очень похоже что тебе хочется странного. Если тебе нужно чтоб закодированная переменная из формы и в урла были одинаковы на сервере - нужно тогда в урле её раз ещё прогнать через rawurlencode.
Вот и не понятно зачем это может понадобиться
 

fixxxer

К.О.
Партнер клуба
внимание - правильный ответ
1. для значений параметров query_string надо делать rawurlencode
2. вообще всегда, если целью не является вывод raw html - надо делать htmlspecialchars с параметром ENT_QUOTES

весь флейм неплохо бы почикать.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху