session_id()和session_name()究竟是什么?说明如何在以下代码中使用它们

Sah*_*hil 8 php cookies session

?php
function destroy_session_and_data() {
session_start();
$_SESSION = array();
if (session_id() != "" || isset($_COOKIE[session_name()]))
setcookie(session_name(), '', time() - 2592000, '/'); 
session_destroy();
} ?>
Run Code Online (Sandbox Code Playgroud)

我理解上面的代码用于终止会话,但我无法理解if条件和setcookie命令的必要性.

还能请你解释一下session_id()和session_name()到底是什么.

一个明确的解释将是最受欢迎的.谢谢

Max*_*sky 5

PHP 使用 cookie 来管理会话;具体来说,通过在 cookie 内设置该会话的标识键/值对。

  • 会话的名称就是cookie的名称;基于 PHP 的网站的默认名称是PHPSESSID. session_name()返回会话名称,或者如果传递了参数,则更新会话名称。
  • cookie中的键/值对描述了会话id;键表示它是会话标识符,值是会话标识符本身。session_id()返回会话 ID,或者如果传递了参数,则更新会话 ID。

问题中的代码检查是否有随请求传递的会话:首先使用 启动/重新激活会话session_start(),然后检查是否有与会话名称匹配的现有 cookie。如果代码找到一个,它会通过将 cookie 的过期日期设置为过去的时间来强制浏览器删除 cookie。