laravel5.3注册 登录 退出登录 邮箱找回密码 操作–登录
退出登录: 退出登录
找回密码: 找回密码
1,登录路由
a,小编这里注册路由使用了laravel的中间件,如果还有小伙伴不了解中间件,可以去laravel中文网laravel中文网laravel中文网中文网去查看。
Route::group(['namespace'=>'Admin','prefix'=>'admins'],function (){
//登录路由
Route::match(['get','post'],'login','LoginController@login');
2,控制器
a,利用laravel的表单验证进行数据处理。
b,利用laravel的验证码进行前端验证,防止恶意攻击。安装验证码
c,安装好验证码以后验证规则很简单,都在控制器里面有注释。
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Mail;
class LoginController extends Controller{
//登录路由
public function login(Request $request){
if ($request->isMethod('GET')){
//dd($_SERVER);
//获取在哪个页面点击的退出登录按钮,在次登录的时候还在此页面。
//判断一下$_SERVER数组是否存在,如果存在就输出,不存在就输出首页。
if (empty($_SERVER['HTTP_REFERER'])){
\Session::put(['paev_page'=>'http://www.he.com/admin/farmManages']);
}else{
\Session::put(['paev_page'=>$_SERVER['HTTP_REFERER']]);
}
return view('admin.registerLogin');
}else{
//表单验证方式
//接收全部数据
$values = $request->all();
//验证规则
$rules = [
'user'=>'required',
'pwd'=>'required',
'code'=>'required|captcha'
];
//返回提示信息
$message = [
'user.required'=>'用户名不能为空',
'pwd.required'=>'密码不能为空',
'code.required'=>'验证码不能为空',
'code.captcha'=>'验证码输入不正确'
];
$validator = \Validator::make($values,$rules,$message);
if ($validator->passes()){
//验证成功,去数据库查询
$user = $request->input('user');
$pwd = md5(md5($request->input('pwd')));
//用户名或者邮箱都可以登录
$sql_user = "select id,`user`,email from `user` where pwd = '$pwd' and (`user` = '$user' or email = '$user')";
$result = DB::select($sql_user);
//var_dump($result[0]->user);die();
if ($result){
$data = [
'status'=>'0',
'info'=>'登录成功',
'http'=>'http://www.he.com/admin/farmManages'
//'http'=>\Session::get('paev_page')//返回在哪个页面退出的,还在次登录到哪一个页面。//TODO <winner debug>找回密码的时候,登录成功,又返回到找回密码页面了。然而要是用户在购物车的页面退出的,找回密码,这样也不合理。
];
/*session(['user_info.id'=>$result->id]);
session(['user_info.user'=>$result->user]);
session(['user_info.email'=>$result->email]);
session(['adminUserInfo'=>$result->user]);*/
\Session::put('user',$result[0]->user);
//return redirect()->route('farmManages.index');//TODO debug<winner> 这是ajax请求过来的,在network中可以正常跳转,但是url地址不改变。只能把跳转的链接返回回去了。
return json_encode($data);
}else{
$data = [
'status'=>'1',
'info'=>'用户名或者密码输入错误'
];
return json_encode($data);
}
}else{
//验证失败,返回错误信息
return response()->json([
'status'=>'4',
'info'=>$validator->errors()->first()
]);
}
}
}
}
3,视图文件
a,小编已经把完整的登录–注册–找回密码的视图页面上传至登录–注册–找回密码的静态页面
<form id="loginForm">
<fieldset>
<label class="block clearfix">
<span class="block input-icon input-icon-right">
<input name="user" type="text" class="form-control" placeholder="请输入用户名或者邮箱登录" />
<i class="ace-icon fa fa-user"></i>
</span>
</label>
<label class="block clearfix">
<span class="block input-icon input-icon-right">
<input id="pwd" name="pwd" type="password" class="form-control" placeholder="Password" />
<i class="ace-icon fa fa-lock"></i>
</span>
</label>
<div class="space"></div>
<label style="margin-top:-12px;" class="block clearfix">
<span class="block input-icon input-icon-right">
<input type="text" class="form-control" name="code" placeholder="输入验证码" />
<img id="code" style="margin-top:10px;float: right" src="{{ captcha_src('flat') }}" onclick="this.src='/captcha/flat?'+Math.random()" title="点击图片重新获取验证码">
</span>
</label>
<div class="clearfix">
<label class="inline">
<input type="checkbox" class="ace" />
<span class="lbl"> 记住</span>
</label>
<button id="login" type="button" class="width-35 pull-right btn btn-sm btn-primary">
<i class="ace-icon fa fa-key"></i>
<span class="bigger-110">登录</span>
</button>
</div>
<div class="space-4"></div>
</fieldset>
</form>