Kategoriler
Kodlama

Bir URL’in durum kodunu sorgulamak (PHP)

PHP ile bir URL’in HTTP durum kodunu getirip ona göre fonksiyon yazmak.

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.