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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
php读取torrent种子文件内容的方法(测试可用)
May 03 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
PHP实现对数字分隔加千分号的方法
Mar 18 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
php7 list()、session及其他模块的修改实例分析
May 25 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
WHOIS类的修改版
2006/10/09 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php调用shell的方法
2014/11/05 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
php实现简易计算器
2020/08/28 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
python一键升级所有pip package的方法
2017/01/16 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
品学兼优的大学生自我评价
2013/09/20 职场文书
一夜的工作教学反思
2014/02/08 职场文书
高三高考决心书
2014/03/11 职场文书
优秀团员个人总结
2015/02/26 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
mysql sock文件存储了什么信息
2022/07/15 MySQL