目录
前期准备
安装 phpstudy
官网:https://www.xp.cn/download.html
下载完成解压安装
安装成功一般会在D盘生成一个文件夹
把自己的文件夹放在该目录下的www目录中
打开小皮安装mysql管理工具
登录MySQL服务器创建数据库cms
打开项目,在config\database.php配置文件中,将数据库名称改为cms
还需要在env文件中配置正确的数据库信息
安装Laravel
安装命令:composer create-project --prefer-dist laravel/laravel ./5.8.*
在自己的目录下打开终端安装laravel
输入命令
配置一个虚拟主机
一.创建用户表
1.在命令行创建迁移文件
命令:php artisan make:migration create_admin_user_table
执行完上述命令后,会在database\migration目录下生成名称为 create_admin_user_table的文件
2.在该文件的up方法中添加表结构信息
代码如下:
public function up()
{
Schema::create('admin_user', function (Blueprint $table) {
$table->increments('id')->comment('主键');
$table->string('username', 32)->comment('用户名')->unique();
$table->string('password', 32)->comment('密码');
$table->char('salt', 32)->comment('密码salt');
$table->timestamps();
});
}
3.迁移文件创建完成后,要执行迁移 命令如下:
php artisan migrate
上述命令会执行迁移文件中的up()方法,来创建数据表的创建
4.创建填充文件,命令如下:
php artisan make:seeder AdminUserTableSeeder
执行完命令,会在database\seeds目录下生成对应的迁移文件
5.打开AdminUserTableSeeder.php文件,在run()方法中编写填充代码
具体代码:
public function run()
{
$salt = md5(uniqid(microtime(), true));
$password = md5(md5('123456') . $salt);
DB::table('admin_user')->insert([
[
'id' => 1,
'username' => 'admin',
'password' => $password,
'salt' => $salt
],
]);
}
}
6.通过命令执行填充文件 命令如下:
php artisan db:seed --class=AdminUserTableSeeder
命令执行后,会向数据表插入一条记录,用户名为admin 密码是123456
7.数据表创建成功后,需要创建模型 命令如下:
php artisan make:model Admin
8.打开app目录下的Admin.php文件中指定要操作的表名
具体代码:
class Admin extends Model
{
protected $table = 'admin_user';
public $fillable = ['username', 'password'];
}
二.显示登录页面
1.创建一个名为User的控制器 命令如下:
php artisan make:controller Admin\UserController
执行完命令后会在app\Http\Controller\Admin目录下创建了一个UserController.php
2.打开UserController.php,创建login()方法
代码如下:
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Admin;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller
{
//
public function login(){
return view('admin/login');
}
3.在routes\web.php文件中添加路由规则
代码如下:
Route::get('/admin/login', 'Admin\UserController@login');
4.在resources\views目录中创建admin目录
在admin目录中创建login.blade.php文件
在login.blade.php文件中添加代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入静态文件 -->
<link rel="stylesheet" href="{{asset('admin')}}/common/twitter-bootstrap/4.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="{{asset('admin')}}/common/font-awesome-4.2.0/css/font-awesome.min.css">
<link rel="stylesheet" href="{{asset('admin')}}/common/toastr.js/2.1.4/toastr.min.css">
<link rel="stylesheet" href="{{asset('admin')}}/css/main.css">
<script src="{{asset('admin')}}/common/jquery/1.12.4/jquery.min.js"></script>
<script src="{{asset('admin')}}/common/twitter-bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script src="{{asset('admin')}}/common/toastr.js/2.1.4/toastr.min.js"></script>
<script src="{{asset('admin')}}/js/main.js"></script>
<title>登录</title>
</head>
<body class="login">
<div class="container">
<!-- 登录表单 -->
<form action="{{url('admin/check')}}" method="post" class="j-login">
<h1>后台管理系统</h1>
<div class="form-group">
<input type="text" name="username" class="form-control" placeholder="用户名" required>
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="密码" required>
</div>
<div class="form-group">
<input type="text" name="captcha" class="form-control" placeholder="验证码" required>
</div>
<!-- 验证码 -->
<div class="form-group">
<div class="login-captcha"><img src="{{ captcha_src() }}" alt="captcha"></div>
</div>
<div class="form-group">
{{csrf_field()}}
<input type="submit" class="btn btn-lg btn-block btn-success" value="登录">
</div>
</form>
</div>
<script>
$('.login-captcha img').click(function() {
$(this).attr('src','{{ captcha_src() }}' + '?_=' + Math.random());
});
main.ajaxForm('.j-login',function(){
location.href = '/index.php/admin/index';
});
</script>
</body>
</html>
5.使用Composer载入mews/captcha验证码库 命令如下:
composer require mews/captcha=3.0
6.创建验证码的配置文件 命令如下:
php artisan vendor:publish
执行完上述命令后,在命令行输入序号9并按回车键,就会生成config\captcha.php文件
7.编辑config\captcha.php文件,将字符个数改为4
代码如下:
'default' => [
'length' => 4,
'width' => 120,
'height' => 30,
'quality' => 100,
'math' => false,
],
8.在config\app.php文件中将验证码服务注册到服务容器中
具体代码:
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::class,
Illuminate\Encryption\EncryptionServiceProvider::class,
Illuminate\Filesystem\FilesystemServiceProvider::class,
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
Mews\Captcha\CaptchaServiceProvider::class,
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
DaveJamesMiller\Breadcrumbs\BreadcrumbsServiceProvider::class,
],
9.在config\app.php文件中给验证码服务注册别名
具体代码:
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'Captcha' => Mews\Captcha\Facades\Captcha::class,
'Breadcrumbs' => DaveJamesMiller\Breadcrumbs\Facades\Breadcrumbs::class,
],
];
10.在login.balde.php文件中添加验证码
具体代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入静态文件 -->
<link rel="stylesheet" href="{{asset('admin')}}/common/twitter-bootstrap/4.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="{{asset('admin')}}/common/font-awesome-4.2.0/css/font-awesome.min.css">
<link rel="stylesheet" href="{{asset('admin')}}/common/toastr.js/2.1.4/toastr.min.css">
<link rel="stylesheet" href="{{asset('admin')}}/css/main.css">
<script src="{{asset('admin')}}/common/jquery/1.12.4/jquery.min.js"></script>
<script src="{{asset('admin')}}/common/twitter-bootstrap/4.4.1/js/bootstrap.min.js"></script>
<script src="{{asset('admin')}}/common/toastr.js/2.1.4/toastr.min.js"></script>
<script src="{{asset('admin')}}/js/main.js"></script>
<title>登录</title>
</head>
<body class="login">
<div class="container">
<!-- 登录表单 -->
<form action="{{url('admin/check')}}" method="post" class="j-login">
<h1>后台管理系统</h1>
<div class="form-group">
<input type="text" name="username" class="form-control" placeholder="用户名" required>
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="密码" required>
</div>
<div class="form-group">
<input type="text" name="captcha" class="form-control" placeholder="验证码" required>
</div>
<!-- 验证码 -->
<div class="form-group">
<div class="login-captcha"><img src="{{ captcha_src() }}" alt="captcha"></div>
</div>
<div class="form-group">
{{csrf_field()}}
<input type="submit" class="btn btn-lg btn-block btn-success" value="登录">
</div>
</form>
</div>
<script>
$('.login-captcha img').click(function() {
$(this).attr('src','{{ captcha_src() }}' + '?_=' + Math.random());
});
main.ajaxForm('.j-login',function(){
location.href = '/index.php/admin/index';
});
</script>
</body>
</html>
11.通过浏览器访问 效果如图:
总结:
通过学习,掌握了Laravel框架进行项目开发,实现用户登录功能,对数据表的增加、删除、修改、查询功能,为以后更加复杂的项目打下基础。