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注入实例
Oct 09 PHP
PHP数字格式化
Dec 06 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
php microtime获取浮点的时间戳
Feb 21 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 PHP
php的单例模式及应用场景详解
Feb 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静态文件生成类实例分析
2015/01/03 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
PHP 类与构造函数解析
2017/02/06 PHP
JavaScript 程序编码规范
2010/11/23 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python读写LMDB文件的方法
2018/07/02 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
美德少年事迹材料
2014/01/23 职场文书
司机岗位职责说明书
2014/07/29 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
2015年党员自评材料
2014/12/17 职场文书
学生检讨书怎么写
2015/05/07 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server