laravel自学笔记

laravel笔记

第一节

composer安装命令:

curl -sS https://getcomposer.org/installer | php  # 下载composer.phar
mv composer.phar /usr/local/bin/composer   # 移动composer.phar 并更名为composer,让composer可以全局使用

laravel安装器:

composer global require "laravel/installer"

vi ~/.zshrc编写环境变量做全局配置:

export PATH="$HOME/.composer/vendor/bin:$PATH"

进入www目录进行安装:

laravel new MyProject

启动环境的命令为:

php artisan serve

第二节

编辑Nginx中的默认站点目录配置成我们的项目名。

server {
    listen       80;
    server_name  localhost;
    root         /usr/local/var/www/blog;

    access_log  /usr/local/var/log/nginx/default.access.log  main;

    location / {
        index  index.html index.htm index.php;
        autoindex   on;
        include     /usr/local/etc/nginx/php-fpm;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;
}

小记:创建控制器的php artisan命令为:

php artisan make:controller IndexController

小记:测试是否有数据库配置是否正确:在控制器中编写代码测试,在路由中配置访问路径。

$pdo = DB::connection()->getPdo();

视图模块与js、css文件引入,置于public文件夹。

导入laravel验证码类的方法:
1、通过composer安装命令

composer require mews/captcha

2、config文件夹中app.php进行配置项配置

'providers' => [
    // ...
    Mews\Captcha\CaptchaServiceProvider::class,
]
......
'aliases' => [
    // ...
    'Captcha' => Mews\Captcha\Facades\Captcha::class,
]

3、在项目目录下使用命令生成chptcha:

php artisan vendor:publish

4、获得图片captcha_img()方法即可,如有疑问查询github扩展库
5、视图层,刷新验证码代码:

"{{ url('/admin/code') }}" οnclick="refreshVerify()" id="verify" />


function refreshVerify(){
    $url = "{{ url('/admin/code') }}";
    $url = $url + "?" + Math.random();
    document.getElementById('verify').src = $url;
}

6、验证逻辑:

/** * 登陆验证操作 * @param Request $request * @return true view false back() */
public function dologin(Request $request){
//动态验证规则:
$rules = ['code' => 'required|captcha'];

$codeValidate = Validator::make($request->all(),$rules);
if($codeValidate->fails()){
    return back()->with('msg','验证码错误');
}
//获取加密与解密码的一种方式crypt中encrypt()加密,decrypt()解密
// echo encrypt($request->password);

$user = User::first();
// dd($user);
if($user->username != $request['username'] && decrypt($user->password) != $request['password']){
    return back()->with('msg','用户名或者密码错误');
}

session(['user'=>$user]);
return redirect('admin/index'); //跳转后台首页

}

后台页面的子视图设置:在目录resource->layouts目录->admin.blade.php文件下面代码:


<html lang="en">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="/admin/style/css/ch-ui.admin.css">
    ..... //共有的文件夹
head>
<body>
@yield('content') //共有部分的,要被继承重写的
body>
html>

视图中应用:

@extends('layouts.admin') //注意路径
@section('content')
....这里写重写部分的代码即可。
@endsection

中间件实现访问控制:创建中间件php artisan 命令

php artisan make:middleware AdminLogin//中间件名

AdminLogin.php中使用中间件来判断是否已经登陆:

/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */
public function handle($request, Closure $next)
{
    //在这里对session进行判断,如果没有session值则让用户回到登陆页面
    if(!session('user')){
        return redirect('admin/login'); //跳转
    }
    return $next($request);
}

路由设置:

//使用中间件的路由设置
Route::group(['middleware' => ['web','admin.login']], function () {
    Route::get('admin/index','Admin\IndexController@index');
    Route::get('admin/info','Admin\IndexController@info');
});

第三节:修改登录密码

1.我们主要对超级管理员的密码进行修改,在修改的时候我们应该要清楚,这么一个流程继你修改密码提交表单后,在控制器中应该对传过来的数据进行表单的验证,验证的方法以及修改密码的方法如下,如果想更清楚的了解验证规则可参考文档。

/** * 修改密码的操作。 * @param Request $request */
public function updpass(Request $request) {
    $rules = ['password'=>'required|between:6,20|confirmed']; //验证规则

    //自定义的验证规则提示信息
    $message = [
        'required'=>'新密码不能为空!',
        'between'=>'新密码在6~20位之间',
        'confirmed'=>'请确认密码',
    ];

    //动态验证数据
    $validator = Validator::make($request->all(),$rules,$message);
    if($validator->fails()){
        return redirect('admin/pass')->withErrors($validator)->withInput();
    }else{
        //验证要更改原密码是否正确,正确再进行修改
        $user = User::first();
        $_password = Crypt::decrypt($user->password);
        if($_password == $request->input('password_o')){
            $user->password = Crypt::encrypt($request->input('password'));
            $user->update();
// return redirect('admin/info');
            $msg = ['msg'=>'密码修改成功'];
            return back()->withErrors($msg);
        }else{
            $msg = ['msg'=>'原来的密码错误'];
            return redirect('admin/pass')->withErrors($msg)->withInput();
        }
    }
}

你可能感兴趣的:(PHP)