ThinkPHP3.2.3如何实现系统登录日志?

时间:2022-09-24 17:13:21
1.数据库表
ThinkPHP3.2.3如何实现系统登录日志?
ThinkPHP3.2.3如何实现系统登录日志?

2.Controller控制器写一个记录日志的方法,可供其它地方调用,这样可以提高代码的复用性

 /**
* //系统操作日志方法
* @param $log
* @param $userid
*/
public function UserLoginLog($log, $userid)
{
$logModel = M('Log'); //实例化模型
$data = array(
'user_id' => $userid, //用户ID
'op_log' => $log, //操作内容
'op_time' => time() //操作时间(当前系统时间)
);
$logModel->add($data);
}
 

3.在用户登录成功的时候调用UserLoginLog操作日志的方法

 public function Login()    {        if (IS_POST) {            $verify = new \Think\Verify();            if (!$verify->check(I('post.captcha'), 3)) {                $this->error('你输入的验证码有误!请重新输入');            }            if (D('User')->create(I('post.'), 4)) {                //调用UserModel的方法 (I()获取post提交的内容)                $userinfo = D('User')->checkLogin(I('post.username'), I('post.password'));                if ($userinfo) {                    session('username', $userinfo['username']);                    session('user_id', $userinfo['user_id']);                    //登录成功,写入日志                    $this->UserLoginLog("登录系统", session('user_id'));                    $this->redirect('Index/index');                } else {                    $this->error('用户名或者密码错误!');                }            } else {                $this->error(D('User')->getError());            }        }        $this->display('Public/login');     }


4.在退出登录的时调用UserLoginLog操作日志的方法,最后就完成了

  //退出
public function logout()
{
$user_id = $_SESSION['user_id'];//用户ID
$this->UserLoginLog('退出系统', $user_id);
session(null);//清除session
$this->redirect('Login/Login');
}