php里面普通用户登录成功而管理员登录失败,session问题,以及用户页面登录成功后的不能login页面报错问题...

老师我在6-10章节中有个问题我在login页面的时候打印session的数据显示正常

b6a194c9618be53bbdff4caae991c2bd.png

但我的admin用户登录成功后可以正常跳转到后台index页面但是看打印session的数据时候就显示错误了

905556ceb673958ee94989f446969ced.png

而且只要登录成功后再打开login页面就显示下图不能显示页面只能清空缓存才能正常显示login页面回事什么问题谢谢

f5a75883a66367bf8e7c04d1d6eda957.png

我的login 控制器代码

namespace appadmincontroller;

use thinkacadeView;

use appcommonmodelmysqlAdminUser;

class Login extends AdminBase {

//如果用户已经登录跳转到后台首页

public function initialize() {

if ($this -> isLogin()) {

return $this -> redirect(url("index/index"));

}

}

//加载Login登录页面模板

public function index() {

return View::fetch();

}

//生成admin的md5密码

public function md5() {

dump (session(config("admin.session_admin")));

echo md5("admin_roger"); //admin_roger是加密隐藏字符串

}

//登录页面检查

public function check() {

//检查判断登录页面是否是用Post方式传过来的请求如果不是发出错误提醒

if (!$this -> request -> isPost()){

return show(config("status.error"),"登录请求方式错误");

}

//参数校验 1.原生方式

$username = $this -> request -> param("username", "", "trim");

$password = $this -> request -> param("password", "", "trim");

$captcha = $this -> request -> param("captcha", "", "trim");

if (empty($username) || empty($password) ||empty($captcha)) {

return show(config("status.error"), "登录时提交内容不能为空");

}

//校验 验证码是否正确使用TP6方法,使用此方法须要在app目录下的middleware.php中开启Session初始化

if (!captcha_check($captcha)) {

//验证码校验失败

return show(config("status.error"), "验证码错误请检查");

}

try{

//从数据库中获取用户数据

$adminUserObj = new AdminUser();

$adminUser = $adminUserObj -> getAdminUserByUsername($username);

//如果数据库表用户为空或者admin的用户状态不等于status.php文件的mysql.table_normal设置

if (empty($adminUser) || $adminUser -> status != config("status.mysql.table_normal")) {

return show(config("status.error"), "用户名不存在");

}

$adminUser = $adminUser -> toArray(); //把$adminUser对象转换为字符串

//判断密码是否正确

if ($adminUser['password'] !=md5($password."_roger")) {

return show(config("status.error"), "密码错误");

}

//更新信息到MySQL表中

$updateData = [

"last_login_time" => time(),

"last_login_ip" => request() -> ip(),

"update_time" => time(),

];

$res = $adminUserObj -> updateById($adminUser['id'], $updateData);

if (empty($res)) {

return show(config("status.success"), "登录失败");

}

} catch (Exception $e) {

//todo 记录日志 $e -> getMessage() "内部错误通过日志方式获取到日志文件中

return show(config("status.success"), "内部日常登录失败");

}

//记录session,配置文件在admin/config/admin.php

session(config("admin.session_admin"),$adminUser);

return show(config("status.success"), "登录成功");

}

namespace app\admin\controller;

use app\BaseController;

use think\exception\HttpResponseException;

class AdminBase extends BaseController

{

public $adminUser = null;

/**

* 初始化基础控制器

*/

public function initialize()

{

parent::initialize();

// // TODO: 判断是否登录,如果用户的session为空,跳转到登陆页

// if (empty($this -> isLogin()))

// {

// return $this -> redirect(url("login/index"), 302);

// }

}

/**

* 判断用户是否已经登录

* @return bool

*/

public function isLogin()

{

$this -> adminUser = session(config("admin.session_admin"));

if (empty($this -> adminUser))

{

return false;

}

return true;

}

/**

* redirect方法定义

* @param mixed ...$args

*/

public function redirect(...$args)

{

throw new HttpResponseException(redirect(...$args));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值