原文:
PHP函數參考20-網絡相關函數 - 9ong
PHP函數參考21-針對服務器擴展函數 - 9ong
網絡函數提供一系列聯網函數。
checkdnsrr — 給指定的主機(域名)或者IP地址做DNS通信檢查
closelog — 關閉系統日志鏈接
define_syslog_variables — Initializes all syslog related variables
-
dns_check_record — 別名 checkdnsrr
根據不同記錄(type)類型查詢主機(host)相應的DNS記錄。
host:主機(host)可以是一個IP地址也可以是域名。
type:解析記錄類型(type)可能是下面這些類型中的任何一個:A,MX,NS,SOA,PTR,CNAME,AAAA,A6, SRV,NAPTR,TXT 或者 ANY。
dns_get_mx — 別名 getmxrr
-
dns_get_record — 獲取指定主機的DNS記錄
獲取指定主機(hostname)的DNS記錄。
-
fsockopen — 打開一個網絡連接或者一個Unix套接字連接
fsockopen()將返回一個文件句柄,之后可以被其他文件類函數調用(例如:fgets(),fgetss(),fwrite(),fclose()還有feof())。如果調用失敗,將返回FALSE。
gethostbyaddr — 獲取指定的IP地址對應的主機名
gethostbyname — 返回主機名對應的 IPv4地址。
gethostbynamel — 獲取互聯網主機名對應的 IPv4 地址列表
gethostname — 獲取主機名
getmxrr — 獲取互聯網主機名對應的 MX 記錄
getprotobyname — Get protocol number associated with protocol name
getprotobynumber — Get protocol name associated with protocol number
getservbyname — 獲取互聯網服務協議對應的端口
getservbyport — Get Internet service which corresponds to port and protocol
-
header_register_callback — 調用一個 header 函數
注冊一個函數,在 PHP 開始發送輸出時調用。
PHP 準備好所有響應頭,在發送內容之前執行 callback,創建了一個發送響應頭的操作窗口。
-
header — 發送原生 HTTP 頭
header() 用于發送原生的 HTTP 頭。
請注意 header() 必須在任何實際輸出之前調用,不管是普通的 HTML 標簽,還是文件或 PHP 輸出的空行,空格。這是個常見的錯誤,在通過include,require,或者其訪問其他文件里面的函數的時候,如果在header()被調用之前,其中有空格或者空行。同樣的問題也存在于單獨的 PHP/HTML 文件中。
//200 正常狀態 header('HTTP/1.1 200 OK'); // 301 永久重定向,記得在后面要加重定向地址 Location:$url header('HTTP/1.1 301 Moved Permanently'); // 重定向,其實就是302 暫時重定向 header('Location: http://www.maiyoule.com/'); // 設置頁面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 錯誤 header('HTTP/1.1 404 Not Found'); // 500 服務器錯誤 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后跳轉到http://www.9ong.com'; // 重寫 X-Powered-By 值 header('X-Powered-By: PHP/5.3.0'); header('X-Powered-By: Brain/0.6b'); //設置上下文語言 header('Content-language: en'); // 設置頁面最后修改時間(多用于防緩存) $time = time() - 60; //建議使用filetime函數來設置頁面緩存時間 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); // 設置內容長度 header('Content-Length: 39344'); // 設置頭文件類型,可以用于流文件或者文件下載 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'); //設置頁面頭信息 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'); //聲明一個下載的文件 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="testname.zip"'); header('Content-Transfer-Encoding: binary'); readfile('test.zip'); //對當前文檔禁用緩存 header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); //聲明一個需要下載的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 — 刪除之前設置的 HTTP 頭
刪除之前用 header() 設置的 HTTP 頭。
-
headers_list — 返回已發送的 HTTP 響應頭(或準備發送的)
headers_list() 會返回準備發送給瀏覽器/客戶端的 HTTP 頭列表。檢測這些頭是否已經發送,使用 headers_sent()。
headers_sent — 檢測 HTTP 頭是否已經發送
-
http_response_code — 獲取/設置響應的 HTTP 狀態碼
如果提供了 response_code,將返回先前的狀態碼。如果未提供 response_code,會返回當前的狀態碼。在 Web 服務器環境里,這些狀態碼的默認值都是 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 的字符串互聯網協議轉換成長整型數字
long2ip — 將長整型轉化為字符串形式帶點的互聯網標準格式地址(IPV4)
openlog — Open connection to system logger
-
pfsockopen — 打開一個持久的網絡連接或者Unix套接字連接。
這個函數的作用與fsockopen()完全一樣的,不同的地方在于當在腳本執行完后,連接一直不會關閉。可以說它是fsockopen()的長連接版本。
-
setcookie — 發送 Cookie
setcookie() 定義了 Cookie,會和剩下的 HTTP 頭一起發送給客戶端。和其他 HTTP 頭一樣,必須在腳本產生任意輸出之前發送 Cookie(由于協議的限制)。請在產生任何輸出之前(包括 <html> 和 <head> 或者空格)調用本函數。
一旦設置 Cookie 后,下次打開頁面時可以使用
_REQUEST。
參數:
-
name
Cookie 名稱。
value
Cookie 值。這個值儲存于用戶的電腦里,請勿儲存敏感信息。比如 name 是 'cookiename',可通過 $_COOKIE['cookiename'] 獲取它的值。 -
expire
Cookie 的過期時間。這是個 Unix 時間戳,即 Unix 紀元以來(格林威治時間 1970 年 1 月 1 日 00:00:00)的秒數。也就是說,基本可以用 time() 函數的結果加上希望過期的秒數。或者也可以用 mktime()。 time()+606024*30 就是設置 Cookie 30 天后過期。如果設置成零,或者忽略參數, Cookie 會在會話結束時過期(也就是關掉瀏覽器時)。
expire 使用 Unix 時間戳而非 Wdy, DD-Mon-YYYYHH:MM:SS GMT 這樣的日期格式,是因為 PHP 內部作了轉換。
-
- path
Cookie 有效的服務器路徑。設置成 '/' 時,Cookie 對整個域名 domain 有效。如果設置成 '/foo/', Cookie 僅僅對 domain 中 /foo/ 目錄及其子目錄有效(比如 /foo/bar/)。默認值是設置 Cookie 時的當前目錄。
- domain
Cookie 的有效域名/子域名。設置成子域名(例如 'www.example.com'),會使 Cookie 對這個子域名和它的三級域名有效(例如 w2.www.example.com)。要讓 Cookie 對整個域名有效(包括它的全部子域名),只要設置成域名就可以了(這個例子里是 'example.com')。
舊版瀏覽器仍然在使用廢棄的 ? RFC 2109,需要一個前置的點 . 來匹配所有子域名。
- secure
設置這個 Cookie 是否僅僅通過安全的 HTTPS 連接傳給客戶端。設置成 TRUE 時,只有安全連接存在時才會設置 Cookie。如果是在服務器端處理這個需求,程序員需要僅僅在安全連接上發送此類 Cookie (通過 $_SERVER["HTTPS"] 判斷)。
- httponly
設置成 TRUE,Cookie 僅可通過 HTTP 協議訪問。這意思就是 Cookie 無法通過類似 JavaScript 這樣的腳本語言訪問。要有效減少 XSS 攻擊時的身份竊取行為,可建議用此設置(雖然不是所有瀏覽器都支持),不過這個說法經常有爭議。 PHP 5.2.0 中添加。 TRUE 或 FALSE
-
setrawcookie — 發送未經 URL 編碼的 cookie
setrawcookie() 和 setcookie() 非常相似,唯一不同之處是發送到瀏覽器的 cookie 值沒有自動經過 URL 編碼(urlencode)。
socket_get_status — 別名 stream_get_meta_data
socket_set_blocking — 別名 stream_set_blocking
socket_set_timeout — 別名 stream_set_timeout
-
syslog — 生成系統日志消息
syslog()生成將由系統日志記錄器分發的日志消息。
我們建議使用seaslog擴展來記錄日志。