session_create_id和session_regenerate_id()有什么区别?

时间:2017-10-26 06:39:18

标签: php session

Doc说

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

这两个功能有什么区别吗?

2 个答案:

答案 0 :(得分:2)

是的,有一点不同,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

答案 1 :(得分:1)

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中有详细的答案。