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 09 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
一组PHP加密解密函数分享
Jun 05 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
php 二维数组快速排序算法的实现代码
Oct 17 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
对laravel in 查询的使用方法详解
Oct 09 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
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP实现的日历功能示例
2018/09/01 PHP
java script编程起步(第三课)
2007/01/10 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
vue-router的钩子函数用法实例分析
2019/10/26 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
python字符串对其居中显示的方法
2015/07/11 Python
Python 私有函数的实例详解
2017/09/11 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
食品安全检查制度
2014/02/03 职场文书
接待员岗位责任制
2014/02/10 职场文书
建筑结构施工求职信
2014/07/11 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
门球健将观后感
2015/06/16 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
使用python绘制横竖条形图
2022/04/21 Python