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中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
php中定时计划任务的实现原理
Jan 08 PHP
基于PHP array数组的教程详解
Jun 05 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
Mar 18 PHP
yii数据库的查询方法
Dec 28 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
mongodb和php的用法详解
Mar 25 PHP
Laravel 自带的Auth验证登录方法
Sep 30 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 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使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
Python中的getopt函数使用详解
2015/07/28 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python如何判断数独是否合法
2016/09/08 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
python爬取天气数据的实例详解
2020/11/20 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
研究生自荐信
2013/10/09 职场文书
销售工作人员的自我评价分享
2013/11/10 职场文书
办护照工作证明范本
2014/01/14 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
2014年班组长工作总结
2014/11/20 职场文书
老人与海读书笔记
2015/06/26 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python