PHP下如何判断表单提交是否来自于本站
为了安全有时候我们要判断表单提交是否是来自本站,下面本站介绍两种方法,仅供了解方法原理,具体使用请进行完善!
方法一:
你可以把处理提交数据的代码写到一个单独的文件里,比如form.php。
<?php
if (defined(’INSIDE’)) {//判断是否有定义INSIDE常量
//处理表单
} else {
exit(’错误’);
}
?>
然后,在提交表单的那个页面先定义INSIDE这个常量,常量值无所谓
define(’INSIDE’, ’TRUE’);
接着,判断是否有提交,如果提交,则
include ’form.php’;
=======================================================================================
方法二:
<?php
if(PHP_VERSION<’4.1.0’){$_SERVER = $HTTP_SERVER_VARS;}
if(isset($_SERVER["HTTP_REFERER"])){
//针对部分浏览器可能无HTTP_REFERER,所以做这么一个判断
$servername=$_SERVER[’SERVER_NAME’];
$sub_from=$_SERVER["HTTP_REFERER"];
$sub_len=strlen($servername);
$checkfrom=substr($sub_from,7,$sub_len);
if($checkfrom!=$servername)
{
echo "<script language=’javascript’>window.alert(’数据来源有误,建站学不接收站外提交的数据!’);window.opener=self;window.close();</script>";
exit;
}
}
?>
此方法并非绝对安全,因为HTTP_REFERER是可以伪造的,只能是防君子但不能防小人了,但在一般情况下已经够用。