一 XAMPP 環境配置
這次我們需要開始使用繼承開發環境了,因為我們需要使用資料庫,完成使用者的登入注冊功能。
首先要配置好XAMPP環境,我們需要添加一個vhost,指向blog5.8的public目錄。
- 配置8000端口
打開XAMPP的配置目錄
xampp/apache/conf
,編輯
http.conf
檔案,搜尋
Listen 80
,然後在下面再添加一個端口監聽
Listen 8000
。修改後如下
Listen 80 Listen 8000
-
配置vhost
打開XAMPP的配置目錄
編輯xampp/apache/conf/extra
檔案,在檔案末尾添加以下内容,注意修改blog5.8的目錄httpd-vhosts.conf
<VirtualHost *:8000> ServerAdmin [email protected] 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 可以發現頂部欄已經出現了登入注冊的入口。
登入界面
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9cWWsR2MY5WNyI2c5cVWwh2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL4QjM5UDNxMjM3ATOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
注冊界面
除了生成界面之外,這個指令還在路由檔案中
route/web.php
添加了使用者登入注冊需要的路由。
生成使用者表與使用者模型
上面的操作隻是生成了使用者注冊登入的界面,并沒有建立使用者表。加入你嘗試去注冊使用者,你就會看到類似下面的錯誤提示:
請不要害怕,這隻是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會将目前注冊使用者登入,是以我們看到的是下面的界面:
到這裡,僅僅幾個指令就實作了簡單的使用者注冊登入功能。其實上面的操作還實作了郵箱找會密碼的功能,等後續我們實作使用者注冊添加郵件驗證的時候一起詳細講解。