PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题


Posted in PHP onAugust 12, 2016

最近在设计一款产品,需要POST登录PHPWind,然而众所周知,PHPWind9(以下简称pw9)自身拥有安全策略,详情各位可以自己去phpwind官方论坛看。安全策略的存在会导致即便站长关闭验证码策略依然在登陆时会显示验证码(前提是该用户重试太多次)。

要POST登录,并且不需要验证码,就得处理这个问题,然而官方并没有提供解决的方案,只能依赖自己处理。

首先要明白,phpwind不像众多简单的php程序一般只是简单的该页面代码放置于对应文件中,每一次访问都会调用wekit.php,再由wekit调用插件,应用,服务。分析完毕后,我们就可以解决问题了。

Login,登录部分,在路径.\src\applications\u\controller 下,从文件名不难认出,LoginController.php就是用于登录的部分(这部分其实看着英文名来看就知道)
这时候我们贴出一段代码(后面我给备注了一些内容)

public function run() {
$this->setOutput($this->_showVerify(), 'verify');//验证码显示
$this->setOutput('用户登录', 'title'); //设置页面标题
$this->setOutput($this->_filterUrl(false), 'url');
$this->setOutput(PwUserHelper::getLoginMessage(), 'loginWay');
$this->setOutput($this->getInput('invite'), 'invite');
$this->setTemplate('login');
Wind::import('SRV:seo.bo.PwSeoBo');
$seoBo = PwSeoBo::getInstance();
$lang = Wind::getComponent('i18n');
$seoBo->setCustomSeo($lang->getMessage('SEO:u.login.run.title'), '', '');
Wekit::setV('seo', $seoBo);
}

显而易见,首先我们需要屏蔽掉验证码显示部分。

$this->setOutput($this->_showVerify(), 'verify');//验证码显示

修改成

//$this->setOutput($this->_showVerify(), 'verify');//验证码显示

至此,我们完成了验证码显示的隐藏,但是到这一步你如果登录会发现,居然提示验证码错误,所以我们需要进一步修改,使得更像没有验证码,是的!我们要不论如何都返回验证码成功。

验证码属于服务部分(详情看官方文档),文件在.\src\service\verify\srv中,同样按照文件名可以分辨出PwVerifyService.php就是提供验证码服务的主要文件。

这时候我又贴出一段代码(机遇部分备注内容)

public function checkVerify($verifyType, $code = '') {
return true;
if ($code == '') return false;//如果验证码为空,返回验证码错误
$types = $this->getVerifyType();
if (!array_key_exists($verifyType, $types)) return false;
$verify = $types[$verifyType];
if (!isset($verify['components']['path'])) return false;
$obj = Wekit::load($verify['components']['path']);
if ($obj->checkVerify($code) === true ) return true;
return false;
}

这里我给个简单粗暴的,具体其他方法不多说,想研究自己深入即可。

public function checkVerify($verifyType, $code = '') {
return true; //直接返回true,返回验证码正确
// if ($code == '') return false;
$types = $this->getVerifyType();
if (!array_key_exists($verifyType, $types)) return false;
$verify = $types[$verifyType];
if (!isset($verify['components']['path'])) return false;
$obj = Wekit::load($verify['components']['path']);
if ($obj->checkVerify($code) === true ) return true;
return false;
}

至此,问题解决了。

以上所述是小编给大家介绍的PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php你的验证码安全码?
Jan 02 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
Linux下PHP连接Oracle数据库
Aug 20 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
简单谈谈favicon
Jun 10 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
php魔法函数与魔法常量使用介绍
Jul 23 PHP
PHP从尾到头打印链表实例讲解
Sep 27 PHP
PHP请求Socket接口测试实例
Aug 12 #PHP
php+jquery+html实现点击不刷新加载更多的实例代码
Aug 12 #PHP
php网页版聊天软件实现代码
Aug 12 #PHP
PHP 自动加载的简单实现(推荐)
Aug 12 #PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 #PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 #PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 #PHP
You might like
php调用mysql存储过程
2007/02/14 PHP
smarty巧妙处理iframe中内容页的代码
2012/03/07 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
2011/03/16 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
从零学Python之入门(五)缩进和选择
2014/05/27 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python类的用法实例浅析
2015/05/27 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
Python守护进程实现过程详解
2020/02/10 Python
多个python文件调用logging模块报错误
2020/02/12 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
给排水专业应届生求职信
2013/10/12 职场文书
2014党员民主评议个人总结
2014/09/10 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
分析Python list操作为什么会错误
2021/11/17 Python