2015-08-27 92 views
0

我有這樣的代碼:如何知道一個網站重定向到其他

<?php 

function ping($host, $port, $timeout) { 
    $tB = microtime(true); 
    $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 

    if (!$fP) { 
     return "down"; 
    } 

    $tA = microtime(true); 

    return round((($tA - $tB) * 1000), 0)." ms"; 

} 

呼應的結果將顯示任一「下」,如果主機不可達或平的結果,如果它是。

echo ping("fernando.ki2.co", 80, 10); 

?> 

如果ping重定向到/404.html文件,我需要寫入。如果沒有,則採用子域名;如果是,子域是免費的。

任何人都可以幫助我嗎?

+0

的Ping僅當服務器是活動的檢查。沒有可用的內容iirc –

+0

'fSockOpen'不能被「重定向」,因爲它使用的是IP,而不是HTTP。即使您使用HTTP協議,您也要監視404狀態*,無論頁面重定向到哪個URL,因爲不同的服務器可能會返回不同的響應。 – Amadan

回答

0

這樣你就無法獲得http狀態碼。

但是,您可以使用cURL。

http://php.net/manual/en/book.curl.php

這將讓PHP直接使一個HTTP請求到遠程服務器。請求發出後,您可以分析返回的數據,狀態碼和其他所有內容。

這個例子說明如何獲取狀態代碼:

<?php 

$ch = curl_init("http://www.example.com/"); 

curl_setopt($ch, CURLOPT_HEADER, 0); 

curl_exec($ch); 
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE) 

echo $http_code; 

?> 
+0

儘管他稱他的功能爲'ping',但它並沒有進行真正的ping。它打開一個TCP連接,不使用ICMP Echo。 – Barmar

+0

@Barmar的確如此!我有正確的答案,謝謝! – Marcovecchio

相關問題