验证表单提交来源
有些时候,我们需要对表单提交的来源进行处理,比如只允许某个主机或向脚本本身进行提交,防止有的人伪造相同的表单向我们的程序提交,造成安全问题。
前面我们介绍到,PHP的$_SERVER服务器超级全局数组提供了一个叫$_SERVER[‘HTTP_REFERER’]的变量,用于保存上一 页的来源,比如表单提交或者超级链接的URL地址。如果有人从他的计算机中提交表单或从浏览器地址中直接输入当前脚本名称,该变量会保存表单来源或为空 值,这样我们就可以通过它的值进行处理。
下面的例子只允许文件本身提交表单传递值。
例5-2:formreferer.php – 判断表单来源地址
$ref
服务器地址为:
$srv
“;
if (strcmp($srv, $ref) == 0){
echo “匹配”;
} else{
echo “不允许站外提交”;
}
}else{
echo ‘请提交表单’;}
?>
该例中用到的$_SERVER服务器变量有如下几个:
HTTP_REFERER 保存一个完整的来源URL地址。Ø
SERVER_NAME 当前的服务器名称。Ø
PHP_SELF 当前脚本的完整路径,包括文件名。Ø
我们可以通过“http:// == ”来比较,如果相同,则是合法的表单提交,否则不予处理。