2011-11-11 52 views
2

我網站的一部分要求用戶輸入網址,但萬一他們輸入的網址不正確,或者只是輸入一個不存在的網址,我的數據庫上就會記錄一條不好的記錄。如何檢查URL中是否有任何內容?

  • E.G在Chrome中,如果沒有在你的錯誤 消息「哎呀!谷歌瀏覽器無法找到fdsafadsfadsf.com」一個URL任何東西。 (這是我所指的情況)

這可以通過檢查URL來查看是否有任何東西來解決,我只能想到一個是在PHP文件中加載外部URL,然後解析它的內容。但我希望有一種方法不會給我的服務器帶來不必要的壓力。

還有什麼其他方法可以檢查某個URL是否有任何內容?

+0

404錯誤消息呢?這應該允許http://google.com/blahblahblah? –

回答

1

您可以使用PHP get_headers($url),這將在情況下返回false沒有一個答案

+1

PHP默認不使用'HEAD'請求!如果你想避免這種方法浪費帶寬,你需要調用'stream_context_set_default()',如本頁例2所示:http://php.net/manual/en/function.get-headers。 php – Brad

+0

我試過這個:'$ url =「http://hotmail.com」;如果(get_headers($ url)){\t echo「true」;}'但是如果沒有任何答案,我會得到一個錯誤消息而不是false。我究竟做錯了什麼? – lisovaccaro

+0

這是消息:'警告:get_headers()[function.get-headers]:php_network_getaddresses:getaddrinfo失敗:名稱或服務未知/ home/content2/6945202/html/justwalkit/test.php在第3行' – lisovaccaro

4

我只會提出HEAD請求。這將適用於大多數服務器,並避免下載整個頁面,所以它非常高效。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

所有你需要做的就是解析狀態代碼返回。如果是200,那麼你很好。

示例實現與捲曲的位置:http://icfun.blogspot.com/2008/07/php-get-server-response-header-by.html

+0

我嘗試了Curl方法,但它一直保持加載,我也嘗試了fsockopen(),這是博客給出的替代方案,但當網站沒有給出答案時,我收到一條警告消息。例如,如何用「無響應」來替換錯誤消息?謝謝 – lisovaccaro

+0

@ Liso22,您應該閱讀cURL文檔(http://www.php.net/manual/en/function.curl-setopt.php)。你需要設置'CURLOPT_TIMEOUT'和/或'CURLOPT_CONNECTTIMEOUT'。 – Brad

相關問題