当前位置: 首页 > 知识库问答 >
问题:

在CodeIgniter中设置会话错误

漆雕正奇
2023-03-14

我试图在codeigniter中设置会话。当某人尝试使用电子邮件id和密码登录时。

1)使用电子邮件id查找他/她的角色。然后在会话中返回该结果并重定向到相应的链接。我在下面键入的代码。你能解决这个问题吗?

控制器

public function login_validation() {
        $this -> load -> library('form_validation');
        $this -> form_validation -> set_rules('email', 'Email', 'required|trim');
        $this -> form_validation -> set_rules('password', 'Password', 'required ');

        if ($this -> form_validation -> run()) {

            $this -> load -> model('model_database');
            $sessiondata['var_userrole'] = $this -> model_database -> login_session();

            $this -> session -> set_userdata($sessiondata);
            if ($var_userrole == admin) {

                redirect('welcome/admin');

            } else if ($var_userrole == staff) {

                redirect('welcome/staff');

            } else if ($var_userrole == student) {

                redirect('welcome/student');

            } else {

                redirect('welcome/login');

            }

模型

public function login_session() {
    $email = $this -> input -> post('email');
    $login_id = $this -> db -> query("SELECT var_userrole FROM tbl_login where var_email = '" . $email . "'");
    return  $login_id -> row_array();
}

共有1个答案

许华清
2023-03-14

首先,在您签入if语句的任何地方都没有定义$var_userrole

控制器

public function login_validation() {
        $this -> load -> library('form_validation');
        $this -> form_validation -> set_rules('email', 'Email', 'required|trim');
        $this -> form_validation -> set_rules('password', 'Password', 'required ');

        if ($this -> form_validation -> run()) {

            $this -> load -> model('model_database');
            $var_userrole = $this -> model_database -> login_session();// was undefined 
            $sessiondata['var_userrole'] = $var_userrole

            $this -> session -> set_userdata($sessiondata);
            if ($var_userrole == admin) {

                redirect('welcome/admin');

            } else if ($var_userrole == staff) {

                redirect('welcome/staff');

            } else if ($var_userrole == student) {

                redirect('welcome/student');

            } else {

                redirect('welcome/login');

            }

模型

public function login_session() {
    $email = $this -> input -> post('email');
    $login_id = $this -> db -> query("SELECT var_userrole FROM tbl_login where var_email = '" . $email . "'");
      //$row =  $login_id -> row() // as object return $row->var_userrole;
      $row =  $login_id -> row_array();
    return $row['var_userrole']
}

如果您在此之前正在为auth开发新的东西,请检查CI中的一些auth系统,如ion_auth has group,您可以管理它,并检查用户属于哪个组ion auth

 类似资料:
  • 问题内容: 我正在使用新版本(3.0.0)。CodeIgniter的问题,我遇到了一个新问题,我的会话无法正常工作。我的意思是,控制器中的代码是正确的,因为没有错误,但是,当我尝试在视图中打印PHP变量时,什么也没有。 我在MySQL服务器中检查了我的表,什么也没有,我现在不出什么问题了。我把我的代码config.php。(我不太了解这个新版本中的很多内容) 我必须在“ make”会话中添加第一行

  • 我在Codeigniter框架中面临一个新问题。她是我最讨厌的人 这是控制器 模型是

  • 我正在使用CodeIgniter和RestServer实现构建一个APIhttps://github.com/chriskacerguis/codeigniter-restserver 我想使用会话身份验证模式,所以我在配置/rest.php中设置了这个: 在config/config中。php: 我有一个控制器身份验证,其代码如下: 会话存储在数据库中,并包含来自$user的数据。pr回显数据(

  • 我已经在Codeigniter上编写了一个简单的身份验证过程,但存在一个问题。 由于某些原因,当用户浏览站点时,会话会被混淆,并模拟另一个随机用户。 我只是做: 我通过

  • 我正在使用codeigniter。我有个奇怪的问题。我在用户登录时设置会话,并将其重定向到新页面。我观察到,会话有时设置,有时不设置。我尝试过使用codeigniter会话 以下是配置文件的外观:

  • 我正在将我的CodeIgniter 3应用程序迁移到Docker,我遇到了会话问题。由于CI会话,我无法登录应用程序。 似乎CodeIgniter会在服务器的每个请求中重新创建新会话。当我检查包含的内容时,我可以看到两个字段: 新会话的文件由用户创建,并具有正确的权限。 会话配置: Docker图像:,, 我不知道发生了什么。有人能帮帮我吗?