【问题标题】:Codeigniter - PHP something wrong with SessionCodeigniter - PHP 会话有问题
【发布时间】:2016-05-07 14:57:26
【问题描述】:

我在网上冲浪,找到了官方页面:

带有添加自定义会话数据段落

https://www.codeigniter.com/user_guide/libraries/sessions.html

我尝试实现我的代码,但它仍然不起作用:

public function login_validation(){
        $data = new stdClass();
        $this->load->database(); // load database
        $this->load->library('form_validation');
        $this->load->helper('url');
        $this->load->library('session');

        $this->form_validation->set_rules('email', 'email', 'required|trim|callback_validate_credentials');
        $this->form_validation->set_rules('password', 'password', 'required|trim', array(
            'required'      => 'Password field is empty'));

        $this->load->model("model_users");
        $email = $this->input->post('email');
        $user_id = $this->model_users->get_user_id($email);
        $user    = $this->model_users->get_user($user_id);

        if ($this->form_validation->run()){
            $newdata = array(
                   'username'  => 'johndoe',
                   'email'     => 'johndoe@some-site.com',
                   'logged_in' => TRUE
               );
            // $_SESSION['user_id']      = (bool)true;
            // $_SESSION['email']      = $this->input->post('email');
            // $_SESSION['logged_in']    = (bool)true;
            // $_SESSION['username']     = (string)$user->priv;
        $this->session->set_userdata($newdata);
        $this->members();
        } else{
            $this->login();
        }
    }

我在这一行收到此错误 - <?php echo $_SESSION['username']; ?>

A PHP Error was encountered

Severity: Notice

Message: Undefined index: username

Filename: views/catalog.php

Line Number: 19

Backtrace:

我没有看到任何错误,我现在真的很焦虑,因为没有任何效果。抱歉问题的表述不好。 如果您需要额外的代码行,请说我会将其粘贴到 pastebin.com

【问题讨论】:

标签: php codeigniter session


【解决方案1】:

设置新会话

$newdata = array(
   'username'  => 'johndoe',
   'email'     => 'johndoe@some-site.com',
   'logged_in' => TRUE
);

$this->session->set_userdata($newdata); # setting session data

检索会话

$username = $this->session->userdata('username');

echo $username;

考虑中

echo $this->session->userdata('username');

注意:

如果你想将会话数据传递给查看你可以用$data[]绑定它或者在视图中可以直接调用它

【讨论】:

  • 更改了这个 - pastebin.com/KFZSUN4M ,仍然是同样的错误。消息:未定义索引:用户名
  • 删除这个<?php echo $_SESSION['username']; ?>并添加这个echo $this->session->userdata('username');
  • <?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == true) : ?> <?php echo $this->session->userdata('username'); ?> - 已更改。现在我什么也没得到。 BLANK SPACE(可能是因为它是 Null 值)。我们可以私聊5分钟吗?例如Skype?
  • 告诉我什么问题。在控制器中打印会话并检查
  • @DjangoGuy 乐于助人:)
【解决方案2】:

由于 PHP 原生会话未在 CI:2 中实现,因此您不能在 codeigniter 2 中使用 $_SESSION 而是可以使用

$this->session->set_userdata('key','data');
//to fetch this session you can do
$this->session->userdata('key');

但由于某些原因,您需要实现 PHP 本地会话,您可以将其添加为库 Check library here

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    相关资源
    最近更新 更多