iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
Software Development

跟著官方文件學習Laravel, 並實作出一個會員登入系統系列 第 8

Day8 跟著官方文件學習Laravel-註冊帳號

今天要把用指令傳進來的資料寫進DB完成註冊,首先我們要在DB中創建一張Users的表

CREATE TABLE ironman.Users (
	id INT auto_increment Primary key,
	account varchar(100) NOT NULL,
	password varchar(100) NOT NULL,
	name varchar(100) NOT NULL
)

好的,我們現在先想一下註冊帳號的步驟是什麼

  1. 檢查帳號是否存在
  2. 若不存在,把資料存進資料庫
  3. 顯示註冊成功

那我們開始實作第一步吧
先學學如何select資料吧

$user = DB::table('users')->where('account', $account)->first();
dd($user);

好,他回我null,表示說當$user === null時,我就可以把資料寫進資料庫

if($user === null){
    // insert data
}

如何insert data呢

DB::table('users')->insert([
    'account' => $account,
    'password' => $password,
    'username' => $name
]);

laravel有提供Hash::make來散列密碼

DB::table('users')->insert([
    'account' => $account,
    'password' => Hash::make($password),
    'username' => $name
]);

OK...默默地寫完了,好我們來試著註冊看看吧

php artisan sign-up myaccount 23acCC_ yourname

成功了,可以再輸入一次試試看會怎樣,結果發現,重複註冊時,沒跳訊息XD
補一下

$account = $this->argument('account');
        $password = $this->argument('password');
        $username = $this->argument('username');
        $validator = Validator::make(['password' => $password], [
            'password' => 'regex:' . SignUp::PASSWORD_REGEX
        ]);

        if ($validator->fails()) {
            $this->error("密碼需要6位數以上,並且至少包含大寫字母、小寫字母、數字、符號各一");
            return 1;
        }
        $user = DB::table('users')->where('account', $account)->first();
        if($user !== null){
            $this->error("帳號重複註冊");
            return 1;
        }
        DB::table('users')->insert([
                'account' => $account,
                'password' => Hash::make($password),
                'name' => $username
            ]);
        return 0;

OK,完成啦,明天來做登入驗證!


上一篇
Day7 跟著官方文件學習Laravel-開始學習Command用法
下一篇
Day9 跟著官方文件學習Laravel-登入驗證
系列文
跟著官方文件學習Laravel, 並實作出一個會員登入系統30

尚未有邦友留言

立即登入留言