验证码导入:
- 命令行运行composer require mews/captcha 安装依赖包(需要php>=5.4,php.ini开启GD库)
- config\app.php的providers里加上Mews\Captcha\CaptchaServiceProvider::class,
- config\app.php的aliases里加上’Captcha’ => Mews\Captcha\Facades\Captcha::class,
- 命令行运行php artisan vendor:publish,输入Provider: Mews\Captcha\CaptchaServiceProvider的序号后回车,生成config\captcha.php,可修改此文件控制验证码的生成
- controller里validate函数设置字段验证规则和报错信息
参考https://qiita.com/gone0021/items/5699c29c7ce64f08b8d2
如果表单字段验证不通过,下面的代码可以在页面上显示不通过的原因
@if(count($errors)>0)
@foreach($errors->all() as $e)
{{ $e }}<br/>
@endforeach
@endif
//resources\views\test\v3.blade.php
@extends('mytemplate.parent')
@section('part1')
@if(count($errors)>0)
@foreach($errors->all() as $e)
{{ $e }}<br/>
@endforeach
@endif
<form method="post" action="{{ route('v4r') }}" enctype="multipart/form-data">
<!-- 方式1:laravel 5.6 及以后版本,也是 csrf_field() 的简写 -->
<!-- @csrf -->
<!-- 方式2:laravel 5.6 以下老版本 -->
<!-- {{ csrf_field() }} -->
<!-- 方式3:添加隐藏字段-->
<input name="_token" type="hidden" value="<?php echo csrf_token(); ?>">
<!-- 输出上面的 token 字符串 -->
{{ csrf_token() }}<br />
name:<input type='text' name="name" value='111' /><br />
age:<input type='text' name="age" value='3' /><br />
email:<input type='text' name="email" value='2@2' /><br />
file:<input type='file' name="file1" /><br />
capture:<input type='text' name="cap" /><br />
<img src="{{captcha_src()}}" style="cursor: pointer" onclick="this.src='{{captcha_src()}}'+Math.random()">
<input type='submit' value='Submit' />
</form>
@endsection
@section('part2')
<?php
echo '<form method="post" action="' . route('v4r') . '" enctype="multipart/form-data">';
echo '<input name="_token" type="hidden" value="' . csrf_token() . '">';
echo '<input type="text" name="id" value="enter name"/>';
echo '<input type="file" name="file1"/>';
echo '<input type="submit" value="Submit"/></form>';
?>
@endsection
//app\Http\Controllers\TestViewController.php
public function v4(Request $request)
{
$validate_rule = [
'name' => 'required|min:2|max:4',
'age' => 'required|numeric|min:2|max:4',
'email' => 'required|email',
'file1' => 'required|file',
'cap' => 'required|captcha',
];
$validate_msg = [
'name.required' => '名前を入力してください',
'age.numeric' => '整数で入力してください',
'cap.captcha' => '验证码错误',
];
// 参数2($validate_msg)可以不传
// $request->validate($validate_rule);
$request->validate($validate_rule, $validate_msg);
$fn = 'file1';
if ($request->hasFile($fn) && $request->file($fn)->isValid()) {
$fname = md5(time()) . rand(100, 999) . '.' . $request->file($fn)->getClientOriginalExtension();
echo $fname;
//会上传到\public\upload
// $request->file($fn)->move('./upload', $fname);
$request->file($fn)->move(getcwd() . '/upload', $fname);
} else {
echo $request->file($fn)->getError() . '<br/>';
echo $request->file($fn)->getErrorMessage() . '<br/>';
}
return view('test.v4');
}