1.控制器中舔示,使用request()->all() 獲取傳遞的全部數(shù)據(jù)粪狼。
2.CSRF保護(hù)。(CSRF是請(qǐng)求偽造的惡意攻擊纯衍,在用戶登陸后栋齿,偽造用戶的請(qǐng)求對(duì)網(wǎng)站進(jìn)行攻擊。)
為了能讓用戶正確的對(duì)網(wǎng)站發(fā)出請(qǐng)求襟诸,必須在表單中加上CSRF token瓦堵。
方式一:手動(dòng)加入,<input type="hidden" name="_token" value="{{ csrf_token()? }}">
方式二:自動(dòng)產(chǎn)生 {!! csrf_field() !!} 或 {{ csrf_field() }}
3.數(shù)據(jù)驗(yàn)證
use Validator; //引入驗(yàn)證器
// 接收輸入資料
$input = request()->all();
// 驗(yàn)證規(guī)則
$rules = [
? ? // 暱稱
? ? 'nickname'=> [
? ? ? ? 'required',
? ? ? ? 'max:50',
],
? ? 'email'=> [
? ? ? ? 'required',
? ? ? ? 'max:150',
? ? ? ? 'email',
],
? ? // 密碼
? ? 'password' => [
? ? ? ? 'required',
? ? ? ? 'same:password_confirmation',
? ? ? ? 'min:6',
],
? ? // 密碼驗(yàn)證
? ? 'password_confirmation' => [
? ? ? ? 'required',
? ? ? ? 'min:6',
],
? ? // 帳號(hào)類型
? ? 'type' => [
? ? ? ? 'required',
? ? ? ? 'in:G,A'
? ? ],
];
// 驗(yàn)證資料
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
? ? // 資料驗(yàn)證錯(cuò)誤
//重定向到注冊(cè)頁歌亲,并帶入錯(cuò)誤信息菇用。
? ? return redirect('/user/auth/sign-up')
? ? ? ? ->withErrors($validator);
}
blade頁面:
@if($errors AND count($errors))
? ? <div class="alert alert-warning" role="alert">
? ? ? ? <ul>
? ? ? ? ? ? @foreach($errors->all() as $err)
? ? ? ? ? ? ? ? <li> {{ $err }} </li>
? ? ? ? ? ? @endforeach
? ? ? ? </ul>
? ? </div>
@endif
4.驗(yàn)證信息語言設(shè)置
預(yù)設(shè)語言在 config/app.php文件中。默認(rèn)為en应结。
'timezone' => 'Asia/Shanghai',
'locale' => 'zh-CN',
'fallback_locale' => 'zh-CN',
新增zh-CN語言后刨疼,還需要在resources/lang 文件夾下新增zh-CN文件夾。并把en/validation.php 拷貝到zh-CN下鹅龄,并翻譯其中英文部分揩慕。
在文件最后可以看到attributes屬性字短數(shù)據(jù),可填入字段名稱相對(duì)應(yīng)的語言名稱
'attributes' => [
? ? // 會(huì)員
? ? 'nickname'? ? ? ? ? ? ? => '昵稱',
? ? 'email'? ? ? ? ? ? ? ? => '電子信箱',
? ? 'password'? ? ? ? ? ? ? => '密碼',
? ? 'password_confirmation' => '確認(rèn)密碼',
? ? // 商品
? ? 'name'? ? ? ? ? ? => '商品名稱',
? ? 'name_en'? ? ? ? => '商品英文名稱',
? ? 'introduction'? ? => '商品介紹',
? ? 'introduction_en' => '商品英文介紹',
? ? 'price'? ? ? ? ? => '商品價(jià)格',
? ? 'remain_count'? ? => '商品剩余數(shù)量',
],
5.使用withInput()代入原本用戶輸入的表單數(shù)據(jù)扮休。
//在模板頁面中迎卤,可通過old() 方法接收用戶先前輸入的表單數(shù)據(jù)
? ? return redirect('/user/auth/sign-up')
? ? ? ? ->withErrors($validator)
????????->withInput();
<input type="text" class="form-control" id="email" name="email" value="{{ old('email') }}">
6.密碼加密
Hash::make 函數(shù)加密
use Hash;? //哈希
// 密碼加密
$input['password'] = Hash::make($input['password']);
加密時(shí)會(huì)使用.env文件的參數(shù)APP_KEY作為加密秘鑰。
可使用artisan key:generate產(chǎn)生新的密鑰玷坠。
7.Eloquent ORM Model 文件
限制文件需放置在app/文件夾下蜗搔,但不限制下面的文件夾結(jié)構(gòu)。
$primaryKey 指定主鍵名稱八堡,$table指定表名,$fillable指定可以大量指定變更的字段樟凄。主鍵及時(shí)間等不允許變更的字段不要傳入。
在使用時(shí)兄渺,在控制器上方加入該ORM Model文件缝龄。如 use App\Shop\Entity\User;
接著可以在控制器中使用User::create();新增數(shù)據(jù)到用戶表。
namespace App\Shop\Entity;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
? ? // 資料表名稱
? ? protected $table = 'users';
? ? // 主鍵名稱
? ? protected $primaryKey = 'id';
? ? // 可以大量指定異動(dòng)的欄位(Mass Assignment)
? ? protected $fillable = [
? ? ? ? "email",
? ? ? ? "password",
? ? ? ? "type",
? ? ? ? "nickname",
? ? ];
}
use App\Shop\Entity\User; // 使用者 Eloquent Model
// 新增會(huì)員資料
$Users = User::create($input);
8.郵件服務(wù)
在使用Laravel發(fā)送郵件時(shí),必須安裝Guzzle HTTP函數(shù)庫叔壤。
composer require guzzlehttp/guzzle
郵件的設(shè)置在config/mail.php文件中瞎饲。在.env文件的郵件設(shè)置為:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
若使用其他需要憑據(jù)的郵件服務(wù)時(shí),需要對(duì)config/services.php文件進(jìn)行設(shè)置炼绘。
可使用Mail::send()方法進(jìn)行郵件發(fā)送嗅战。
$mail_binding = [
? ? 'nickname' => $input['nickname'],
? ? 'email' => $input['email'],
];
Mail::send(
? ? ? ? ? ? 'email.signUpEmailNotification',
? ? ? ? ? ? $mail_binding,
? ? ? ? ? ? function($mail) use ($mail_binding)
? ? ? ? {
? ? ? ? ? ? $mail->to($mail_binding['email']);
? ? ? ? ? ? $mail->from('kejyun@gmail.com');
? ? ? ? ? ? $mail->subject('恭喜註冊(cè) Shop Laravel 成功');
? ? ? ? });
Mail::send() 。
第一個(gè)參數(shù)是發(fā)送郵件使用的模板俺亮,模板同樣放在resources/views/目錄下驮捍。
第二個(gè)參數(shù)是傳入模板的變量數(shù)據(jù)。
第三個(gè)參數(shù)是寄件人及收件人相關(guān)設(shè)置