« ポートレイト: 松本あやかさん 8 その3 | メイン | ポートレイト: 松本あやかさん 8 その4 »
2013年2月18日
get_headersはURLにアクセスしてステータスを得ている。 >>PHP
えーと、これは・・・と思うコードに当たりましたので、一言書いておきます...。
get_headers、これはHTTPステータス、Headerを取得します。
よく考えましょう・・・。「ヘッダが取得できるっていうことはWebサーバにアクセスしてる」っていうことですね? そうでなければ、何をしてHTTP Statusを取得しているのでしょうか。
何かしら外部からパラメータをサーバに投げるなどの処理をする場合2回URLを叩いてることになります。ということで、こういう書き方、動かし方はしちゃいけない悪コード例、ということになります。
http://php.net/manual/ja/reserved.variables.httpresponseheader.php
エラーハンドリングについては.....おしらべください。。。
get_headers、これはHTTPステータス、Headerを取得します。
よく考えましょう・・・。「ヘッダが取得できるっていうことはWebサーバにアクセスしてる」っていうことですね? そうでなければ、何をしてHTTP Statusを取得しているのでしょうか。
何かしら外部からパラメータをサーバに投げるなどの処理をする場合2回URLを叩いてることになります。ということで、こういう書き方、動かし方はしちゃいけない悪コード例、ということになります。
$data = http_build_query($params);
$header = Array("Content-Type: application/x-www-form-urlencoded");
$options = array('http' => Array(
'method' => $method,
'header' => implode("\r\n", $header),
));
//ステータスをチェック / PHP5専用 get_headers()
$respons = get_headers($url);
if(preg_match("/(404|403|500)/",$respons['0'])){
return false;
}
if($method == 'GET') {
$url = ($data != '')?$url.'?'.$data:$url;
}elseif($method == 'POST') {
$options['http']['content'] = $data;
}
$content = file_get_contents($url, false, stream_context_create($options));
return $content;
対処としては、 file_get_contentsだけにして、$http_response_headerを評価するなど。http://php.net/manual/ja/reserved.variables.httpresponseheader.php
エラーハンドリングについては.....おしらべください。。。
トラックバック
現在、この記事はトラックバックを受け付けておりません。
コメント
現在、この記事はコメントを受け付けておりません。
この記事をTwitterでみんなに教える。