これは質問というより警告ですが、誰かがより良い解決策を提供できるかもしれません。
Android アプリケーションからカスタム リクエスト ヘッダーを送信しています。リクエストが PHP サーバーに届くと、このヘッダーとその値の存在を確認します。これを行うには、 でヘッダー配列を取得し、 でヘッダーapache_request_headers()
のチェックを行いarray_key_exists()
ます。
ただし、falsearray_key_exists('custom-header', $Hdr)
を返します! したがって、配列をprint_rでダンプすると、見よ、配列キーが配列に存在します。出力は次のとおりです。
Array
(
[Accept-Encoding] => gzip
[Connection] => Keep-Alive
[Content-Type] => application/x-www-form-urlencoded
[Content-Length] => 103
[Host] => www.somedomain.com
[custom-header] => my-custom-header-value
)
どうやってこれを回避しましたか?
次のように配列を複製します。
// recuperate the request headers
$Hdr = apache_request_headers();
// clone the array as it will not correctly search with array_key_exists
$Keys = array_keys($Hdr);
$Values = array_values($Hdr);
$Headers = array();
for($i = 0; $i < count($Keys); $i++)
{
$Headers[$Keys[$i]] = $Values[$i];
}
で新しい配列をクエリするとarray_key_exists('custom-header', $Headers)
、 true が返されます!
これは既知の問題ですか?
より良い解決策はありますか?
注:コードを保護するために実際の値の名前を変更しました。これは例としてここに示されています-これらの値の修正を投稿しないでください:-)
編集:これは、Apache バージョン 2.2.22 で PHP バージョン 5.3.10 を実行している共有サーバーで発生します。