【发布时间】:2014-01-23 06:16:21
【问题描述】:
我正在尝试学习 PHP 并使用会话。我看到了有关在注销时使用 session_destroy 的示例,但我在 php 文档中看到了这一点:
为了完全终止会话,例如注销用户,还必须取消设置会话 ID。如果使用 cookie 传播会话 id(默认行为),则必须删除会话 cookie。 setcookie() 可以用于此。
那么注销后需要做什么?
【问题讨论】:
我正在尝试学习 PHP 并使用会话。我看到了有关在注销时使用 session_destroy 的示例,但我在 php 文档中看到了这一点:
为了完全终止会话,例如注销用户,还必须取消设置会话 ID。如果使用 cookie 传播会话 id(默认行为),则必须删除会话 cookie。 setcookie() 可以用于此。
那么注销后需要做什么?
【问题讨论】:
在您刚刚引用的段落下方,有一个示例回答了您的问题: http://php.net/manual/en/function.session-destroy.php
示例 #1 使用 $_SESSION 销毁会话
<?php // Initialize the session. // If you are using session_name("something"), don't forget it now! session_start(); // Unset all of the session variables. $_SESSION = array(); // If it's desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finally, destroy the session. session_destroy(); ?>
【讨论】:
在我看来,这只是必要的
session_start();
unset($_SESSION["nome"]); // where $_SESSION["nome"] is your own variable. if you do not have one use only this as follow **session_unset();**
【讨论】:
我从未真正从会话中删除会话 ID。我通常只是从会话中取消设置必要的变量(例如,如果您将登录用户设置为$_SESSION['user'] = $userModel;,那么我只需unset($_SESSION['user']);)。要从用户的浏览器中删除 cookie(如文档所述),请执行以下操作:
setcookie(session_id(), "", time() - 3600);
阅读session_destroy() 文档中的Example #1 了解更多信息。
【讨论】:
首先:使用 unset() 函数。所以如果你有一个 $_SESSION['user_id'],并且你想销毁它: unset($_SESSION['user_id'])
您也可以将 unset() 用于 cookie 或其他变量
第二个:我们能有一些代码吗?
【讨论】:
如果您使用的是会话 ID。那么你可以这样做
session_start();
unset($_SESSION['id']);
session_destroy();
对于 cookie,您可以将 cookie 时间设置为某个过去的日期。
【讨论】:
只对不使用的旧代码使用 session_unset() $_SESSION。
session_start();
session_unset($_SESSION['email-user']); session_destroy();`
【讨论】: