我为securimage验证码安装了一个laravel软件包,一切似乎都很好(如其中显示了随机验证码),但是即使在输入正确的文本后,它仍然表示无效。有人能帮助我吗。这是我的代码
Route::any('/test-captcha', function (){
if (Request::getMethod() == 'POST')
{
$rules = ['captcha' => 'required|captcha'];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
{
echo '<p style="color: #ff0000;">Incorrect!</p>';
}
else
{
echo '<p style="color: #00ff30;">Matched :)</p>';
}
}
$form = '<form method="post" action="test-captcha">';
$form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
$form .= '<p>' . captcha_img() . '</p>';
$form .= '<p><button type="submit" name="check">Check</button></p>';
$form .= '</form>';
return $form;
});
简短的解决方案:将此行添加到您的route.php文件:
Route::get('securimage', ['as' => 'securimage', 'uses' => '\Yhbyun\Securimage\SecurimageController@getCaptcha']);
Route::get('securimage/audio', ['as' => 'securimage.audio', 'uses' => '\Yhbyun\Securimage\SecurimageController@getAudio']);
Route::get('securimage/check', ['as' => 'securimage.check', 'uses' => '\Yhbyun\Securimage\SecurimageController@check']);
这种情况下的问题是,程序包在/vendor/yhbyun/laravel-securimage/src/SecurimageServiceProvider.php中定义其路由,如下所示:
$app['router']->get('securimage', ['as' => 'securimage', 'uses' => 'Yhbyun\Securimage\SecurimageController@getCaptcha']);
$app['router']->get('securimage/audio', ['as' => 'securimage.audio', 'uses' => 'Yhbyun\Securimage\SecurimageController@getAudio']);
$app['router']->get('securimage/check', ['as' => 'securimage.check', 'uses' => 'Yhbyun\Securimage\SecurimageController@check']);
如果运行php artisan route:list
,则可以看到没有应用中间件,因为在Laravel的Kernel.php文件中,仅将routes.php中定义的路由与应用的“ web”中间件组合在一起:
Route::group([
'middleware' => 'web',
'namespace' => $this->namespace,
], function ($router) {
require base_path('routes/web.php');
});
Web中间件组包含用于启动会话的中间件:
'web' => [
// ....
\Illuminate\Session\Middleware\StartSession::class,
// .....
],
也许有人想为已经使用“网络”中间件的Laravel版本创建拉取请求。可能是这样的(在SecurimageServiceProvider.php内部):
$app['router']->group(['middleware' => 'web'], function() use ($app) {
$app['router']->get('securimage', ['as' => 'securimage', 'uses' => 'Yhbyun\Securimage\SecurimageController@getCaptcha']);
$app['router']->get('securimage/audio', ['as' => 'securimage.audio', 'uses' => 'Yhbyun\Securimage\SecurimageController@getAudio']);
$app['router']->get('securimage/check', ['as' => 'securimage.check', 'uses' => 'Yhbyun\Securimage\SecurimageController@check']);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句