在codeigniter中调用ajax后重新生成新的会话ID

时间:2012-08-07 07:09:31

标签: php jquery ajax codeigniter session

我在我看来开发了以下js。

var url       = '<?php echo base_url(); ?>edit/';
$(document).ready(function(){
    $("#ajax-loader").hide();
    $("#personaldetails-en-di-icon").click(function(){
        $("#ajax-loader").show();
        $.post(url+'ajax/personaldetails/enable', {}, function(data){
            console.log(data);  
        });
     });
});

所以,当我点击时,它会请求编辑控制器。

编辑控制器中的

我有     private $ id = null;

public function __construct() {
    parent::__construct();
    $this->load->library('session');
    $this->load->library('input');
    $this->load->model('editcv_model');
    $this->load->helper('url');

    $this->id = $this->session->userdata('login');        
    if (intval($this->id) < 1)
        die(json_encode(array('response' => 'not logged in')));
    }

    public function _remap($method = '',$param = array()){
        echo (json_encode(array('response' => 'done')));
    }
}

第一个ajax在chrome控制台中调用echo {“response”:“done”} ,但第二个和其他请求echo {“response”:“not logged in”} 。 当我在phpmyadmin中检查会话表时,它将使用其他用户代理

重新生成会话ID

enter image description here

如您所见 Mozilla / 5.0(X11; Linux i686)AppleWebKit / 537.1(KHTML,如Gecko)Chrome / 21.0.1180.57 Safari / 537.1 AlexaToolbar / alxg-3 更改为 Mozilla在ajax请求中使用/ 4.0(兼容; MSIE 7.0; Windows NT 6.0)AlexaToolbar / alxg-3.0 。但我使用ubuntu和谷歌浏览器浏览器!!!。

1 个答案:

答案 0 :(得分:1)

我对CodeIgniter会话也有同样的问题。

我切换到原生会话: https://github.com/EllisLab/CodeIgniter/wiki/Dariusz-Debowczyk&#39; S-会话级

我从来没有真正理解实现另一个会话机制(我不是在讨论CI_Session)背后的原因,因为php已经有了一个好的机制。 :)