русские буквы в ключе имени поля формы

DiMA

php.spb.ru
Команда форума
русские буквы в ключе имени поля формы

Есть форма с кучей полей, названия - массив $info. Все передается, а вот с "в" баги:

<input type=text name="info[...]" value="33" class=itxt style='width:400px'>
<input type=text name="info[в]" value="123" class=itxt style='width:400px'>
<input type=text name="info[...]" value="44" class=itxt style='width:400px'>


print_r($_REQUEST) и $_POST показывают:

'info' =>
array (
...
0 => '123',
...
)

Если на странице показа этой отладки нажать F5, потом согласится на вопрос об устареванни данных, то уже будет показываться нормально - 'в'=>'123'. Еще пообновлять - опять число нуль, вместо строки "в". Зависимости как-то не видать. Хде хлюки?
 

garlian

Новичок
Всё работает, можешь даже сам убедиться :)
<?
print_r($_REQUEST);
?>
<html>
<form action=<? echo $_SERVER['PHP_SELF']; ?> POST='GET'>
<input type=text name="info[а]" value="33" class=itxt style='width:400px'>
<input type=text name="info[в]" value="123" class=itxt style='width:400px'>
<input type=text name="info[б]" value="44" class=itxt style='width:400px'>
<input type=submit name="" value="sub" style='width:400px'>
</form>
</html>
 

Crys

Двинутый новичок
garlian
Ты хоть сам понял, что написал?

-~{}~ 18.04.07 17:12:

DiMA
Может у тебя где-то эти данные перебиваются?
Можешь локализовать ошибку?
 

DiMA

php.spb.ru
Команда форума
PHP:
<? 
echo "<xmp>";
var_export($_REQUEST);
echo "</xmp> ---- <br>";
echo file_get_contents("php://input");
echo "<br> ---- <br>";
echo urldecode(file_get_contents("php://input"));
echo "<br>
<form action='' method=post>";
$text="йцукенгшщзхъфывапролджэячсмитьбюёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ";
for ($i=0; $i<strlen($text); $i++) {
    echo "<input type=text name='info[$text[$i]]' value='$text[$i]' size=1> ";
}
echo "
<input type=submit value='go'>
</form>";
phpinfo(); 
?>
выдает


array (
'info' =>
array (
'й' => 'й',
0 => 'ц',
'у' => 'у',
1 => 'к',
'е' => 'е',
'н' => 'н',
'г' => 'г',
'ш' => 'ш',
'щ' => 'щ',
2 => 'з',
'х' => 'х',
'ъ' => 'ъ',
'ф' => 'ф',
'ы' => 'ы',
'в' => 'в',
'а' => 'а',
'п' => 'п',
'р' => 'р',
'о' => 'о',
'л' => 'л',
'д' => 'д',
'ж' => 'ж',
'э' => 'э',
'я' => 'я',
'ч' => 'ч',
3 => 'с',
4 => 'м',
'и' => 'и',
'т' => 'т',
'ь' => 'ь',
'б' => 'б',
5 => 'ю',
'ё' => 'ё',
'Й' => 'Й',
'Ц' => 'Ц',
6 => 'У',
'К' => 'К',
'Е' => 'Е',
'Н' => 'Н',
'Г' => 'Г',
'Ш' => 'Ш',
'Щ' => 'Щ',
7 => 'З',
8 => 'Х',
9 => 'Ъ',
'Ф' => 'Ф',
10 => 'Ы',
11 => 'В',
'А' => 'А',
12 => 'П',
'Р' => 'Р',
13 => 'О',
14 => 'Л',
'Д' => 'Д',
'Ж' => 'Ж',
'Э' => 'Э',
'Я' => 'Я',
'Ч' => 'Ч',
15 => 'С',
16 => 'М',
'И' => 'И',
'Т' => 'Т',
'Ь' => 'Ь',
'Б' => 'Б',
17 => 'Ю',
'Ё' => 'Ё',
),
)
----
info%5B%E9%5D=%E9&info%5B%F6%5D=%F6&info%5B%F3%5D=%F3&info%5B%EA%5D= ...
----
info[й]=й&info[ц]=ц&info[у]=у&info[к]=к&info[е]=е&info[н]=н&info[г]=г&info[ш]=ш&info[щ]=...


Т.о. браузер данные передает исправно, сам пхп и выводит на экран. При обновлении херится случайным образом другой набор переменных. Вариантов таких наборов не много, штук 5 наверно. Т.е. не полностью случайно. Варианта без глюков при таком кол-ве переменных уже нет.

Если сделать так:
for ($i=0; $i<strlen($text); $i++) {
echo "<input type=text name='info[$text[$i]$text[$i]]' value='$text[$i]$text[$i]' size=1> ";
}
или использовать английские ключи массива [a..z] - то уже ничего не херится.

В общем, пойду поставлю другую версию пхп. Как обычно :)
 
Сверху