2
我正在使用PHP和codeigniter。我试图在会话中设置一个变量。codeigniter中的会话值
控制器
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct(){
parent::__construct();
$this->config->base_url();
$this->load->library('session');
if(!$this->session->has_userdata('zoo'))
{
$fooBar = md5(uniqid(rand(), TRUE));//generates random number
$newdata = array(
'username' => 'nirali',
'zoo' => $fooBar
);
$this->session->set_userdata($newdata);
exit;
}
}
public function read_session(){
$array = $this->session->all_userdata();
print_r($array);
exit;
}
}
在第一次请求构造的setter方法会被执行并且它填补会话变量。并因退出而停止执行;声明。
当我打电话read_session()它打印
Array ([__ci_last_regenerate] => 1489646422 [username] => nirali [zoo] => 531d8bfb21ed21b83bc7e3763a04f88c)
,当我回忆起read_session()它打印
Array ([__ci_last_regenerate] => 1489647898 [username] => nirali [zoo] => cb675bee85da672c95166dbc1dbbdfd2)
我得到预计的用户名来nirali
价值 - 所有的好 但对于动物园我总是得到不同的价值,我期待同一届会议相同的价值
更新
在进一步的调试,我发现。服务器没有回应任何cookie作为回应。
出了什么问题,其中不发送任何会话cookie回响应服务器配置?
尝试$ foobar的= MD5(uniqid(RAND(),TRUE));从if语句中获取此行。 –
@ Shahid如何帮助?是不是它只是在每次请求时调用它(与OP设置时相反)? –
@JigarJoshi不确定。这就是为什么我在评论中提出建议并没有发布答案 –