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 相关文章推荐
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Mar 03 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
ucenter通信原理分析
Jan 09 PHP
PHP中使用正则表达式提取中文实现笔记
Jan 20 PHP
symfony表单与页面实现技巧
Jan 26 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
PHP7基于curl实现的上传图片功能
May 11 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
Jun 14 PHP
PHP中16个高危函数整理
Sep 19 PHP
关于php开启错误提示的总结
Sep 24 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读取文件内容的几种方法详解
2013/06/26 PHP
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
node.js使用redis储存session的方法
2018/09/26 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python代码过长的换行方法
2018/07/19 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python对象与json相互转换的方法
2019/05/07 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
Python利用socket模块开发简单的端口扫描工具的实现
2021/01/27 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
心理健康活动总结
2014/04/30 职场文书
三好学生评语大全
2014/12/29 职场文书
新员工考核评语
2014/12/31 职场文书
资产移交协议书
2016/03/24 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
spring cloud 配置中心native配置方式
2021/09/25 Java/Android