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 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
PHP学习笔记之二
Jan 17 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
PHP SplObjectStorage使用实例
May 12 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
PHP图片加水印实现方法
May 06 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
laravel Validator ajax返回错误信息的方法
Sep 29 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
thinkphp获取栏目和文章当前位置的方法
2014/10/29 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP查询分页的实现代码
2017/06/09 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
2015/01/02 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Python BS4库的安装与使用详解
2018/08/08 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
Python如何使用函数做字典的值
2019/11/30 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
Java如何支持I18N?
2016/10/31 面试题
拔河比赛口号
2014/06/10 职场文书
单位租房协议书样本
2014/10/30 职场文书
消防验收申请报告
2015/05/15 职场文书
初中地理教学反思
2016/02/19 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技