私は次のことに少し困惑しています。この例のエラーチェックコードは削除しました...
私はPHP 5.4.14を実行していて、PHPサーバーを使用しています...
編集: Álvaro の助けのおかげで、PHP 開発サーバーに実際にアクセスすることが問題であることがわかりました$HTTP_RAW_POST_DATA
が、何らかの理由で$_POST
.
フォームの送信ボタンをクリックすると呼び出される JavaScript のスニペット (実際のコードから取得し、ここでは簡略化) は...
xmlhttp = new XMLHttpRequest();
<snip>
params =
"forename=" + encodeURIComponent(form.forename.value) + "&" +
"surname=" + encodeURIComponent(form.surname.value) + "&" +
"nonce=" + encodeURIComponent(form.nonce.value);
<snip>
xmlhttp.open("POST", url, false);
<snip>
if (xmlhttp.overrideMimeType)
{
xmlhttp.overrideMimeType('text/html');
}
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
alert(params);
xmlhttp.send(params);
から、alert
パラメーターが問題ないことがわかります。
その後、POST 要求はスクリプトに正しくヒットしますが、$_REQUEST
配列のエラー ログ (および$_POST
) によって空の配列が返されます。$_REQUEST/_POST
スクリプトを入力するとすぐに、のエラー ログが作成されます。
私のスクリプトが応答し、javascript が応答を取得できます...しかし、もちろん、私のスクリプトが返すことができるのはエラー コードだけです...おお。
なぜこれが当てはまるのでしょうか?
編集: Álvaro G. Vicario のこれまでの支援に感謝します。これで、リクエストが実際にブラウザを正常に終了していることがわかります。
Request URL:http://localhost:8000/php_database/search_member.php
Request Method:POST
Status Code:200 OK
Request Headers
POST /php_database/search_member.php HTTP/1.1
Host: localhost:8000
Connection: keep-alive
Content-Length: 69
Origin: http://localhost:8000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Content-type: application/x-www-form-urlencoded
Accept: */*
Referer: http://localhost:8000/php_database/db_search.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=954ebbfadb841ef659a3961a44d715871bdedbaa
Form Data
forename=ss&surname=dd&nonce=6c3e75f500dffdbfefe95d91710432dd8fd23fab
Response Headers
HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/5.4.14
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/xml
PHP スクリプトが実行されます...スクリプトの最初の 2 行は...
<?php
$DEBUG = TRUE;
if($DEBUG){ error_log("\n\n\n", 0); error_log("\n\n> SEARCH MEMBER SCRIPT", 0); }
error_log(print_r($_REQUEST, TRUE), 0);
出力をログに記録する...
> SEARCH MEMBER SCRIPT
[Mon May 27 15:42:22 2013] Array
(
)
に別のプリントを追加する$_POST
と、同じ...
... コメントに従って、スクリプトにいくつかのグローバルを出力させると...
私は次のことを得る
array(0) {
}
array(0) {
}
array(0) {
}
array(25) {
["DOCUMENT_ROOT"]=>
string(7) "C:\TJJT"
["REMOTE_ADDR"]=>
string(3) "::1"
["REMOTE_PORT"]=>
string(5) "59543"
["SERVER_SOFTWARE"]=>
string(29) "PHP 5.4.14 Development Server"
["SERVER_PROTOCOL"]=>
string(8) "HTTP/1.1"
["SERVER_NAME"]=>
string(9) "localhost"
["SERVER_PORT"]=>
string(4) "8000"
["REQUEST_URI"]=>
string(31) "/php_database/search_member.php"
["REQUEST_METHOD"]=>
string(4) "POST"
["SCRIPT_NAME"]=>
string(31) "/php_database/search_member.php"
["SCRIPT_FILENAME"]=>
string(38) "C:\TJJT\php_database\search_member.php"
["PHP_SELF"]=>
string(31) "/php_database/search_member.php"
["HTTP_HOST"]=>
string(14) "localhost:8000"
["HTTP_CONNECTION"]=>
string(10) "keep-alive"
["HTTP_CONTENT_LENGTH"]=>
string(2) "75"
["HTTP_ORIGIN"]=>
string(21) "http://localhost:8000"
["HTTP_USER_AGENT"]=>
string(108) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36"
["HTTP_CONTENT_TYPE"]=>
string(33) "application/x-www-form-urlencoded"
["HTTP_ACCEPT"]=>
string(3) "*/*"
["HTTP_REFERER"]=>
string(48) "http://localhost:8000/php_database/db_search.php"
["HTTP_ACCEPT_ENCODING"]=>
string(17) "gzip,deflate,sdch"
["HTTP_ACCEPT_LANGUAGE"]=>
string(14) "en-US,en;q=0.8"
["HTTP_COOKIE"]=>
string(50) "PHPSESSID=b1e2eb2ba3d687bfeadee6bc17e1b994c214cd3a"
["REQUEST_TIME_FLOAT"]=>
float(1369666751.2246)
["REQUEST_TIME"]=>
int(1369666751)
}
string(75) "forename=xfvz&surname=zxcvzx&nonce=276083038fdd9a932ff06b94e5786fdd840873a4"
上記の一番下にはっきりと見えます...
string(75) "forename=xfvz&surname=zxcvzx&nonce=276083038fdd9a932ff06b94e5786fdd840873a4"
わお。したがって、$HTTP_RAW_POST_DATA
は実際には PHP 開発サーバーにヒットします... しかし、何らかの理由で、 を生成するために使用されません$_POST
。