PHP の cURL 関数を使って、URLを検証する。
###利用シーン
外部のサイトにリダイレクトする前、遷移先のURLが問題なくアクセスできるかを確認する。
問題あれば、リダイレクトせず内部のエラーページに遷移することによって、UXを向上することを目指す。
####例
※ curl_setoptで、cURL 転送用オプションを設定する。
function CheckUrl($url) {
//cURL セッションを初期化する
$ch = curl_init($url);
// TRUE を設定すると、curl_exec() の返り値を文字列で返す。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// FALSE を設定すると、cURL はサーバー証明書の検証を行いません。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//cURL 関数の実行にかけられる時間の最大値。
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
//接続先がUser-Agentが必要な場合、HTTP リクエストで使用される User-Agentを指定しないと、
//500エラーが帰ってくるので、ダミー値を入れて確認する方法もある。
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) xxxxxxxx xxxxxxxxxxx');
//TRUE を設定すると、HTTP で 400 以上のコードが返ってきた際に 処理失敗と判断します。
curl_setopt($ch, CURLOPT_FAILONERROR, true);
// URL を取得し、ブラウザに渡します
curl_exec($ch);
//接続問題なければ curlErrorNoが0を返す
$curlErrorNo = curl_errno($ch);
// cURL リソースを閉じ、システムリソースを解放します
curl_close($ch);
if($curlErrorNo != 0){
return false;
}
return $url;
}