Heim >Backend-Entwicklung >PHP-Tutorial >CodeIgniter模板,下面的代码,Session为什么会变化?

CodeIgniter模板,下面的代码,Session为什么会变化?

WBOY
WBOYOriginal
2016-06-23 13:04:211057Durchsuche

defined("BASEPATH") OR exit("No direct script access allowed");
/**
 * admin of the content
 */

class Admin extends CI_Controller {
    private $signature;
    public function __construct()
    {
parent::__construct();
$this->load->helper("url_helper");
$this->load->library("session");
//session_start();
    }
    
     public function index()
    {
/** login each time visit **/
if (isset($_SESSION['user_name'])) {
    $this->display("welcom");
} else {
    $this->display("login");
}
    }

    public function login()
    {
$_SESSION['user_name'] = $this->input->post("user_name");
$this->display("welcom");
    }

    private function display($pages)
    {
$this->load->view("templates/header", $data);
$this->load->view("admin/$pages", $data);
$this->load->view("templates/footer");
    }
}

基于CodeIgniter的模板框架,上面的控制器代码,逻辑是:首次访问时,调用index函数,判断$_SESSION['user_name']没有设置就显示login页面,login页面把数据提交给login函数,并在login函数中设置$_SESSION['user_name'].
现在的问题是:
1、首次访问的session_id()和登录页面提交后(login函数)的session_id()不一致。请问为什么?
2、这样就引发了另一个问题,如果再打开一个标签页(相当于一个窗口吧),重新访问时(此时调用index函数),$_SESSION['user_name']没有设置,必须重新登录。
请教如何解决?


回复讨论(解决方案)

没人遇到过吗?

php.ini 中 session.auto_start = 0

php.ini 中 session.auto_start = 0


应该不是这个原因导致的。我不用CI,自己写的测试代码不存在这个问题。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn