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 相关文章推荐
图象函数中的中文显示
Oct 09 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
Yii中的relations数据关联查询及统计功能用法详解
Jul 14 PHP
PHP运行模式汇总
Nov 06 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
python函数局部变量用法实例分析
2015/08/04 Python
Python数据操作方法封装类实例
2017/06/23 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
班主任工作经验交流材料
2014/05/13 职场文书
优秀语文教师事迹
2014/05/18 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
小学语文教学随笔
2015/08/14 职场文书
七年级作文之雪景
2019/11/18 职场文书
解决Oracle数据库用户密码过期
2022/05/11 Oracle