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 相关文章推荐
FCKeditor的安装(PHP)
Jan 13 PHP
PHP 类相关函数的使用详解
May 10 PHP
10 个经典PHP函数
Oct 17 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php实现paypal 授权登录
May 28 PHP
PHP生成条形码大揭秘
Sep 24 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
php利用ZipArchive类操作文件的实例
Jan 21 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+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python__name__原理及用法详解
2019/11/02 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
社区八一活动方案
2014/02/03 职场文书
个人工作主要事迹
2014/05/08 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs