我们再学一个超级有用的预定义变量$_SERVER,从这个预定义变量里程序可以获取很多有用的参数。
直接访问1.PHP看看$_SERVER都有什么:
$_SERVER远不止这些东西,我们是直接输入网址进来的,假如是从其他页面点击进来或者提交表单进来,会显示更多东西。
在我们的PHP手册里会有很详细地对每个下标介绍,楠神就说几个会经常用到的下标参数吧。
一、
“HTTP_REFERER”即当前页的前一页的地址(如果存在)。
实际应用:可以用来做些验证,比如下载功能,用户从网站点击下载一个文件,只能是从允许的网址进入,可以用“HTTP_REFERER”做IF判断。好处防止其他网站盗链本站的资源。
额外说明下:所有“HTTP_”开头的下标参数都是不可信的,意思是这些参数都是浏览器提交过来的,第三方可以模拟浏览器向服务器提交这些参数。
“HTTP_REFERER”这个参数不可信,PHP的扩展CURL就可以伪造这个参数,后面介绍CURL就会明白了。
二、
上面这几个参数是很有用的
“SERVER_NAME”即主机名
“SERVER_ADDR”即服务器IP地址
“REMOTE_ADDR”即客户端IP地址
尤其“REMOTE_ADDR”实际用处很大,可以对客户端的IP做验证。可信度很高,不易被伪造。
不知道大家对http协议了解了多少,http协议是基于TCP/IP协议传输数据的(相关文章分享)。
TCP/IP是个协议组,由四个层次组成:网络接口层、网络层、传输层、应用层。
看图中IP协议属于网络层的,TCP协议属于传输层的,而http协议是属于应用层的。我们用浏览器访问网页,整个过程就像下面的图一样:
“REMOTE_ADDR”是服务器和客户端握手后建立的tcp连接的数据帧里的IP,在应用层是无法修改的,当然也并不是绝对无法伪造,不过对于php程序来说,这是底层的东西,无法伪造。
三、
“REQUEST_URI”是当前访问的页面的URL,这个参数将是我们下节课的重点,讲一讲怎么对URL重写。
注意:下标要严格区分大小写,预定义变量的下标都要严格区分大小写,培养良好的编程习惯。