php通过验证码、session里的token 防止站外远程提交表单的方法

分类:PHP_Python| 发布:llmaomi| 查看:421 | 发表时间:2015/2/25

本文实例讲述了php防止站外远程提交表单的方法,分享给大家供大家参考。具体实现方法如下:

一般来说防止站长提交表单无非就是对每一次打开表单或提交数据都会需要加一个token来进行验证了,这个其实与验证码做法没什么两样了,下面来看几个防止站外远程提交表单的例子。

例子一:我们每一次打开提交页面生成一个token然后保存在session中,当表单提交时我们来判断当前的token值与session是否一致,如果是的就是正常提交否则就是无效提交了。

具体代码如下:

代码如下:
01<?php    
02 session_start();    
03       
04 if ($_POST['submit'] == "go"){    
05     //check token @郑州网建
06     if ($_POST['token'] == $_SESSION['token']){    
07         //strip_tags    
08         $name = strip_tags($_POST['name']);    
09         $name = substr($name,0,40);    
10         //clean out any potential hexadecimal characters    
11         $name = cleanHex($name);    
12         //continue processing....    
13     }else{    
14         //stop all processing! remote form posting attempt! @camnpr   
15     }    
16 }    
17       
18 $token = md5(uniqid(rand(), true));    
19 $_SESSION['token']= $token;
20       
21  function cleanHex($input){    
22     $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);    
23     return $clean;    
24 }    
25 ?>    
26 <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">    
27 <p><label for="name">Name</label>    
28 <input type="text" name="name" id="name" size="20" maxlength="40"/></p>    
29 <input type="hidden" name="token" value="<?php echo $token;?>"/>    
30 <p><input type="submit" name="submit" value="go"/></p>    
31 </form>

还有一种比较明显的做法就是利用验证码了,这种验证码的方式与其它的方式是一样的哦,下面看个简单的例子

例子二:增加验证码

表单提交时候增加验证码,可以有效防止灌水机提交数据。但是随着图形图像识别程序变的更加强大,验证码识别也不断的在提高他的难度,有些验证码甚至加入了声音的识别,一些小站点可以采用这样的方式。

代码如下:
1if($_POST['vcode'] != get_vcode())
2 {
3     exit('验证码校验失败,无法入库');
4 }

具体的例子感兴趣的读者可以在网上到很多验证的相关例子。

希望本文所述对大家的PHP程序设计有所帮助。

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/php-python/1913.html