最近在设计一款产品,需要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手动屏蔽验证码解决后台关闭验证码但是依然显示的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
phpwind验证码
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。