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 str_pad 函数用法简介
Jul 11 PHP
php通用防注入程序 推荐
Feb 26 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
php 使用file_get_contents读取大文件的方法
Nov 13 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
typecho插件编写教程(五):核心代码
May 28 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
yii2.0整合阿里云oss删除单个文件的方法
Sep 19 PHP
php支付宝系列之电脑网站支付
May 30 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
php函数与传递参数实例分析
2014/11/15 PHP
php编程每天必学之验证码
2016/03/03 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
jQuery 工具函数学习资料
2010/04/29 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
Javascript删除指定元素节点的方法
2016/06/21 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
Vue指令指令大全
2019/02/09 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
python中sets模块的用法实例
2014/09/30 Python
Python标准库内置函数complex介绍
2014/11/25 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
Python csv模块使用方法代码实例
2019/08/29 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
大学生就业推荐信范文
2013/11/29 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
李强为自己工作观后感
2015/06/11 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript