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 25 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
php zip文件解压类代码
Dec 02 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
PHP模块memcached使用指南
Dec 08 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
php实现表单提交上传文件功能
May 28 PHP
Laravel定时任务的每秒执行代码
Oct 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
PHP数组交集的优化代码分析
2011/03/06 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
Javascript与jQuery方法的隐藏与显示
2015/01/19 Javascript
angularJS 入门基础
2015/02/09 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
纯JS实现轮播图
2017/02/22 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
浅谈sass在vue注意的地方
2017/08/10 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
python实现简单加密解密机制
2019/03/19 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
Python求解正态分布置信区间教程
2019/11/20 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
美国高端婴童品牌:Hanna Andersson
2016/10/30 全球购物
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
厨房管理计划书
2014/04/27 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
道士塔读书笔记
2015/06/30 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android