首页 文章

Codeigniter会话数据登录后在其他页面中不可用

提问于
浏览
9

因此,我设置了一个验证用户凭据的登录页面,然后设置codeigniter会话数据'email'和'is_logged_in'以及其他一些项目 . 登录后的第一页,可以访问数据 . 在该页面之后,我无法再访问会话数据 . 事实上,如果我尝试重新加载第一页,会话数据就会消失 .

我已经尝试将其存储在数据库中,将其存储为未加密的(我知道这是个坏主意,但它是用于故障排除),并将其加密存储 . 我在config.php中自动加载了会话库 .

这是我用来设置会话数据的代码示例:

$data = array(
                    'email' => $this->input->post('username'),
                    'is_logged_in' => true 
                );
                $this->session->set_userdata($data);

要检索它,我正在使用:

$this->session->userdata('email');

要么

$this->session->userdata('is_logged_in');

我以前用PHP和cookie以及会话做了很多工作,但这是我与Codeigniter的第一个项目,我感到很困惑 .

它可能与目录问题有关吗?我有登录页面和进程由“登录”控制器控制,然后它重定向到“站点”控制器 .

感谢您的帮助,如果我需要澄清任何问题,请告诉我 .

7 回答

  • 5

    你的代码看起来很好 . 我在Codeigniter的会话库中遇到了很多问题,包括类似于你提到的内容 .

    考虑查看Native Session库以解决您的问题 .

  • 0

    正因为如此,试图使用CI会话的任何人都可以尝试:

    我一直在寻找同样问题的解决方案,经过多次死胡同,我重新调查了我的 config.php .

    其中,我注意到 $config['cookie_domain'] 未正确设置 . 设置此项(并将我的 cookie_prefix 设置为 '' )后,会话现在可以正常工作 .

    由于需要将cookie设置为您的域才能正确提取,因此根本没有为我的会话找到cookie引用,并且每次都创建一个新的 .

    (设置数据库会话非常有助于搞清楚这一点 . )

  • 6

    如果有人遇到此问题,请转到config / config.php并确保 $config['sess_use_database'] 设置为TRUE . 这会将所有会话数据保存到您的数据库 - 这对我有用 .

    如果您没有名为'sessions'的表,请运行以下SQL命令:

    CREATE TABLE  `sessions` (
    `session_id` VARCHAR( 40 ) NOT NULL DEFAULT  '0',
     `ip_address` VARCHAR( 16 ) NOT NULL DEFAULT  '0',
     `user_agent` VARCHAR( 120 ) DEFAULT NULL ,
     `last_activity` INT( 10 ) UNSIGNED NOT NULL DEFAULT  '0',
     `user_data` TEXT NOT NULL ,
    PRIMARY KEY (  `session_id` ) ,
    KEY  `last_activity_idx` (  `last_activity` )
    ) ENGINE = MYISAM DEFAULT CHARSET = utf8;
    
  • 0

    我也是代码点火器的新手 . Juz给出了一个主意 . 你把session_start()放在控制器里了吗?这是一个例子:

    Cuser扩展Controller {

    function Cuser()
    {
        parent::Controller();
        session_start();
        $this->load->helper('url');     
    }
    

    }

    也许我错了......但你可以尝试一下...... :)

  • 0

    请注意检查您的cookie名称 . 它不能有点 .

    坏 Cookies :.domain.com

    好的cookie:domaincom

  • 2

    为什么你不使用ion auth来获得安全性和会话数据......当我想用登录创建一个软件时,我总是使用它 . 您还需要在数据库中使用名称会话创建一个表 . 然后转到Config文件夹中的配置和数据库文件,并将true设置为数据库所需的会话 . 你没有读好文档

  • 0

    ubuntu中的Codeigniter 3.0仅显示数组([__ci_last_regenerate] => 1522220387)..其余会话不显示enter image description here

相关问题