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数组应用之比较两个时间的相减排序
Aug 18 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
php代码审计比较有意思的例子
May 07 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
Jan 08 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
phpfpm的作用和用法
Oct 10 PHP
phpstudy隐藏index.php的方法
Sep 21 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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冒泡排序算法的深入理解
2013/06/09 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Django中反向生成models.py的实例讲解
2018/05/30 Python
python dataframe NaN处理方式
2019/12/26 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
python中os包的用法
2020/06/01 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
银河香水:Galaxy Perfume
2019/03/25 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
汉语专业应届生求职信
2013/10/01 职场文书
英语道歉信范文
2014/01/09 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
2014年党员整改措施
2014/10/24 职场文书
幼儿园辞职信
2015/05/13 职场文书