PHP Laravel框架心得

  学习PHP学习过程中也比较顺利,慢慢得会对程序理解越来越深。现在就讲讲我学习PHP laravel框架的心得。

目录

简介

特点

开发工具

学习感悟

后台用户登录

创建用户表

显示登录页面


简介

  Laravel是泰勒·奥特威尔使用PHP语言开发的一款Web应用框架。是一套简洁、优雅的框架,具有简洁且富与表达性的语法。

特点

1.对外只提供一个入口,从而让框架统一管理项目的又有要求。

2.采用MVC(Model-View-Controller, 模型-视图-控制器)设计模式,帮助团队更好的协同开发,为项目后期的维护提供方便。

3.支持Composer依赖管理工具,可以为项目自动安装依赖包。

4.采用ORM(Object Relational Mapp,对象关系映射)方法操作数据库,并支持AR(Active Record,活动记录)模式。

5.注重代码的模块化和可展性。可通过Laravel组件库Packalyst找到想要添加的组件,可以满足大部分开发需求。

6.自带各种方便的服务。提供啦开箱即用的用户身份验证和缓存功能等。

7.具有路由功能。

8.提供Artisan命令行工具。使用Artisan命令行工具可以自动创建一个模型或一个控制器,还可以迁移数据库、查看路由等。

开发工具

Apache

学习感悟

  本学期老师主要是带领我们做Laravel框架典型的内容管理系统项目来让我们更深入了解PHP laravel框架。

  本项目分为前台和后台。前台的功能包括用户登录与注册、内容列表、内容详细页、广告展示、评论和热门内容等。在项目开发前,先进行前期的准备工作

安装Laravel框架

composer create-project laravel/laravel=5.8.* --prefer-dist 项目名称

'./'表示当前目录,执行命令后,会在当前目录保存Laravel项目的所有代码。

登录MySQL服务器,创建数据库cms,作为内容管理系统的数据库:

mysql> CREATE DATABASE cms CHARSET utf8;

打开项目,在config\database.php数据库配置文件中,将数据库名称修改为cms:

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

在.env文件中配置正确的数据库配置信息:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cms
DB_USERNAME=root
DB_PASSWORD=123456

后台用户登录

创建用户表

(1)在命令中执行命令创建迁移文件,命令如下

php artisan make:migration create_admin_user_table

执行完命令后,会在database\migrations目录下生成文件名称为时间前缀_create_admin_user_table.php的文件。

(2)在迁移文件的up()方法中添加表结构信息

 public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id')->comment('主键');
            $table->integer('uid')->comment('用户id');
            $table->integer('cid')->comment('内容id');
            $table->string('content', 200)->comment('评论内容');
            $table->timestamps();
        });

    }

在上述的代码中,用户表的表名为admin_user,"admin_"是数据表前缀。表中共有6个字段,分别是id(主键)、用户名、密码和密码salt,以及第8行代码创建的created_at和updated_at字段。

(3)使用如下命令来执行迁移。

php artisan migrate

上述命令会执行迁移文件中的up()方法,来完成数据表的创建

(4)创建填充文件

php artisan make:seeder AdminUserTableSeeder

执行命令后,就会在database\seeds目录下生成对应的迁移文件,名为AdminUserTableSeeder.php。

(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,在模型中指定要操作的表名。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Admin extends Model
{
    protected $table = 'admin_user';
    public $fillable = ['username', 'password'];
}

 protected $table = 'admin_user'; public $fillable = ['username', 'password'];为用于指定要操作的表名和允许被修改的字段。

显示登录页面

(1)创建User控制器

php artisan make:controller Admin\UserController

执行命令后,会在app\Http\Controller\Admin目录下创建UserController.php,命名空间为App\Http\Controller\Admin。

(2)打开UserController.php,创建login方法。

 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文件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 引入静态文件 -->
    <title>登录</title>
</head>
<body class="login">
<div class="container">
    <!-- 登录表单 -->
</div>
</body>
</html>

(5)引入静态文件。

<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>

(6)在步骤(4)中的第11行代码处定义登录表单。

<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>

在上述表单中,登录表单中包含用户名、密码和验证码的输入框,为防止用户恶意登录,在登录时添加验证码的功能。

(7)使用Composer在入mews\captcha验证码库。

composer require mews/captcha=3.0

(8)创建验证码的配置文件。

php artisan vendor:publish

在命令行中输入序号9并按Enter键,就会自动生成config\captcha.php文件。

(9)编辑config\captcha.php文件,将字符个数改为4。

 'default' => [
        'length' => 4,
        'width' => 120,
        'height' => 30,
        'quality' => 100,
        'math' => false,
    ],

(10)在config\app.php中将验证码服务注册到服务容器中。

    'providers' => [
······(原有代码)
/*
* Package Service Providers
        DaveJamesMiller\Breadcrumbs\BreadcrumbsServiceProvider::class,
······(原有代码)
    ],

(11)在config\app.php文件中给验证码服务注册别名。

 'aliases' => [
···(原有代码)
        'Captcha' => Mews\Captcha\Facades\captcha::class,
    ],

(12)在登录表单中添加验证码。
 

<div class="form-group">
<div class="login-captcha"><img src="{{ captcha_src() }}"
alt="captcha"></div>
</div>

通过浏览器访问,效果如下。

(13)实现单击验证图片后更换验证码的功能,在模板中编写JaveScript代码。

<script>
$('.login-captcha img').click(function () {
$(this).attr('src', '{{ captcha_src()}}' + '?_=' + Math.random());
});
</script>

上述代码使用jQuery为验证图片绑定单击事件,单击后重新请求验证地址,从而更换验证码。为了防止因浏览器缓存造成图片不更新问题的发生,在图片地址的后面拼接了一个使用Math.random()生成的随机数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值