ci - 请问codeIgniter中 一个php通过控制器生成好session后 其余的php验证该如何做呢?
黄舟
黄舟 2017-04-10 17:59:03
[PHP讨论组]

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

楼主啊,既然你说了是在框架中,而且还是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');
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号