다음 HTML / PHP 페이지가 있습니다.
<?php
if(empty($_SERVER['CONTENT_TYPE'])) {
$type = "application/x-www-form-urlencoded";
$_SERVER['CONTENT_TYPE'] = $type;
}
echo "<pre>";
var_dump($_POST);
var_dump(file_get_contents("php://input"));
echo "</pre>";
?>
<form method="post" action="test.php">
<input type="text" name="test[1]" />
<input type="text" name="test[2]" />
<input type="text" name="test[3]" />
<input type="submit" name="action" value="Go" />
</form>
보시다시피, 양식이 제출되고 예상 출력은 채워진 값을 포함하는 하나의 배열과 값 "Go"(단추)가있는 "action"항목이있는 POST 배열입니다. 그러나 필드에 어떤 값을 입력하더라도 결과는 항상 :
array(2) {
["test"]=>
string(0) ""
["action"]=>
string(2) "Go"
}
string(16) "test=&action=Go&"
어쨌든 test라는 배열이 비워지고 "action"변수가이를 통과시킵니다.
Firefox 용 Live HTTP 헤더 확장을 사용하여 POST 필드가 제출되는지 여부를 확인했습니다. 라이브 HTTP 헤더의 관련 정보 (텍스트 상자의 값으로 a, b 및 c가 채워짐) :
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
test%5B1%5D=a&test%5B2%5D=b&test%5B3%5D=c&action=Go
왜 이런 일이 일어나고 있는지 아는 사람이 있습니까? 나는 이것에 대해 깜짝 놀랐다. 그것은 이미 너무 많은 시간이 들었다.
최신 정보:
우리는 다른 서버, Windows 상자에서 작동하지만 PHP 버전 5.2.4 (수호신 포함)의 Ubuntu 서버에서는 작동하지 않습니다. 심지어 Ubuntu 및 동일한 PHP 버전과 Suhosin이 설치된 다른 서버에서도 작동합니다.
두 파일을 비교했습니다.이 출력 ( diff php.ini phps.ini
)입니다.
270c270
< memory_limit = 32M
---
> memory_limit = 16M ; Maximum amount of memory a script may consume (16MB)
415c415
< variables_order = "EGCSP"
---
> variables_order = "EGPCS"
491d490
< include_path = ".:"
1253a1253,1254
> extension=mcrypt.so
>
여기서 phps.ini는 그것이 작동하는 서버의 것이고 php.ini는 현재의 것입니다. 여기서 문제가없는 것 같습니다.