我目前有一個這樣的系統:PHP - 域到IP
插入IP,它會將IP張貼到另一個.php頁面。但是,當我嘗試發佈http://google.com時,它不會將域轉換爲IP。
我該怎麼做?例如。當用戶插入http://google.com或任何域時,它將自動解析IP。
我知道函數gethostbyadd,我不知道如何構造它,例如表格,表格,發佈數據。
謝謝,如果有任何幫助。
我目前有一個這樣的系統:PHP - 域到IP
插入IP,它會將IP張貼到另一個.php頁面。但是,當我嘗試發佈http://google.com時,它不會將域轉換爲IP。
我該怎麼做?例如。當用戶插入http://google.com或任何域時,它將自動解析IP。
我知道函數gethostbyadd,我不知道如何構造它,例如表格,表格,發佈數據。
謝謝,如果有任何幫助。
你有什麼在一起這麼遠嗎?它如何失敗?
一個瘋狂的猜測是,你輸入http://google.com/並試圖從中獲得一個IP,這將失敗,因爲URL也包含協議信息。您需要通過域名,只有域名到的gethostbyname:
gethostbyname('www.google.com'); // Works
gethostbyname('http://www.google.com'); // Will not work
如果你有協議部分(HTTP://)在開始的時候,你可以用parse_url:
gethostbyname(parse_url('http://www.google.com', PHP_URL_HOST));
如果您有其他具體問題,請告訴我們。如果你不知道從哪裏開始,我建議通過在編程手冊讀了啓動;)
這不僅是谷歌,它取決於他所放置的任何URL的人。我需要一個自動將域名解析爲IP的簡單表單。 – Ray 2010-09-30 12:58:16
我認爲你正在尋找gethostbyname
:
$ip = gethostbyname('www.google.com');
注意,一定要剝去HTTP ://和任何空格/尾隨字符,因爲這可能會阻止準確的結果。
在某些人中,功能gethostbyname
運行緩慢或運行一段時間。有人說apache需要重啓以啓動功能。我無法證實這一點,但我想給一個替代方法是如何通過域名使用使用XHProf的nslookup
function getAddrByHost($host, $timeout = 1) {
$query = `nslookup -timeout=$timeout -retry=1 $host`;
if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
return trim($matches[1]);
}
echo getAddrByHost('example.com');
速度測試,以找出IP:
嘗試1
的gethostbyname 5014593微秒
getAddrByHost 29,656 microsec
嘗試2
的gethostbyname 5016678微秒
getAddrByHost 13887微秒
嘗試3
的gethostbyname 5014640微秒
getAddrByHost 8297微秒
結論:函數的gethostbyname
執行超過5秒鐘,這是非常長的。因此,我建議你使用更快的功能getAddrByHost
注:PHP中使用這個文件/etc/resolv.conf
獲得DNS服務器:
在我來說,我使用BIND(命名),它在主機127.0.0.1工作
# /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 4.4.4.4
這是一個已被標記爲刪除的低質量答案。請在代碼之外添加信息,以幫助請求者瞭解此解決方案的工作原理以及未來訪問者的問題。 – JNevill 2017-09-13 15:43:10
怎麼樣顯示你已經得到了什麼。 – 2010-09-30 12:53:49
這裏是代碼:http://pastebin.com/E7s57Eak – Ray 2010-09-30 12:56:31