PHP函数参考20-网络相关函数
网络函数提供一系列联网函数。
- 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(由于协议的限制)。请在产生任何输出之前(包括 和
或者空格)调用本函数。一旦设置 Cookie 后,下次打开页面时可以使用 $_COOKIE 读取。 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扩展来记录日志。