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 相关文章推荐
用session做客户验证时的注意事项
Oct 09 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
php ci框架验证码实例分析
Jun 26 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
PHP版微信公众平台红包API
Apr 02 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP hex2bin()函数用法讲解
Feb 25 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中条件判断语句的简单使用方法
2015/08/21 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
使用Python设计一个代码统计工具
2018/04/04 Python
深入浅析Python的类
2018/06/22 Python
Python实现把多维数组展开成DataFrame
2019/11/30 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
简单的命令查看安装的python版本号
2020/08/28 Python
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
网游商务专员求职信
2013/10/15 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
道德演讲稿
2014/05/21 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电