PHP函數(shù)參考20-網(wǎng)絡(luò)相關(guān)函數(shù)

原文:
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 — 打開(kāi)一個(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 開(kāi)始發(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è)常見(jiàn)的錯(cuò)誤,在通過(guò)include,require,或者其訪問(wèn)其他文件里面的函數(shù)的時(shí)候,如果在header()被調(diào)用之前,其中有空格或者空行。同樣的問(wèn)題也存在于單獨(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è)置頁(yè)面304 沒(méi)有修改  
    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 禁止訪問(wèn)  
    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秒后重定向指定地址(也就是刷新到新頁(yè)面與 <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';  
    
    // 重寫(xiě) X-Powered-By 值  
    header('X-Powered-By: PHP/5.3.0');  
    header('X-Powered-By: Brain/0.6b');  
    
    //設(shè)置上下文語(yǔ)言  
    header('Content-language: en');  
    
    // 設(shè)置頁(yè)面最后修改時(shí)間(多用于防緩存)  
    $time = time() - 60; //建議使用filetime函數(shù)來(lái)設(shè)置頁(yè)面緩存時(shí)間  
    header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');  
    
    // 設(shè)置內(nèi)容長(zhǎng)度  
    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');//讀取文件到客戶端  
    
    //禁用頁(yè)面緩存  
    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è)置頁(yè)面頭信息  
    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 頭列表。檢測(cè)這些頭是否已經(jīng)發(fā)送,使用 headers_sent()。

  • headers_sent — 檢測(cè) 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)換成長(zhǎng)整型數(shù)字

  • long2ip — 將長(zhǎng)整型轉(zhuǎn)化為字符串形式帶點(diǎn)的互聯(lián)網(wǎng)標(biāo)準(zhǔn)格式地址(IPV4)

  • openlog — Open connection to system logger

  • pfsockopen — 打開(kāi)一個(gè)持久的網(wǎng)絡(luò)連接或者Unix套接字連接。

    這個(gè)函數(shù)的作用與fsockopen()完全一樣的,不同的地方在于當(dāng)在腳本執(zhí)行完后,連接一直不會(huì)關(guān)閉??梢哉f(shuō)它是fsockopen()的長(zhǎng)連接版本。

  • 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 后,下次打開(kāi)頁(yè)面時(shí)可以使用 _COOKIE 讀取。 Cookie 值同樣也存在于_REQUEST。

    參數(shù):

    • name

      Cookie 名稱。
      value
      Cookie 值。這個(gè)值儲(chǔ)存于用戶的電腦里,請(qǐng)勿儲(chǔ)存敏感信息。比如 name 是 'cookiename',可通過(guò) $_COOKIE['cookiename'] 獲取它的值。

    • expire

      Cookie 的過(guò)期時(shí)間。這是個(gè) Unix 時(shí)間戳,即 Unix 紀(jì)元以來(lái)(格林威治時(shí)間 1970 年 1 月 1 日 00:00:00)的秒數(shù)。也就是說(shuō),基本可以用 time() 函數(shù)的結(jié)果加上希望過(guò)期的秒數(shù)?;蛘咭部梢杂?mktime()。 time()+606024*30 就是設(shè)置 Cookie 30 天后過(guò)期。如果設(shè)置成零,或者忽略參數(shù), Cookie 會(huì)在會(huì)話結(jié)束時(shí)過(guò)期(也就是關(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) . 來(lái)匹配所有子域名。 

- secure

    設(shè)置這個(gè) Cookie 是否僅僅通過(guò)安全的 HTTPS 連接傳給客戶端。設(shè)置成 TRUE 時(shí),只有安全連接存在時(shí)才會(huì)設(shè)置 Cookie。如果是在服務(wù)器端處理這個(gè)需求,程序員需要僅僅在安全連接上發(fā)送此類 Cookie (通過(guò) $_SERVER["HTTPS"] 判斷)。 

- httponly

    設(shè)置成 TRUE,Cookie 僅可通過(guò) HTTP 協(xié)議訪問(wèn)。這意思就是 Cookie 無(wú)法通過(guò)類似 JavaScript 這樣的腳本語(yǔ)言訪問(wèn)。要有效減少 XSS 攻擊時(shí)的身份竊取行為,可建議用此設(shè)置(雖然不是所有瀏覽器都支持),不過(guò)這個(gè)說(shuō)法經(jīng)常有爭(zhēng)議。 PHP 5.2.0 中添加。 TRUE 或 FALSE 
  • setrawcookie — 發(fā)送未經(jīng) URL 編碼的 cookie

    setrawcookie() 和 setcookie() 非常相似,唯一不同之處是發(fā)送到瀏覽器的 cookie 值沒(méi)有自動(dòng)經(jīng)過(guò) 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ò)展來(lái)記錄日志。


原文:
PHP函數(shù)參考20-網(wǎng)絡(luò)相關(guān)函數(shù) - 9ong
PHP函數(shù)參考21-針對(duì)服務(wù)器擴(kuò)展函數(shù) - 9ong

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容