Laravel学习6(登录)

今天来写一下用laravel做的稍简单的登录功能,首先我们需要一个form表单:

<div class="form">
   @if(session('msg'))//判断是否有msg传值
   <p style="color:red">{{session('msg')}}</p>//有的话显示这段错误(验证码或者用户名密码错误)
   @endif
   <form action="" method="post">
      {{csrf_field()}}
      <ul>
         <li>
         <input type="text" name="user_name" class="text"/>
            <span><i class="fa fa-user"></i></span>
         </li>
         <li>
            <input type="password" name="user_pass" class="text"/>
            <span><i class="fa fa-lock"></i></span>
         </li>
         <li>
            <input type="text" class="code" name="code"/>
            <span><i class="fa fa-check-square-o"></i></span>
            <img src="{{url('admin/code')}}" alt="" οnclick="this.src='{{url('admin/code')}}?'+Math.random()">
         </li>
         <li>
            <input type="submit" value="立即登陆"/>
         </li>
      </ul>
   </form>
当然你也可以模仿者写一个不需要样式只是用来测试。

之后我们需要一个控制器login:

form提交到本页面,也就是本页面路由。

控制器代码:

public function Login(){
    if($input=Input::all()){//判断是否是post请求
        $code=new \Code();//新建验证码类
        $mycode=$code->get();//调用验证码方法

        if(strtoupper($input['code'])==$mycode) {//比对验证码

            $user=User::where('user_name',$input['user_name'])->first();//需要新建一个叫User的model。链接数据库查询用户名是post提交的用户名的第一条数据
            if($user!=null&&Crypt::decrypt($user->user_pass)==$input['user_pass'])//取得搜索出数据的passwd与输入的psaawd做比较这里的Crypt::decrypt($user->user_pass)是框架内置的加密方法(稍后做解释)。

            {
                session(['user'=>$user]);//验证成功,给用户分配session
                dd(session('user'));//查看session分配是否成功
            } else {
                return back()->with('msg','账号或密码错误');//这里是类似tp的$this->error('账号密码错误');他这边是可以传值到前端
            }
        }else{
            return back()->with('msg','验证码错误');
        }

    }else {//除了post请求
        return view('admin.login');
    }
}

这边的code是验证码需要第三方的验证码库类。加载用requery_once类似

require_once 'resources/org/code/Code.class.php';

这个也是存放第三方库勒的路径。
这边不看验证码的话。

如果你的laravel没有写过model项目文件夹下是有一个叫User.php的Model(demo)删了它
之后用php artisan make:model User
新建一个User.php的model。
在与Controllers文件夹平级的地方新建一个Model文件夹将User.php移动进该文件夹。
这样Model文件夹下就有一个User.php的Model:

<?php


namespace App\Http\Model;


use Illuminate\Database\Eloquent\Model;


class User extends Model
{
    protected $table='user';//表名
    protected $primaryKey='user_id';//主键
    public $timestamps=false;//设置不使用model内部时间设置


}

这里要注意的是namespace:因为移动过所以要修改路径:
namespace App\Http\Model;
我的User.php就在App/Http/Model

这里在项目中使用User模型是你的phpstrom需要联想到User不然就要在头部写上
use App\Http\Model\User;
其他的类也是一样的。

接着说加密
laravel内置了一个Crypt类,里面有两个方法encrypt();decrypt()
第一个是加密第二个是解密,这里要注意的是相同字符串每次加密得到的结果都是不一样的,所以你需要依靠解密来比对密码。
用第三方验证码的时候要在index.php开启源生session。

当你发现传值没有作用的时候请检查你的路由是否开启web控件并且检查在前端是否使用;
{{csrf_field()}}
csrf的验证。








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值