2009年8月16日日曜日

PHPでPOSTデータが失われる。

最近の話で送信されてきたリクエストが途中で切れてしまい、 POSTデータの一部が失われてしまうという現象にぶちあたりまし た。一瞬それは無いだろうと思ってましたが、携帯のパケット通信 の場合とかはおおいにありうるな。 ただ、POSTデータが途中でどう切れてしまっているのかはサーバ側で は全然わからない。正常かもしれんし、切れてしまっているかも しれん。。。 て事をうんうん唸った結果リクエストのヘッダと生POSTが取得でき るのが判ったので、HEADERのContent-Lengthとサイズ比較 をする事に。
$headers = apache_request_headers(); // <- リクエストのヘッダ
$postStr = file_get_contents('php://input'); // <- POSTデータ
if($headers['Content-Length'] != strlen($postStr)){
  echo 'bad post data';
}
ここではechoだけど、システムではクライアントには異常を通知 してリトライなりエラーなりをしてもらう事になります。 これはまた違う機会で使うかもしれんので忘れずに覚えとこう。 因みに実験中にIE7でリクエストのヘッダにContent-Lengthが 含まれていないように見えたのは見間違えだろうか。。。

0 件のコメント :

コメントを投稿