请问codeIgniter中 一个php通过控制器生成好session后 其余的php验证该如何做呢?

一个界面生成好session 添加键值后 其余的php首部 session_start(); 但是$_SESSION变量为空 不是说生成好后就存在cookie了么 为什么不能直接用呢?

阅读 3.4k
2 个回答

楼主啊,既然你说了是在框架中,而且还是CI中,那么就使用CI中定义好的session类操作配合来使用就好了(有些框架中是不支持使用某些php函数的,session_start()就是个例子)

  1. 载入session类 $this->load->library('session');

  2. 添加session数据 $this->session->set_userdata($array);

  3. 取得session值 $this->session->userdata('session_key');

  4. 取得所有session值 $this->session->all_userdata();

要养成多看文档的好习惯啊喂!~ 我是文档,点我点我点我


看来楼主对MVC模式不是很了解啊,简单点来说,输出页面(view)基本都要走控制器(controller),获取数据在控制器,进行数据处理一般在模型层(model)

控制器就像一个中间媒介一样,接收从页面(view)传递过的数据,然后根据这些数据调取模型层相应的数据出来,然后控制器调用模板(也就是页面)来进行的数据的渲染。

js里是很少调用控制器的,调用控制器就是使用控制器里面的方法,获取一些数据,这之中用的多的就是ajax。跳到另一个页面其实是通过html相应标签来实行的,这里举几个例子:

  1. html的a标签

  2. html的form表单

  3. js的location.href

嗯。以上,希望对你有帮助。

一个简单的例子

验证登录:

public function login_check(){

    $user_id = $this->input->post('user_id');
    $password = $this->input->post('password');

    $sql = "SELECT * FROM users WHERE id = ? AND password = ?"; 
    $data['check'] = $this->db->query($sql, array($user_id, $password)) -> result_array();

    if(count($data['check']) > 0){
        $session['is_login'] = TRUE;
        $session['user_id'] = $data['check'][0]['user_id'];
        $session['user_name'] = $data['check'][0]['user_name'];
        $this->session->set_userdata($session);
        header("Location:".site_url('welcome'));
    }
}

判别登陆了没:

if($this->session->userdata('is_login')){
    
}else{
    redirect('login');
}

取得session值:

$user_id = $this->session->userdata('user_id');
$user_name = $this->session->userdata('user_name');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题