>백엔드 개발 >PHP 튜토리얼 >사이트 외부의 원격 양식 제출을 방지하는 PHP의 예

사이트 외부의 원격 양식 제출을 방지하는 PHP의 예

WBOY
WBOY원래의
2016-07-25 08:44:091240검색
在进行php开发(http://www.maiziedu.com/course/php/)时,为了防止站长提交表单无非就是对每一次打开表单或提交数据都会需要加一个token来进行验证了,这个其实与验证码做法没什么两样了,下面来看几个防止站外远程提交表单的例子。
例子一:我们每一次打开提交页面生成一个token然后保存在session中,当表单提交时我们来判断当前的token值与session是否一致,如果是的就是正常提交否则就是无效提交了。
具体代码如下:
if ($_POST['submit'] == "go"){
//check token
if ($_POST['token'] == $_SESSION['token']){
//strip_tags
$name = strip_tags($_POST['name']);
$name = substr($name,0,40);
//clean out any potential hexadecimal characters
$name = cleanHex($name);
//continue processing....
}else{
//stop all processing! remote form posting attempt! }
}
$token = md5(uniqid(rand(), true)); $_SESSION['token']= $token;

function cleanHex($input){
$clean = preg_replace("![][xX]([A-Fa-f0-9]{1,3})!", "",$input);
return $clean;
} ?>     
     

     

     
     

     

还有一种比较明显的做法就是利用验证码了,这种验证码的方式与其它的方式是一样的哦,下面看个简单的例子
例子二:增加验证码
表单提交时候增加验证码,可以有效防止灌水机提交数据。但是随着图形图像识别程序变的更加强大,验证码识别也不断的在提高他的难度,有些验证码甚至加入了声音的识别,一些小站点可以采用这样的方式。
if($_POST['vcode'] != get_vcode())
{
    exit('验证码校验失败,无法入库');
}
具体的例子感兴趣的读者可以在网上到很多验证的相关例子。
이 주제는 2016-4-18 12:28에 Xiaobei에 의해 이동되었습니다


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.