Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Непонятные символы в строке браузере


Автор: GQU 20.3.2011, 16:39
Что означают подобные символы(%CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1) в строке браузера

Автор: KIRINDORF 20.3.2011, 16:43
Это друг мой, параметры, переданные методом GET.

И кстати, заголовки здесь ни при чем.

Автор: bars80080 20.3.2011, 16:54
это урл-кодированная строка. в стандартном наборе символов всего 256 позиций, при этом стандарт международный. поэтому любые символы, отличные данного набора, кодируются в сложную последовательность. кодированный символ начинается со знака %, а затем идёт его 16-ричный код

здесь у нас на кириллице "Отправить запрос"

Автор: GQU 20.3.2011, 17:16
Цитата(KIRINDORF @ 20.3.2011,  16:43)
Это друг мой, параметры, переданные методом GET.

И кстати, заголовки здесь ни при чем.

Некоторые параметры, переданные через GET мы видим, а некоторые нет, имею ввиду зашифрованы(как в данном случае)
Так что это за параметры, которые мы не видим?

А заголовки через что передаются ?

Автор: Muerto 21.3.2011, 14:48
думаю urldecode поможет

Автор: GQU 25.3.2011, 13:47
А вот правильно утверждать, что если на форме есть кнопка type='submit' и нажата эта кнопка, то должна быть строка %CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1  ?

Автор: bars80080 25.3.2011, 14:37
Цитата(GQU @  25.3.2011,  12:47 Найти цитируемый пост)
А вот правильно утверждать, что если на форме есть кнопка type='submit' и нажата эта кнопка, то должна быть строка %CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1  ? 

нет

Автор: GQU 25.3.2011, 15:28
А когда эта строка появляется ?

Автор: gta4kv 25.3.2011, 15:35
когда у вашей формы method=get

Автор: GQU 25.3.2011, 15:40
1 условие(метод GEt  и все ?)
Тогда тут почему её нет
Код

<html>
<head><title></title></head>
<body>
<form method="" action="exam.php">
<input type="hidden" name="ed">
<table border="1">
<?php
$student = array("Альберт Эйнштейн","Иван Грозный","Наполеон","Саймон
Боливар","Исаак Ньютон");
while (list(,$name) = each($student))
{
echo "<tr><td>Какую оценку по математике получил <b>$name</b>?</td>";
echo "<td><select name='math[]'>
<option>A</option>
<option>B</option>
<option>C</option>
<option>D</option>
<option>F</option>
</select>";
echo "</td>";
echo"<input type='hidden' name='student[]' value='$name'>";
echo "</tr>";
}
?>
<tr><td>&nbsp;</td><td>
<input type="submit" value="Показать оценки">
</td></tr>
</form>
</table>
<?php
if (isset($_['ed'])) {
?>
<hr>
<table border="1">
<tr><td colspan="2">
Оценки по математике расположены в следующем порядке:
</td></tr>
<?php
while (list($index,$value)=each($_['math']))
{
$gradestudent[]=$_['math'][$index].$_['student'][$index];
}
asort($gradestudent);
while (list($index)=each($gradestudent))
{
$student_index = $_['student'][$index];
$math_index = $_['math'][$index];
echo
"<tr><td><b>$student_index</b></td><td>$math_index</td></tr>";
}
}
?>
</table>
</body>
</html>


Автор: KIRINDORF 25.3.2011, 16:19
Цитата(GQU @  25.3.2011,  15:40 Найти цитируемый пост)
<form method="" action="exam.php">

метод передачи всегда должен быть указан. Всегда.

Так должно быть:
Код

<form method="GET" action="exam.php">


Обрати внимание, тебе уже на это указали:
Цитата(gta4kv @  25.3.2011,  15:35 Найти цитируемый пост)
когда у вашей формы method=get

Автор: GQU 25.3.2011, 16:28
Цитата

Обрати внимание, тебе уже на это указали:

Не заметил просто что там не было
Но все равно нет там этой строчки !(%CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1)

Автор: patap 25.3.2011, 16:37
а откуда ей там взяться? 

все что в форме имеет атрибут name, то и передается

Автор: GQU 25.3.2011, 16:57
НУ ДОПУСТИМ ввели мы 
Код

<input name='button' type='submit'>

появилась строка %CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1
а почему это не работает
Код

<?php
echo  iconv("UTF-8","WINDOWS-1251" , urldecode('%CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1'));
?>

Не то что не работает, в ответе ничего нет
а если так сделать
Код

<?php
echo  iconv("UTF-8","WINDOWS-1251" , urldecode('%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C'));
?>

то работает ?

Автор: patap 25.3.2011, 17:08
опа, откуда iconv() появилась? 
или это нужно в контексте понимать, что ты ей пользуешься? 

что тебе нужно в итоге получить?

Добавлено через 9 минут и 53 секунды
если указываешь в iconv() входящую кодировку как UTF, то и передаваемая строка должна быть в utf

Автор: GQU 25.3.2011, 17:20
Почему строка %CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1 не отображается с помощью iconv() ?

Автор: gta4kv 25.3.2011, 17:28
а она и не должна...

Автор: patap 25.3.2011, 17:29
потому, что urldecode() возвращает тебе строку в cp1251, затем ты пытаешься конвертировать кодировку строки, из utf-8 в cp1251, при этом указываешь функции, что входная строка имеет кодировку utf-8 (что совсем не так) в итоге получаешь пустую строку.

Автор: KIRINDORF 25.3.2011, 17:37
Цитата(patap @  25.3.2011,  17:08 Найти цитируемый пост)
если указываешь в iconv() входящую кодировку как UTF, то и передаваемая строка должна быть в utf 
 это очень серьезное замечание, почему не прислушиваешся?


это не работает:
Код

echo  iconv("UTF-8","WINDOWS-1251" , urldecode('%CE%F2%EF%F0%E0%E2%E8%F2%FC+%E7%E0%EF%F0%EE%F1'));
а это работает:
Код

echo  iconv("UTF-8","WINDOWS-1251" , urldecode('%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C'));
потому что дело в кодировках страницы выполнения. Измени и все будет ровно наоборот.

Еще раз, дело в кодировке страницы выполнения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)