Files
Pro/application/admin/controller/Login.php
T
2026-02-25 01:50:31 +08:00

97 lines
3.2 KiB
PHP
Executable File

<?php
namespace app\admin\controller;
use think\Session;
use think\Controller;
use ValidateCode\ValidateCode;
use think\Request;
use think\Db;
class Login extends Controller{
/**
* 登录页面
*/
public function index(){
$user_info = Session::get('user_info');
if(!empty($user_info)){
$this->redirect('/',302);
}
return $this->fetch();
}
/**
* 处理登录
*/
public function do_login(){
if(Request::instance()->post()){
// 接收表单提交过来的数据,做数据验证
$admin = Request::instance()->post('username');
$password = Request::instance()->post('password');
$code = Request::instance()->post('code');
if(!isset($admin) || empty($admin)){
die(json_encode(['code'=>0,'msg'=>'用户名不能为空!']));
}
if(!isset($password) || empty($password)){
die(json_encode(['code'=>0,'msg'=>'密码不能为空!']));
}
if(!isset($code) || empty($code)){
die(json_encode(['code'=>0,'msg'=>'验证码不能为空!']));
}
// 从session里拿到验证码,进行验证码对比
$validate_code = Session::get('validate_code');
if($code != $validate_code){
die(json_encode(['code'=>0,'msg'=>'验证码错误!']));
}
// 查询客户信息,判断用户名和密码是否正确
$admin_info = Db::name('admin')->where('admin',$admin)->find();
if(empty($admin_info)){
die(json_encode(['code'=>0,'msg'=>'用户不存在!']));
}
if(think_ucenter_md5($password,UC_AUTH_KEY) != $admin_info['password']){
die(json_encode(['code'=>0,'msg'=>'密码错误!']));
}
if($admin_info['status'] != 1){
die(json_encode(['code'=>0,'msg'=>'该账户未激活!']));
}
$last_login_info = Db::name('admin')->where(array('id' => $admin_info['id']))->field(['last_login_time','last_login_ip'])->find();
Session::set('last_login_info',$last_login_info);
// 生成login_token用于WebSocket连接验证
$login_token = md5($admin_info['id'] . time() . uniqid());
Db::name('admin')->where(array('id' => $admin_info['id']))->update(array(
'last_login_time' => time(),
'last_login_ip' => getIP(),
'login_token' => $login_token
));
$user_info = Db::name('admin')->where('id',$admin_info['id'])->find();
Session::set('user_info',$user_info);
insertAdminLog('登录');
die(json_encode(['code'=>1,'msg'=>'登录成功!']));
}else{
die(json_encode(['code'=>0,'msg'=>'操作错误!']));
}
}
/**
* 登出
*/
public function logout(){
insertAdminLog('退出');
Session::set('user_info',"");
Session::set('last_login_info',"");
$this->redirect('/login/index',302);
}
/**
* 验证码
*/
public function validateCode(){
$validate = new ValidateCode();
$validate->doimg();
}
}