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 相关文章推荐
文章推荐系统(二)
Oct 09 PHP
php UTF8 文件的签名问题
Oct 30 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
PHP、Python和Javascript的装饰器模式对比
Feb 03 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
详解php实现页面静态化原理
Jun 21 PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 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 substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
使用PHPExcel操作Excel用法实例分析
2015/03/26 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
详解如何为你的angular app构建一个第三方库
2018/12/07 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
常见python正则用法的简单实例
2016/06/21 Python
Python中datetime模块参考手册
2017/01/13 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
python提取log文件内容并画出图表
2019/07/08 Python
Django中modelform组件实例用法总结
2020/02/10 Python
django在开发中取消外键约束的实现
2020/05/20 Python
深入了解Python 方法之类方法 &amp; 静态方法
2020/08/17 Python
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
高二政治教学反思
2014/02/01 职场文书
说明书范文
2014/05/07 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android