Laravel 图片处理:验证码
安装 mews/captcha
$ composer require mews/captcha
注册服务提供者和别名(Laravel 版本 < 5.5)
如果你的 laravel 版本小于 5.5,你需要注册服务提供者和别名到 config/app.php
中。
'providers' => [
// ...
'Mews\Captcha\CaptchaServiceProvider',
],
'aliases' => [
// ...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
配置
$ php artisan vendor:publish
config/captcha.php
return [
'default' => [
'length' => 5,
'width' => 120,
'height' => 36,
'quality' => 90,
'math' => true, //Enable Math Captcha
],
// ...
];
使用
可以在 form 表单中使用如下代码生成验证码图片。
{{ captcha_img() }}
示例代码
// [your site path]/routes/web.php
Route::any('captcha-test', function() {
if (request()->getMethod() == 'POST') {
$rules = ['captcha' => 'required|captcha'];
$validator = validator()->make(request()->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="captcha-test">';
$form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">';
$form .= '<p>' . captcha_img() . '</p>';
$form .= '<p><input type="text" name="captcha"></p>';
$form .= '<p><button type="submit" name="check">Check</button></p>';
$form .= '</form>';
return $form;
});