【问题标题】:How do i update CI session without destroying it我如何更新 CI 会话而不破坏它
【发布时间】:2023-03-22 18:22:01
【问题描述】:
    //setting session data
    $loginData = array(
      'name'  => 'Rajeev Singh',
      'email' => 'rajeev@gmail.com',
      'age'   => '21',
    );
    $this->session->set_userdata('loginData',$loginData);

//accessing session data
$name = $this->session->userdata('loginData')['name'];

假设如果我的用户想要更新他/她的详细信息,那么我需要在会话中进行更改 但我无法更新会话值

目前我正在做的是创建一个全新的会话来更改我的会话 ID 我想在不更改会话 ID 的情况下更新会话的一个值

//accessing session ID
$sessionID =  $this->session->session_id;

【问题讨论】:

  • 如果您需要相同的 ID,为什么不为 'user_id'=>12345 设置一个值,因为会话会在每次页面加载时更新,所以 F5 也会生成一个新的 session_ID
  • 您是否尝试过使用$this->session->userdata('loginData')['name'] = $new-name;$this->session->set_userdata('loginData['name']', $new-name);
  • 是的,兄弟,我尝试了所有这些,但没有使用任何这些选项。

标签: php codeigniter session


【解决方案1】:

这将使用 Codeigniter 更新您的会话变量“loginData”,而不会破坏会话。

我正在使用 $data_update 您的自定义变量所在的位置。

$this->session->set_userdata('loginData', $data_update);

Codeigniter 会话页面 [1]http://codeigniter.com/user_guide/libraries/sessions.html

【讨论】:

    【解决方案2】:

    只需覆盖会话

    //initial set
    loginData = array(
          'name'  => 'Rajeev Singh',
          'email' => 'rajeev@gmail.com',
          'age'   => '21',
        );
    
    $this->session->set_userdata('loginData', $loginData);
    
    //overwritting
    
    $loginData = array(
          'name'  => 'new name',
          'email' => 'new email',
          'age'   => 'new age',
        );
    $this->session->set_userdata('loginData', $loginData);
    
    

    看看here

    【讨论】:

      【解决方案3】:
      print_r($_SESSION["logindata"]); 
      
      $_SESSION["logindata"]["name"]="updated name";
      
      print_r($_SESSION["logindata"]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 2015-07-02
        • 2013-11-10
        • 2012-07-19
        • 1970-01-01
        • 2015-01-15
        相关资源
        最近更新 更多