原文:
PHP函數(shù)參考20-網(wǎng)絡(luò)相關(guān)函數(shù) - 9ong
PHP函數(shù)參考21-針對(duì)服務(wù)器擴(kuò)展函數(shù) - 9ong
網(wǎng)絡(luò)函數(shù)提供一系列聯(lián)網(wǎng)函數(shù)。
checkdnsrr — 給指定的主機(jī)(域名)或者IP地址做DNS通信檢查
closelog — 關(guān)閉系統(tǒng)日志鏈接
define_syslog_variables — Initializes all syslog related variables
-
dns_check_record — 別名 checkdnsrr
根據(jù)不同記錄(type)類型查詢主機(jī)(host)相應(yīng)的DNS記錄。
host:主機(jī)(host)可以是一個(gè)IP地址也可以是域名浇垦。
type:解析記錄類型(type)可能是下面這些類型中的任何一個(gè):A,MX渣锦,NS,SOA浓体,PTR泡挺,CNAME辈讶,AAAA命浴,A6, SRV贱除,NAPTR生闲,TXT 或者 ANY。
dns_get_mx — 別名 getmxrr
-
dns_get_record — 獲取指定主機(jī)的DNS記錄
獲取指定主機(jī)(hostname)的DNS記錄月幌。
-
fsockopen — 打開一個(gè)網(wǎng)絡(luò)連接或者一個(gè)Unix套接字連接
fsockopen()將返回一個(gè)文件句柄碍讯,之后可以被其他文件類函數(shù)調(diào)用(例如:fgets(),fgetss()扯躺,fwrite()捉兴,fclose()還有feof())蝎困。如果調(diào)用失敗,將返回FALSE倍啥。
gethostbyaddr — 獲取指定的IP地址對(duì)應(yīng)的主機(jī)名
gethostbyname — 返回主機(jī)名對(duì)應(yīng)的 IPv4地址禾乘。
gethostbynamel — 獲取互聯(lián)網(wǎng)主機(jī)名對(duì)應(yīng)的 IPv4 地址列表
gethostname — 獲取主機(jī)名
getmxrr — 獲取互聯(lián)網(wǎng)主機(jī)名對(duì)應(yīng)的 MX 記錄
getprotobyname — Get protocol number associated with protocol name
getprotobynumber — Get protocol name associated with protocol number
getservbyname — 獲取互聯(lián)網(wǎng)服務(wù)協(xié)議對(duì)應(yīng)的端口
getservbyport — Get Internet service which corresponds to port and protocol
-
header_register_callback — 調(diào)用一個(gè) header 函數(shù)
注冊(cè)一個(gè)函數(shù),在 PHP 開始發(fā)送輸出時(shí)調(diào)用虽缕。
PHP 準(zhǔn)備好所有響應(yīng)頭始藕,在發(fā)送內(nèi)容之前執(zhí)行 callback,創(chuàng)建了一個(gè)發(fā)送響應(yīng)頭的操作窗口氮趋。
-
header — 發(fā)送原生 HTTP 頭
header() 用于發(fā)送原生的 HTTP 頭伍派。
請(qǐng)注意 header() 必須在任何實(shí)際輸出之前調(diào)用,不管是普通的 HTML 標(biāo)簽剩胁,還是文件或 PHP 輸出的空行诉植,空格。這是個(gè)常見的錯(cuò)誤摧冀,在通過include倍踪,require,或者其訪問其他文件里面的函數(shù)的時(shí)候索昂,如果在header()被調(diào)用之前建车,其中有空格或者空行。同樣的問題也存在于單獨(dú)的 PHP/HTML 文件中椒惨。
//200 正常狀態(tài) header('HTTP/1.1 200 OK'); // 301 永久重定向缤至,記得在后面要加重定向地址 Location:$url header('HTTP/1.1 301 Moved Permanently'); // 重定向,其實(shí)就是302 暫時(shí)重定向 header('Location: http://www.maiyoule.com/'); // 設(shè)置頁面304 沒有修改 header('HTTP/1.1 304 Not Modified'); // 顯示登錄框康谆, header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="登錄信息"'); echo '顯示的信息领斥!'; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm1"'); header('HTTP/1.0 401 Unauthorized'); echo 'Text to send if user hits Cancel button'; exit; } else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; } // 403 禁止訪問 header('HTTP/1.1 403 Forbidden'); // 404 錯(cuò)誤 header('HTTP/1.1 404 Not Found'); // 500 服務(wù)器錯(cuò)誤 header('HTTP/1.1 500 Internal Server Error'); // 3秒后重定向指定地址(也就是刷新到新頁面與 <meta http-equiv="refresh" content="10;http://www.9ong.com/ /> 相同) header('Refresh: 3; url=http://www.9ong.com/'); echo '10后跳轉(zhuǎn)到http://www.9ong.com'; // 重寫 X-Powered-By 值 header('X-Powered-By: PHP/5.3.0'); header('X-Powered-By: Brain/0.6b'); //設(shè)置上下文語言 header('Content-language: en'); // 設(shè)置頁面最后修改時(shí)間(多用于防緩存) $time = time() - 60; //建議使用filetime函數(shù)來設(shè)置頁面緩存時(shí)間 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); // 設(shè)置內(nèi)容長度 header('Content-Length: 39344'); // 設(shè)置頭文件類型,可以用于流文件或者文件下載 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="example.zip"'); header('Content-Transfer-Encoding: binary'); readfile('example.zip');//讀取文件到客戶端 //禁用頁面緩存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Pragma: no-cache'); //設(shè)置頁面頭信息 header('Content-Type: text/html; charset=iso-8859-1'); header('Content-Type: text/html; charset=utf-8'); header('Content-Type: text/plain'); header('Content-Type: image/jpeg'); header('Content-Type: application/zip'); header('Content-Type: application/pdf'); header('Content-Type: audio/mpeg'); header('Content-Type: application/x-shockwave-flash'); //聲明一個(gè)下載的文件 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="testname.zip"'); header('Content-Transfer-Encoding: binary'); readfile('test.zip'); //對(duì)當(dāng)前文檔禁用緩存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); //聲明一個(gè)需要下載的xls文件 header('Content-Disposition: attachment; filename=ithhc.xlsx'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Length: '.filesize('./test.xls')); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); readfile('./test.xls');
-
header_remove — 刪除之前設(shè)置的 HTTP 頭
刪除之前用 header() 設(shè)置的 HTTP 頭沃暗。
-
headers_list — 返回已發(fā)送的 HTTP 響應(yīng)頭(或準(zhǔn)備發(fā)送的)
headers_list() 會(huì)返回準(zhǔn)備發(fā)送給瀏覽器/客戶端的 HTTP 頭列表月洛。檢測這些頭是否已經(jīng)發(fā)送,使用 headers_sent()孽锥。
headers_sent — 檢測 HTTP 頭是否已經(jīng)發(fā)送
-
http_response_code — 獲取/設(shè)置響應(yīng)的 HTTP 狀態(tài)碼
如果提供了 response_code嚼黔,將返回先前的狀態(tài)碼。如果未提供 response_code惜辑,會(huì)返回當(dāng)前的狀態(tài)碼唬涧。在 Web 服務(wù)器環(huán)境里,這些狀態(tài)碼的默認(rèn)值都是 200盛撑。
inet_ntop — Converts a packed internet address to a human readable representation
inet_pton — Converts a human readable IP address to its packed in_addr representation
ip2long — 將 IPV4 的字符串互聯(lián)網(wǎng)協(xié)議轉(zhuǎn)換成長整型數(shù)字
long2ip — 將長整型轉(zhuǎn)化為字符串形式帶點(diǎn)的互聯(lián)網(wǎng)標(biāo)準(zhǔn)格式地址(IPV4)
openlog — Open connection to system logger
-
pfsockopen — 打開一個(gè)持久的網(wǎng)絡(luò)連接或者Unix套接字連接碎节。
這個(gè)函數(shù)的作用與fsockopen()完全一樣的,不同的地方在于當(dāng)在腳本執(zhí)行完后抵卫,連接一直不會(huì)關(guān)閉狮荔√テ玻可以說它是fsockopen()的長連接版本。
-
setcookie — 發(fā)送 Cookie
setcookie() 定義了 Cookie殖氏,會(huì)和剩下的 HTTP 頭一起發(fā)送給客戶端创坞。和其他 HTTP 頭一樣,必須在腳本產(chǎn)生任意輸出之前發(fā)送 Cookie(由于協(xié)議的限制)受葛。請(qǐng)?jiān)诋a(chǎn)生任何輸出之前(包括 <html> 和 <head> 或者空格)調(diào)用本函數(shù)题涨。
一旦設(shè)置 Cookie 后,下次打開頁面時(shí)可以使用 _REQUEST纲堵。
參數(shù):
-
name
Cookie 名稱。
value
Cookie 值闰渔。這個(gè)值儲(chǔ)存于用戶的電腦里席函,請(qǐng)勿儲(chǔ)存敏感信息。比如 name 是 'cookiename'冈涧,可通過 $_COOKIE['cookiename'] 獲取它的值茂附。 -
expire
Cookie 的過期時(shí)間。這是個(gè) Unix 時(shí)間戳督弓,即 Unix 紀(jì)元以來(格林威治時(shí)間 1970 年 1 月 1 日 00:00:00)的秒數(shù)营曼。也就是說,基本可以用 time() 函數(shù)的結(jié)果加上希望過期的秒數(shù)愚隧〉仝澹或者也可以用 mktime()。 time()+606024*30 就是設(shè)置 Cookie 30 天后過期狂塘。如果設(shè)置成零录煤,或者忽略參數(shù), Cookie 會(huì)在會(huì)話結(jié)束時(shí)過期(也就是關(guān)掉瀏覽器時(shí))荞胡。
expire 使用 Unix 時(shí)間戳而非 Wdy, DD-Mon-YYYYHH:MM:SS GMT 這樣的日期格式妈踊,是因?yàn)?PHP 內(nèi)部作了轉(zhuǎn)換。
-
- path
Cookie 有效的服務(wù)器路徑泪漂。設(shè)置成 '/' 時(shí)廊营,Cookie 對(duì)整個(gè)域名 domain 有效。如果設(shè)置成 '/foo/'窖梁, Cookie 僅僅對(duì) domain 中 /foo/ 目錄及其子目錄有效(比如 /foo/bar/)赘风。默認(rèn)值是設(shè)置 Cookie 時(shí)的當(dāng)前目錄夹囚。
- domain
Cookie 的有效域名/子域名纵刘。設(shè)置成子域名(例如 'www.example.com'),會(huì)使 Cookie 對(duì)這個(gè)子域名和它的三級(jí)域名有效(例如 w2.www.example.com)荸哟。要讓 Cookie 對(duì)整個(gè)域名有效(包括它的全部子域名)假哎,只要設(shè)置成域名就可以了(這個(gè)例子里是 'example.com')瞬捕。
舊版瀏覽器仍然在使用廢棄的 ? RFC 2109,需要一個(gè)前置的點(diǎn) . 來匹配所有子域名舵抹。
- secure
設(shè)置這個(gè) Cookie 是否僅僅通過安全的 HTTPS 連接傳給客戶端肪虎。設(shè)置成 TRUE 時(shí),只有安全連接存在時(shí)才會(huì)設(shè)置 Cookie惧蛹。如果是在服務(wù)器端處理這個(gè)需求扇救,程序員需要僅僅在安全連接上發(fā)送此類 Cookie (通過 $_SERVER["HTTPS"] 判斷)。
- httponly
設(shè)置成 TRUE香嗓,Cookie 僅可通過 HTTP 協(xié)議訪問迅腔。這意思就是 Cookie 無法通過類似 JavaScript 這樣的腳本語言訪問。要有效減少 XSS 攻擊時(shí)的身份竊取行為靠娱,可建議用此設(shè)置(雖然不是所有瀏覽器都支持)沧烈,不過這個(gè)說法經(jīng)常有爭議。 PHP 5.2.0 中添加像云。 TRUE 或 FALSE
-
setrawcookie — 發(fā)送未經(jīng) URL 編碼的 cookie
setrawcookie() 和 setcookie() 非常相似锌雀,唯一不同之處是發(fā)送到瀏覽器的 cookie 值沒有自動(dòng)經(jīng)過 URL 編碼(urlencode)。
socket_get_status — 別名 stream_get_meta_data
socket_set_blocking — 別名 stream_set_blocking
socket_set_timeout — 別名 stream_set_timeout
-
syslog — 生成系統(tǒng)日志消息
syslog()生成將由系統(tǒng)日志記錄器分發(fā)的日志消息迅诬。
我們建議使用seaslog擴(kuò)展來記錄日志腋逆。
原文:
PHP函數(shù)參考20-網(wǎng)絡(luò)相關(guān)函數(shù) - 9ong
PHP函數(shù)參考21-針對(duì)服務(wù)器擴(kuò)展函數(shù) - 9ong