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
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
php 删除无限级目录与文件代码共享
Nov 22 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
PHP计算日期相差天数实例分析
Feb 23 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 28 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
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
调试php程序的简单步骤
2019/10/04 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
JavaScript数组方法大全(推荐)
2016/07/05 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
python实现哈希表
2014/02/07 Python
python中二维阵列的变换实例
2014/10/09 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python八皇后问题的解决方法
2018/09/27 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
python Selenium 库的使用技巧
2020/10/16 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
护士在校生自荐信
2014/02/01 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
学校与家长安全责任书
2014/07/23 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
感恩老师主题班会
2015/08/12 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python