【问题标题】:What is the difference between session_create_id and session_regenerate_id()?session_create_id 和 session_regenerate_id() 有什么区别?
【发布时间】:2018-04-07 10:17:35
【问题描述】:

医生说

session_create_id() 用于为当前会话创建新的会话 ID。 session_regenerate_id() 使用新生成的会话 id 更新当前会话 ID。

这两个功能有区别吗?

【问题讨论】:

  • 你已经可以阅读了..createupdate,但准确地说session_regenerate_id()会将当前会话id替换为新的,并保留当前会话信息。
  • 当前会话的“新 id”& 用“新 id”更新它看起来一样吗?
  • 发现默认情况下 session_regenerate_id() = session_id ( session_create_id() ) 对吗?

标签: php session


【解决方案1】:

是的,有一点不同,session_create_id() 将创建一个新的 sessionId 丢弃当前的 $_SESSION 信息,而 session_regenerate_id() 不会破坏它们,而只是更新 sessionId

引用自:http://php.net/manual/en/function.session-create-id.php & http://php.net/manual/en/function.session-regenerate-id.php

【讨论】:

    【解决方案2】:

    session_create_id

    创建新的会话 ID

    session_regenerate_id

    使用新生成的更新当前会话 id

    手册中的使用示例:

    $old_sessionid = session_id();
    
    // Set destroyed timestamp
    $_SESSION['destroyed'] = time(); // Since PHP 7.0.0 and up, session_regenerate_id() saves old session data
    
    // Simply calling session_regenerate_id() may result in lost session, etc.
    // See next example.
    session_regenerate_id();
    
    // New session does not need destroyed timestamp
    unset($_SESSION['destroyed']);
    
    $new_sessionid = session_id();
    
    echo "Old Session: $old_sessionid<br />";
    echo "New Session: $new_sessionid<br />";
    
    print_r($_SESSION);
    

    这将我们引向以下问题 - 为什么以及何时应该使用它,this link 中有详细的答案。

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      相关资源
      最近更新 更多