关于CodeIgniter 3的会话,用户数据与否?

时间:2016-01-20 18:10:40

标签: php codeigniter session

我试图跟随youtube tuts在CodeIgniter上创建一个登录系统。 我在php框架上相当新,我选择CI的简洁性。 所以我有一个数组,我需要存储会话数据:

$replace = 'replace';
$my_string = ' abC.com, Abc.net, aBc.org, ABC.info, aBC.biz '; 
$lowerCase = 'abc';
$str_replace = str_replace($lowerCase, $replace, $my_string);
echo $str_replace;

教程使用userdata();功能

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

但是当他尝试打印de session array时:

    $this->session->userdata($data);

alluserdata();不推荐使用,所以我阅读了doc,我发现userdata是一个遗留函数。 我想学习我写的内容,所以我尝试对CI3进行现代化的代码更新和清理。

是使用userdata();对CI3有好处吗?或者我必须使用$ _SESSION []?或$ this->会话?

问题在于,如果我尝试使用

$这 - >会话而>数据

而不是:

    print_r($this->session->all_userdata($data));

我的输出没什么。 我只想在会话中输出数据数组,这样我才能理解它是否正常工作。 提前谢谢

修改 如果我使用set_userdata()进行设置会话而只使用print_r($ this-> session-> userdata());对于打印会话我只有:

print_r($this->session->data);

而不是关于浏览器的信息,时间ecc ...是正常的吗?

2 个答案:

答案 0 :(得分:3)

设置会话数据

$newdata = array('email' => $email, 'is_logged_in' => true);
$this->session->set_userdata($newdata);

获取会话数据

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

OR

$dataArray = $this->session->userdata();

答案 1 :(得分:2)

在Codignitor 3中,您可以从 $ this-> session obejct获取值:

//Normal PHP    
$name = $_SESSION['name'];    

// IN Ci:    
$name = $this->session->name    

// you can also get by
$name = $this->session->userdata('name');

您的代码有什么问题?

您正在使用会话对象

$this->session->data

这应该是

$this->session->userdata
  

是使用userdata();对CI3有好处吗?或者我必须使用_SESSION []?

为此,使用框架libaray更好,因为您可以轻松管理和重用代码。