2010-07-30 3 views
0

У меня есть форма, и выводит это в сообщение:

<?php print file_get_contents('php://input'); ?> 

% 2Ffaults% 2Ffault% 5B1% 5D% 2F% 40signal = gnc.gnc_in.ttag_sec & % 2Ffaults% 2Ffault% 5B1% 5D = приращение &% 2Ffaults% 2Ffault% 5B1% 5D% 2Fboolean% 2F% 40value = ложно &% 2Ffaults% 2Ffault% 5B1% 5D% 2Fincrement% 2F% 40value = 6677 &% 2Ffaults% 2Ffault% 5B1% 5D% 2Fthreshold% 2F% 40condition = &% 2Ffaults% 2Ffault% 5B1% 5D% 2Fthreshold% 2F% 40value = &% 2Ffaults% 2Ffault% 5B1% 5D% 2Ftimestamp% 2F% 40value =

После urldecoded:

/faults/fault[1]/@signal=gnc.gnc_in.ttag_sec 
/faults/fault[1]=increment 
/faults/fault[1]/boolean/@value=false 
/faults/fault[1]/increment/@value=6677 
/faults/fault[1]/threshold/@condition= 
/faults/fault[1]/threshold/@value= 
/faults/fault[1]/timestamp/@value= 

Однако, когда я смотрю в $ _POST, что я получаю:

<?php print_r($_POST); ?> 
Array ([/faults/fault] => Array ([1] =>)) 

Как вы можете видеть, справедливый бит отсутствует из этого массива. Любые идеи почему?

Спасибо.

+1

Это потому, что это не данные формы. – Fosco

+1

Данные формы. Я ввел его в форму и нажал submit. Почему это не форма данных? – Peter

ответ

0

PHP задыхается от [1] в имени переменной, которое, по-видимому, интерпретируется как элемент массива.

Я не думаю, что это допустимые имена полей в HTML в любом случае?

В зависимости от того, что вы хотите сделать, я бы избавился от [1] или поместил его в конец каждого имени переменной, что должно привести к множеству массивов, чей первый элемент содержит требуемое значение.

Что-то вроде этого

faults/fault[1]/@signal=gnc.gnc_in.ttag_sec<br> 
/faults/fault[1]=increment&/faults/fault[1]/boolean/@value=false<br> 
/faults/fault/increment/@value[1]=6677<br> 
/faults/fault/threshold/@condition[1]=<br> 
/faults/fault/threshold/@value[1]=<br> 
/faults/fault/timestamp/@value[1]/=<br> 
+2

Они являются допустимыми именами полей (не ids, но имена прекрасны), а обработка элементов управления формами с помощью '[foo]' в имени - это обычное поведение синтаксического анализа формы PHP. – Quentin

+1

Не только нормальный, но и полезный, например, '