Laravel 框架开发实战心得体会和编程思路

一.心得体会

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以从面条一样杂乱的代码中解脱出来;它可以构建网络APP,而且每行代码都可以简洁、富于表达力。

在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

让我学会了:

1..对laravel整体框架更加熟悉

2.实现了后台数据与前台数据交换

3.巩固和学习了数据库的删除、增加、修改

4.对之前学的所有的关于PHP基础、框架、网页、等进行了综合应用

二.编程思路--内容管理系统

一.项目介绍:本项目分为前台和后台。

1.下面先展示一下项目的前台页面

   前台的功能包括用户登录与注册、内容列表、内容详细页、广告展示、评论和热门内容等。

2.再来看一下后台的页面效果。后台在未登录的状态下会跳转到登录页面

 输入用户名“admin”、密码“123456”和验证码后,点击“登录”按钮,就可以进行登录了。

3.登录成功后,就会进入后台首页

顶部右侧显示了当前登录的用户名“admin”和“退出”按钮,点击“退出”按钮就可以退出后台系统。页面的左侧有一个菜单栏,用户可以在菜单栏中选择一个菜单项进行操作。

二.前期准备

1.首先,需要在计算机上安装 Laravel 框架。可以使用 Composer 在终端中安装 Laravel。命令如下:

composer create-project --prefer-dist laravel/laravel ./58.*

2.框架安装完成后,在Apache的conflextra\httpd-whosts.conf配置文件中创建一个虚拟主机,具体配置如下:
 

<VirtualHost *:80>
DocumentRoot "C:/web/apache2.4/htdocs/cms/public"
ServerName cms. test
</VirtualHost>


保存配置文件后,重启Apache使配置生效。然后,编辑Windows系统的hosts 文件,添加一条解析记录“127.0.0.1 cms. test”。

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

mysql>CREATE DATABASE cms CHARSET utf8

5.打开项目,在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', 'manager'),
            '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'),
            ]) : [],
        ]

6.在.evn文件中配置正确的数据库配置信息

 三.后台用户登录

1.创建一个迁移文件

php artisan make:migration create_admin_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

4.创建填充文件

php artisan make:seeder AdminUserTableSeeder

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

7.创建模型

php artisan make:model Admin

8.打开Admin.php ,在模型中指定要操作的表名

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

}

四.显示登录页面

1.创建User控制器

php artisan male:controller Admin\UserController

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

public function login(Request $request)
    {
        $rule = [
            'name' => 'required|bail',
            'password' => 'required|min:6'
        ];
        $message = [
            'name.required' => '用户名不能为空',
            'password.required' => '密码不能为空',
            'password.min' => '密码最少为6位'
        ];
        $validator = Validator::make($request->all(), $rule, $message);
        if ($validator->fails()) {
            foreach ($validator->getMessageBag()->toArray() as $v) {
                $msg = $v[0];
            }
            return response()->json(['status'=>'2', 'msg'=>$msg]);
        }
        $name = $request->get('name');
        $password = $request->get('password');
        $theUser = User::where('name', $name)->first();
        if ($theUser) {
            if ($password == $theUser->password) {
                Session::put('users', ['id' => $theUser->id,'name' => $name]);
                return response()->json(['status' => '1', 'msg' => '登录成功']);
            } else {
                return response()->json(['status' => '2', 'msg' => '密码错误']);
            }
        } else {
            return response()->json(['status' => '2', 'msg' => '用户不存在']);
        }
    }

3.在router\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">
  <!-- 引入静态文件 -->
  <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 = '/admin/index';
  });
</script>
</body>
</html>

通过浏览器访问,其页面效果如下:

5.判断用户登录

public function register(Request $request)
    {
        $rule = [
            'name' => 'required|unique:users',
            'email' => 'required|email',
            'password' => 'required|min:6',
            'password_confirmation' => 'required'
        ];
        $message = [
            'name.require' => '用户名不能为空',
            'name.unique' => '用户名不能重复',
            'email.require' => '邮箱不能为空',
            'email.email' => '邮箱格式不符合规范',
            'password.require' => '密码不能为空',
            'password.min' => '密码最少为6位',
            'password.confirmed' => '密码和确认密码不一致'
        ];
        $validator = Validator::make($request->all(), $rule, $message);
        if ($validator->fails()) {
            foreach ($validator->getMessageBag()->toArray() as $v) {
                $msg = $v[0];
            }
            return response()->json(['status' => '2', 'msg' => $msg]);
        }
        $re = User::create($request->all());
        if ($re) {
            Session::put('users', ['id' => $re->id, 'name' => $re->name]); // 注册成功后保存登录状态
            return response()->json(['status' => '1', 'msg' => '注册成功']);
        } else {
            return response()->json(['status' => '2', 'msg' => '注册失败']);
        }

    }

6.用户退出

    public function logout()
    {
        if (request()->session()->has('users')) {
            request()->session()->pull('users', session('users'));
        }
        return redirect('/');
    }

8.添加路由规则:

Route::post('/admin/check', 'Admin\UserController@check');

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值