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将任何格式视频转为flv的代码
Sep 03 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
php正则preg_replace_callback函数用法实例
Jun 01 PHP
php header函数的常用http头设置
Jun 25 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
php版微信自定义回复功能示例
Dec 05 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
PHP设计模式之适配器模式定义与用法详解
Apr 03 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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 If Else(elsefi) 语句
2013/04/07 PHP
微信支付的开发流程详解
2016/09/13 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
[JS]点出统计器
2020/10/11 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python最基本的输入输出详解
2015/04/25 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
python 解压pkl文件的方法
2018/10/25 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python流程控制常用工具详解
2020/02/24 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
金智子午JAVA面试题
2015/09/04 面试题
英语专业学生个人求职信范文
2014/01/06 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
2015年清明节活动总结
2015/02/09 职场文书
银行柜员工作心得体会
2016/01/23 职场文书