PHP $ _POST заполняется неправильно

#php #post

#php #Публикация

Вопрос:

Итак, я отправляю некоторые формы на веб-сайт (через jQuery.post) и пытаюсь проанализировать результаты. Это работает для простых вещей, но в моей реальной форме многие значения заполняются строковыми нулями. Так, например, medicalProvider=MediCo становится $_POST['medicalProvider']="0" .

Эта страница отлично работает с более короткими строками POST, и раньше она отлично работала с этой точной формой, но я не трогал конфигурацию, поэтому я не знаю, в чем проблема.

Вот результаты readfile('php://input') и var_dump($_POST) , буквально первые две строки файла:

 // readfile('php://input'):
medicalProvider=MediCoamp;medicalPremium=7000amp;medicalOccurs=0amp;medicalKind=0amp;medicalEmpOnly=50amp;medicalEmpSpouse=0amp;medicalEmpDependant=0amp;medicalEmpFamily=0amp;medicalProvider=0amp;medicalPremium=0amp;dentalProvider=DentCoamp;dentalPremium=500amp;dentalOccurs=0amp;dentalKind=1amp;dentalEmpOnly=0amp;dentalEmpSpouse=2amp;dentalEmpDependant=0amp;dentalEmpFamily=0amp;dentalProvider=0amp;dentalPremium=0amp;longTermProvider=HappCoamp;longTermPremium=9000amp;longTermOccurs=1amp;longTermKind=2amp;longTermEmpOnly=0amp;longTermEmpSpouse=0amp;longTermEmpDependant=0amp;longTermEmpFamily=0amp;longTermProvider=0amp;longTermPremium=0amp;shortTermProvider=amp;shortTermPremium=amp;shortTermOccurs=amp;shortTermKind=amp;shortTermEmpOnly=amp;shortTermEmpSpouse=amp;shortTermEmpDependant=amp;shortTermEmpFamily=amp;shortTermProvider=amp;shortTermPremium=amp;lifeProvider=DeathCoamp;lifePremium=70000amp;lifeOccurs=1amp;lifeKind=4amp;lifeEmpOnly=80amp;lifeEmpSpouse=2amp;lifeEmpDependant=0amp;lifeEmpFamily=0amp;lifeProvider=0amp;lifePremium=0
//var_dump($_POST):
array(40) {
  ["medicalProvider"]=>
  string(1) "0"
  ["medicalPremium"]=>
  string(1) "0"
  ["medicalOccurs"]=>
  string(1) "0"
  ["medicalKind"]=>
  string(1) "0"
  ["medicalEmpOnly"]=>
  string(2) "50"
  ["medicalEmpSpouse"]=>
  string(1) "0"
  ["medicalEmpDependant"]=>
  string(1) "0"
  ["medicalEmpFamily"]=>
  string(1) "0"
  ["dentalProvider"]=>
  string(1) "0"
  ["dentalPremium"]=>
  string(1) "0"
  ["dentalOccurs"]=>
  string(1) "0"
  ["dentalKind"]=>
  string(1) "1"
  ["dentalEmpOnly"]=>
  string(1) "0"
  ["dentalEmpSpouse"]=>
  string(1) "2"
  ["dentalEmpDependant"]=>
  string(1) "0"
  ["dentalEmpFamily"]=>
  string(1) "0"
  ["longTermProvider"]=>
  string(1) "0"
  ["longTermPremium"]=>
  string(1) "0"
  ["longTermOccurs"]=>
  string(1) "1"
  ["longTermKind"]=>
  string(1) "2"
  ["longTermEmpOnly"]=>
  string(1) "0"
  ["longTermEmpSpouse"]=>
  string(1) "0"
  ["longTermEmpDependant"]=>
  string(1) "0"
  ["longTermEmpFamily"]=>
  string(1) "0"
  ["shortTermProvider"]=>
  string(0) ""
  ["shortTermPremium"]=>
  string(0) ""
  ["shortTermOccurs"]=>
  string(0) ""
  ["shortTermKind"]=>
  string(0) ""
  ["shortTermEmpOnly"]=>
  string(0) ""
  ["shortTermEmpSpouse"]=>
  string(0) ""
  ["shortTermEmpDependant"]=>
  string(0) ""
  ["shortTermEmpFamily"]=>
  string(0) ""
  ["lifeProvider"]=>
  string(1) "0"
  ["lifePremium"]=>
  string(1) "0"
  ["lifeOccurs"]=>
  string(1) "1"
  ["lifeKind"]=>
  string(1) "4"
  ["lifeEmpOnly"]=>
  string(2) "80"
  ["lifeEmpSpouse"]=>
  string(1) "2"
  ["lifeEmpDependant"]=>
  string(1) "0"
  ["lifeEmpFamily"]=>
  string(1) "0"
}
  

Комментарии:

1. Возникает ли у вас такая же проблема при использовании веб-страницы и публикации из реальной формы вместо использования метода ввода php: //?

2. Как выглядит HTML-форма?

Ответ №1:

medicalProvider устанавливается дважды. Если у вас одна и та же переменная POST (или GET) более одного раза, для нее устанавливается последняя.

Комментарии:

1. Верно, это определенно проблема. Спасибо.