改两个部分:
1、在linux 机器上面执行命令找到文件LoginController.php
/usr/local/apache2/htdocs/phpwind/src/applications/u/controller/LoginController.php---找到对应的文件地址
Login,登录部分,在路径.\src\applications\u\controller 下,从文件名不难认出,LoginController.php就是用于登录的部分
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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
);
}
|
显而易见,首先我们需要屏蔽掉验证码显示部分。
将
|
1
|
$this
->setOutput(
$this
->_showVerify(),
'verify'
);
//验证码显示
|
修改成
|
1
|
//$this->setOutput($this->_showVerify(), 'verify');//验证码显示
|
至此,我们完成了验证码显示的隐藏,但是到这一步你如果登录会发现,居然提示验证码错误,所以我们需要进一步修改,使得更像没有验证码,是的!我们要不论如何都返回验证码成功。
2、在linux 系统上面执行命令找到文件PwVerifyService.php
[root@bogon ~]# find / -name "PwVerifyService.php"
/usr/local/apache2/htdocs/phpwind/src/service/verify/srv/PwVerifyService.php------找到对应的文件地址
验证码属于服务部分(详情看官方文档),文件在.\src\service\verify\srv中,同样按照文件名可以分辨出PwVerifyService.php就是提供验证码服务的主要文件。
这时候我又贴出一段代码(机遇部分备注内容)
|
1
2
3
4
5
6
7
8
9
10
11
|
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;
}
|
解决方法:方法一:注释掉这行// if ($code == '') return false; 方法二:if ($code == '') return true;
|
1
2
3
4
5
6
7
8
9
10
11
|
方法一:
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;}
方法二: public function checkVerify($verifyType, $code = '') { if ($code == '') return true; $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; }
|
至此,问题解决了。
本文介绍如何在PHPWind论坛系统中禁用登录时的验证码功能。通过修改LoginController.php和PwVerifyService.php两个文件,实现登录时跳过验证码验证的过程。
3086

被折叠的 条评论
为什么被折叠?



