Laravel5.8 入門系列二,快速實現使用者註冊登入功能

寫PHP的老王發表於2019-09-08

XAMPP 環境配置

這次我們需要開始使用繼承開發環境了,因為我們需要使用資料庫,完成使用者的登入註冊功能。
首先要配置好XAMPP環境,我們需要新增一個vhost,指向blog5.8的public目錄。

  1. 配置8000埠

開啟XAMPP的配置目錄xampp/apache/conf,編輯http.conf檔案,搜尋Listen 80,然後在下面再新增一個埠監聽Listen 8000。修改後如下

Listen 80 Listen 8000

  1. 配置vhost
    開啟XAMPP的配置目錄xampp/apache/conf/extra 編輯 httpd-vhosts.conf檔案,在檔案末尾新增以下內容,注意修改blog5.8的目錄

<VirtualHost *:8000> ServerAdmin wulei@jingcheng.cn DocumentRoot "D:/code/blog5.8/public" ServerName localhost </VirtualHost> <Directory "D:/code/blog5.8/public"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>

到這裡,我們已經配置好了xampp,其他的我們使用預設配置。現在訪問http://localhost:8000 可以看到之前使用laravel內建伺服器訪問過的首頁。

資料庫使用預設的http://localhost/phpmyadmin管理。訪問http://localhost/phpmyadmin建立一個名為laravel58的資料庫,字符集設定為utf8mb4_general_ci

配置資料庫資訊

Laravel 本身已經生成好了配置檔案。資料庫的配置檔案在blog5.8/conf/database.php中。Laravel5.8的資料庫配置檔案中包含了各種資料庫配置的例子,這裡我們使用的是mysql資料庫,所以我們需要修改database.php中的mysql配置

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]),
],

我們需要修改的內容有資料庫連線地址,資料庫名稱,資料庫使用者名稱,資料庫密碼,其他的引數,視自己本地資料庫配置修改。這裡要注意,一般在開發中,對資料庫配置而已是比較敏感的內容。因此一般使用本地環境變數配置實際的資料庫資訊。Laravel 的所有本地環境變數都配置在根目錄下的.env檔案中。這個檔案在預設windowns檔案瀏覽器下是隱藏的。

這裡我們也使用本地環境便利配置好我們的本地書庫

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=larave58 #//註釋,資料庫名稱 DB_USERNAME=root #//註釋,資料庫使用者名稱 DB_PASSWORD= #註釋,資料庫密碼,xampp預設為空

一鍵生成註冊登入頁面

Laravel本身提供快捷構建使用者登入的命令。在根目錄下,執行以下命令:
sh php artisan make:auth
這樣,laravel就為我們構建好了,使用者登入註冊的介面了。介面的試圖檔案在resources\views\auth目錄下。註冊登入相關的控制器在app\Http\Controllers\Auth目錄下

訪問http://localhost:8000 可以發現頂部欄已經出現了登入註冊的入口。

登入介面

Laravel5.8 入門系列二,快速實現使用者註冊登入功能

註冊介面
Laravel5.8 入門系列二,快速實現使用者註冊登入功能

除了生成介面之外,這個命令還在路由檔案中route/web.php新增了使用者登入註冊需要的路由。

Auth::routes();

生成使用者資料表

上面的操作只是生成了使用者註冊登入的介面,並沒有建立使用者表。加入你嘗試去註冊使用者,你就會看到類似下面的錯誤提示:

Laravel5.8 入門系列二,快速實現使用者註冊登入功能

請不要害怕,這只是laravel在告訴你,你在註冊使用者之前,系統沒有準備好資料表。

Laravel已經準備好了資料遷移檔案,我們只要在命令列中執行資料遷移命令,laravel就會幫我們建立好所需要的資料表。在根目錄下,執行下面的命令:
sh php artisan migrate

這一步,如果你的命令提升錯誤,錯誤資訊類似於下面

PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Sp ecified key was too long; max key length is 767 bytes")
這是由於mysql版本照成的。如果出現這個錯誤提升,那麼,請編輯app\Provides\AppServiceProvider.php,修改register方法如下:

php public function register() { \Schema::defaultStringLength(191); }
然後刪除掉資料庫中的所有的表,重新執行一遍資料遷移命令就可以了。

以上操作成功之後,我們就可以註冊使用者了,這裡我們註冊一個admin的使用者。註冊成功之後,Laravel會將當前註冊使用者登入,所以我們看到的是下面的介面:

Laravel5.8 入門系列二,快速實現使用者註冊登入功能

到這裡,僅僅幾個命令就實現了簡單的使用者註冊登入功能。其實上面的操作還實現了郵箱找會密碼的功能,等後續我們實現使用者註冊新增郵件驗證的時候一起詳細講解。

寫PHP的老王

相關文章