我为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;
});
答案 0 :(得分:1)
短分辨率: 将此行添加到routes.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,
// .....
],
也许有人想为已经使用'web'中间件的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']);
});