經典:10個重要的PHP網路資訊函數說明

來源:互聯網
上載者:User

PHP與網頁結合得如此緊密,以致於很容易忘記這種語言還可用來執行其它功能——資料加密、視窗應用與介面編程就是其中三個例子。既然網路編程是大多數開發人員最可能遇到麻煩的領域,所以值得花時間來瀏覽一下PHP的內建網路函數,瞭解它們提供的功能,以及它如何協助您完成下一個項目。

下表(表A)中列出了PHP中的10個最有趣、最有用的網路函數,它是您瞭解PHP網路編程功能的起點,並為您進入多數網路開發人員通常並未涉及的領域提供啟示。每個函數都有說明與用法執行個體,為您說明在何時,該怎樣應用這些函數。

 函數  說明  執行個體
 

getmxrr

($hostname,

$mxhosts)

 該函數用來恢複某個特定主機的MX(郵件交換記錄)主機名稱。

用這個函數來確認某個域的郵件主機,通常以驗證那個域上的一個郵箱開始。

 代碼:

<?php

$hosts = array();

$ret = getmxrr

('techrepublic.com', $hosts);

if ($ret) {

print_r($hosts);

} else {

echo 'MX retrieval failed';

}

?>

 

輸出:

Array (

[0] => c10-mail.cnet.com

[1] => c12-mail.cnet.com

)

 gethostbyaddr
($ip)
 該函數用來恢複與一個IP有關的主機名稱。
用此函數執行一個逆DNS尋找,把一個名稱給某個IP地址——如記錄您的網路伺服器日誌的IP地址。

 代碼:
<?php
echo gethostbyaddr
('216.239.115.148');
?>

輸出:
c10-sha-redirect-
lb.cnet.com

 gethostbyname
($name)
 該函數與gethostbyaddr()函數互逆,恢複與主機有關的IP地址。
用此函數執行一個標準的DNS尋找,獲得與IP地址有關的主機名稱——例如自動將有疑點的域列入黑名單時。

 代碼:
<?php
echo gethostbyname
('techrepublic.com');
?>

輸出:
216.239.115.148

 p2long($ip)

long2ip($long)
 這些函數將由符號串連的四個小於255的數字代表的IP地址轉換成整數,或進行逆操作。
在您需要用整數格式表示IP地址(通常用於數字計算),或用IP地址表示數字格式時,應用這些函數。

 代碼:
<?php
echo ip2long
('216.239.115.148');
echo long2ip(-655395948);
?>

輸出:
-655395948
216.239.115.148

 checkdnsrr
($host, $type)
 該函數在DNS中檢查與$host主機相符的$type類型記錄,如發現,即返回布爾真值。
用此函數檢查主機中是否存在某個特定的DNS記錄類型。

 代碼:
<?php
$ret = checkdnsrr
('techrepublic.com', SOA);
if ($ret) {
echo 'SOA records
exist for host';
} else {
echo 'SOA records do
not exist for host';
}
?>

輸出:
SOA records exist for host

 dns_get_record
($host, $type)
 該函數返回$host主機的DNS記錄。可選的$type參數只可用來恢複那些與一個特定的類型匹配的子集。
用此函數恢複某個特殊主機的詳細DNS記錄。

 代碼:
<?php
$data = dns_get_record
('techrepublic.com');
print_r($data);
?>

輸出:
Array
(
[0] => Array
(
[host] =>
techrepublic.com
[type] => MX
[pri] => 500
[target] =>
c10-mail.cnet.com
[class] => IN
[ttl] => 10756
)
[1] => Array
(
[host] =>
techrepublic.com
[type] => NS
[target] =>
ns3.cnet.com
[class] => IN
[ttl] => 7885
)
)

 getprotobyname
($num)

getprotobynum
($name)
 這些函數從泛系統/etc/protocols檔案中恢複協議名稱與號碼。
用這些函數根據名稱或號碼來恢複系統協議資訊。


代碼:
<?php
echo getprotobyname(81);
echo getprotobyname
('icmp');
?>
 

輸出:
vmtp
1

 getservbyname
($service,
$protocol)
 該函數利用$protocol協議,從泛系統/etc/services檔案中為$service服務恢複連接埠號碼碼。
用此函數自動獲得運行系統服務的連接埠資訊。

 代碼:
<?php
echo getservbyname('http',
'tcp');
?>

輸出:
80

 inet_ntop
($addr)

inet_pton
($addr)
 這些函數在二進位與人可讀地址間轉換IP地址。
用此函數在Ipv4/Ipv6地址字串與二進位表達法間進行轉換。

 代碼:
<?php
$packed = inet_pton
('192.168.0.1');
$unpacked = inet_ntop
($packed);
echo $unpacked;
?>

輸出:
192.168.0.1

 syslog
($level, $msg)
 這個函數利用警告層級$level將$msg資訊記錄到系統日誌裝置中。
用此函數發布泛系統錯誤或警告。
 代碼:
<?php
define_syslog_variables();
openlog('mylog',
LOG_NDELAY, LOG_LOCAL0);
syslog(LOG_DEBUG, 'This is
a debug message');
closelog();
?>



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.