3

我将尽力解释这一点,因为我不确定我是否完全理解发生了什么。

我已经构建了一个用户必须登录的 codeigniter 应用程序。登录在过去三周内一直有效,从那以后我没有碰过它。今天在管理员用户下成功登录几次后,我突然无法使用该特定帐户登录,尽管我可以使用其他帐户。

从那以后,我撕毁了我的代码,试图弄清楚发生了什么。似乎登录过程正在运行,但是在设置会话后,它会删除它们并且用户不再登录。

我的问题是,是否可以在某个用户上设置会话的次数,或者这可能与 phpmyadmin 设置有关?我不知道该怎么做,我以前从来没有发生过这样的事情,坦率地说,它只会发生在一个用户身上是没有任何意义的。

这是我的控制器中的登录检查

function checkLogin(){
    //This function checks the login to make sure that the user is indeed entering the right email and password
    $salt = '******';
    $loginObject = array(
        'email' => $this->input->post('email'),
        'password' => md5($salt . $this->input->post('password'))
    );
    $login       = $this->users_model->checkUser($loginObject);

    if($login == true) {
        $currentUser = $login;
        $this->session->set_userdata('currentUser', $currentUser);
        $this->session->set_userdata('loggedin', true);
        $this->user = $this->session->userdata('currentUser');
        $type = $this->users_model->getUser($this->user->user_id);
        switch($type[0]->type) {
            case 1:
                redirect('/myStories/'.$this->user->pen_name);
                break;
            case 2:
                redirect('recent/');
                break;
            case 3:
                redirect('recent/');
                break;
            case 'banned':
                $this->session->sess_destroy();
                redirect('banned/');
                break;
            case 'deactive': // deactivate
                redirect('home');
                break;
        }
    } else {
        redirect('home/errorPage');
    }
}

这就是我的模型

public function checkUser($loginObject)
{
    //This sets the email and the password from the loginObject and then gets the user
    $this->db->where('email', $loginObject['email']);
    $this->db->where('password', $loginObject['password']);
    $query = $this->db->get('user_tbl');
    if($query->num_rows() > 0){
        return $query->row();   
    }else{
        return false;
    }
}   

就像我说的那样,这适用于除一个用户之外的每个用户,并且在一小时前也适用于那个用户。

4

1 回答 1

0

我弄清楚了用户的问题所在。似乎我的所有代码都很好,但是放置在数据库中的用户生物中的东西导致会话中断。我一直在玩用户传记中的图像,并从谷歌复制了一个 gif 以查看它的外观,显然 -webkit 标签“破坏”了会话。

<a id="irc_mil" style="font-family: Times; font-size: medium; text-align: center; border: 0px;" href="http://www.pixeljoint.com/pixelart/16196.htm"><img id="irc_mi" style="background-image: -webkit-linear-gradient(45deg, #efefef 25%, transparent 25%, transparent 75%, #efefef 75%, #efefef), -webkit-linear-gradient(45deg, #efefef 25%, transparent 25%, transparent 75%, #efefef 75%, #efefef); -webkit-background-size: 21px; background-size: 21px; box-shadow: rgba(0, 0, 0, 0.648438) 0px 5px 35px; -webkit-box-shadow: rgba(0, 0, 0, 0.648438) 0px 5px 35px; margin-top: 230px; background-position: 0px 0px, 10px 10px;" src="http://www.pixeljoint.com/files/icons/full/cat__r177950541.gif" alt="" width="23" height="33" /></a>

删除 -webkit 标记后,一切正常。谢谢大家的帮助!现在我必须去阻止用户这样做!

于 2013-07-13T03:59:51.583 回答