PHP’de bir URL’i daha sonra kullanmadan önce verdiği HTTP durum koduna göre ayrıştırmak için get_headers
fonksiyonu kullanılabilir, bu PHP 7 ve sonrasında kullanıma sunuldu, öncesi için alternatif $http_response_header
.
Bu iş online olarak en iyi yapan web sitesi: httpstatus.io
Örnek kod:
/* URL header OK? */
function urlIsOk($URL){
$headers = @get_headers($URL);
$httpStatus = intval(substr($headers[0],9,3));
if ($httpStatus<400){
return true;
}
return false;
}
Kullanım:
$file = 'https://wolkanca.com/';
if ( urlIsOk($file) ){
echo $file.' çalışıyor';
}else{
echo $file.' çalışmıyor';
}
Örnek olarak verdiğim kod HTTP durumu 400 ve üzerinde ise false, altında ise true döndürür.
Ayrıca ek olarak işinize yarayabilecek bir ipucu da file_get_contents ile getireceğiniz dosyaya GET olarak gönderdiğiniz sorgunun belirleyeceğiniz bir User-Agent ve veya Cookie ile yapmak için stream_context_create
fonksiyonunu kullanabilirsiniz, örnek aşağıdaki gibi:
$URL = "";
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: tr\r\n" .
"Cookie: wolkanca=OK\r\n" .
"User-Agent: wolkanca"
)
);
$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
Tabi stream_context_create ile farklı kendinize özel header bilgileri de gönderebilirsiniz ve getirilecek dosya/url güvenliğini üst düzeye çıkarmış olursunuz, mesela ilgili url’in sadece sizin bildiğiniz header ile istendiği taktirde çalışması, veya istenen yere, konuma, referansa göre yönlendirilmesi vs. gibi. Bunlar güzel şeyler 🙂 Kolay gelsin.