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 中dirname(_file_)讲解
Mar 18 PHP
PHP 简单日历实现代码
Oct 28 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
PHP判断一个字符串是否是回文字符串的方法
Mar 23 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP实现的回溯算法示例
Aug 15 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 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发电子邮件
2006/10/09 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
JS实现的排列组合算法示例
2019/07/16 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python 删除整个文本中的空格,并实现按行显示
2018/07/24 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
个人求职简历的自我评价
2013/10/19 职场文书
销售人才自我评价范文
2014/09/27 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
投诉书格式范本
2015/07/02 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android