php防止站外远程提交表单的方法


Posted in PHP onOctober 20, 2014

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

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

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

具体代码如下:

<?php     

session_start();     

     

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;     

}     

?>     

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">     

<p><label for="name">Name</label>     

<input type="text" name="name" id="name" size="20" maxlength="40"/></p>     

<input type="hidden" name="token" value="<?php echo $token;?>"/>     

<p><input type="submit" name="submit" value="go"/></p>     

</form>

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

例子二:增加验证码

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

if($_POST['vcode'] != get_vcode())

{

    exit('验证码校验失败,无法入库');

}

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

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

PHP 相关文章推荐
PHP入门学习笔记之一
Oct 12 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
Apr 07 PHP
Yii的Srbac插件用法详解
Jul 14 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
PHP开发之用微信远程遥控服务器
Jan 25 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 #PHP
php实现给图片加灰色半透明效果的方法
Oct 20 #PHP
PHP清除数组中所有字符串两端空格的方法
Oct 20 #PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 #PHP
php实现删除指定目录下相关文件的方法
Oct 20 #PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 #PHP
php实现过滤表单提交中html标签的方法
Oct 17 #PHP
You might like
php采集时被封ip的解决方法
2010/08/29 PHP
php debug 安装技巧
2011/04/30 PHP
php遍历数组的方法分享
2012/03/22 PHP
php多文件上传下载示例分享
2014/02/20 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
超简单的jquery的AJAX用法
2010/05/10 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
JS实现的最简Table选项卡效果
2015/10/14 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
js DOM的事件常见操作实例详解
2019/12/16 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
python选择排序算法实例总结
2015/07/01 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
户籍证明模板
2014/09/28 职场文书
2015年师德师风承诺书
2015/01/22 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
2019年思想汇报
2019/06/20 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python