【发布时间】:2011-04-18 06:00:54
【问题描述】:
这两个变量有什么区别?
REMOTE_HOST 和 REMOTE_ADDR。
【问题讨论】:
这两个变量有什么区别?
REMOTE_HOST 和 REMOTE_ADDR。
【问题讨论】:
REMOTE_ADDR = hostnumber
hostnumber = ipv4-address | ipv6-address
ipv4-address = 1*3digit "." 1*3digit "." 1*3digit "." 1*3digit
ipv6-address = hexpart [ ":" ipv4-address ]
hexpart = hexseq | ( [ hexseq ] "::" [ hexseq ] )
hexseq = 1*4hex *( ":" 1*4hex )
The REMOTE_HOST variable contains the fully qualified domain name of
the client sending the request to the server, if available, otherwise
NULL. Fully qualified domain names take the form as described in
section 3.5 of RFC 1034 [17] and section 2.1 of RFC 1123 [12].
Domain names are not case sensitive.
REMOTE_HOST = "" | hostname | hostnumber
hostname = *( domainlabel "." ) toplabel [ "." ]
domainlabel = alphanum [ *alphahypdigit alphanum ]
toplabel = alpha [ *alphahypdigit alphanum ]
alphahypdigit = alphanum | "-"
【讨论】:
远程:是位于某个遥远位置的计算机,从中检索到的数据通常是指专用网络或公共互联网中的服务器。
Remote_host 将返回 REMOTE_ADDR 或者是 IP 地址。
【讨论】:
1. $_SERVER['REMOTE_ADDR'] -
这包含客户端的真实 IP 地址。这是您可以从用户那里找到的最可靠的价值。
2。 $_SERVER['REMOTE_HOST'] -
这将获取用户正在查看当前页面的主机名。
但是要让这个脚本工作,必须在 httpd.conf 中配置 Hostname Lookups On。
【讨论】:
$_SERVER['REMOTE_ADDR'] 是存储在$_SERVER 超全局中的PHP“已处理”值。问题是专门指同名的 Apache 服务器变量 - 这些不一定是相同的值(但在这种情况下应该是)。例如。 REQUEST_URI Apache 服务器变量和$_SERVER['REQUEST_URI'] PHP 超全局变量可能完全不同。
REMOTE_HOST 与客户端(即发出请求的计算机)的 主机名 相关。 REMOTE_ADDR 指的是客户端的IP 地址。
有时主机名无法解析,因此 REMOTE_HOST 将返回 REMOTE_ADDR 或 IP 地址。
【讨论】:
HostnameLookups,否则它总是包含 IP 地址。 (HostnameLookups 默认关闭 - 性能原因。)