今天来写一下用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的验证。