« ポートレイト: 松本あやかさん 8 その3 | メイン | ポートレイト: 松本あやかさん 8 その4 »

2013年2月18日

get_headersはURLにアクセスしてステータスを得ている。 >>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この記事をTwitterでみんなに教える。

投稿者 debizoh : 2013年2月18日 20:08



トラックバック

現在、この記事はトラックバックを受け付けておりません。


コメント

現在、この記事はコメントを受け付けておりません。