在 PHP 中销毁/重启不同的会话
Destroy / Restart a different session in PHP
我总能在这里找到问题的解决方案,但我在这方面遗漏了一些东西。这是我的问题:
我有一个 login.php 页面,可以根据人们的状态(会员、专家、管理员)将他们重定向到不同的页面。按钮的类型是提交按钮:
<input type="submit" name="LOGIN"
...
我在 PHP 中使用 :
获取了表单的所有信息(登录名、密码)
if(isset($_POST['LOGIN'])) {
...
并且用户被重定向到具有特定权限的页面。
但如果用户的状态为“会员”,则意味着这是他的第一次访问,他必须使用 Header("Location: loginNewMb.php");
转到中间页面 (loginNewMb.php) 输入他的坐标(姓名, 公司...)。然后,他的状态将是“注册会员”,他将能够访问他的 data.php?member=XXX 页面。但是当他进入 loginNewMb 页面时,他仍然处于来自 login.php 页面的会话中。所以我需要关闭它并根据他将提供的信息创建一个新的。希望你还在我身边。
我只是想知道您是否可以指导我作为做到这一点的最佳策略。我应该如何以及在哪些文件中销毁/重新启动新会话?有更好的方法吗?我不一定需要一些代码,只需要一些线索来指导我。
谢谢
您可以在 loginNewMb.php
页面顶部做一个 session_destroy()
和 session_regenerate_id(true)
。
或者您可以使用 $_SESSION["foo"]
取消设置特定的 $_SESSION
变量
或者,您可以在 login.php
重定向之前进行。
注:
使用 session_destroy()
后,您必须再次使用 session_start()
才能使用 $_SESSION
变量。
用 JS 做这件事并不是很好,因为任何用户都可以禁用 JS。所以,使用PHP是最好的方法。
当然,您可以将以下内容放在 loginNewMn.php
文件的开头。
/** clear session variable */
session_unset();
/** destroy the session */
session_destroy();
/** end the current session and store session data. */
session_write_close();
/** clear cookies */
setcookie(session_name(), '', ['expires' => 0, 'path' => '/']);
/** clear old session id */
session_regenerate_id(true);
/** start the (new) session */
session_start();
我总能在这里找到问题的解决方案,但我在这方面遗漏了一些东西。这是我的问题:
我有一个 login.php 页面,可以根据人们的状态(会员、专家、管理员)将他们重定向到不同的页面。按钮的类型是提交按钮:
<input type="submit" name="LOGIN"
...
我在 PHP 中使用 :
获取了表单的所有信息(登录名、密码)if(isset($_POST['LOGIN'])) {
...
并且用户被重定向到具有特定权限的页面。
但如果用户的状态为“会员”,则意味着这是他的第一次访问,他必须使用 Header("Location: loginNewMb.php");
转到中间页面 (loginNewMb.php) 输入他的坐标(姓名, 公司...)。然后,他的状态将是“注册会员”,他将能够访问他的 data.php?member=XXX 页面。但是当他进入 loginNewMb 页面时,他仍然处于来自 login.php 页面的会话中。所以我需要关闭它并根据他将提供的信息创建一个新的。希望你还在我身边。
我只是想知道您是否可以指导我作为做到这一点的最佳策略。我应该如何以及在哪些文件中销毁/重新启动新会话?有更好的方法吗?我不一定需要一些代码,只需要一些线索来指导我。
谢谢
您可以在 loginNewMb.php
页面顶部做一个 session_destroy()
和 session_regenerate_id(true)
。
或者您可以使用 $_SESSION["foo"]
$_SESSION
变量
或者,您可以在 login.php
重定向之前进行。
注:
使用 session_destroy()
后,您必须再次使用 session_start()
才能使用 $_SESSION
变量。
用 JS 做这件事并不是很好,因为任何用户都可以禁用 JS。所以,使用PHP是最好的方法。
当然,您可以将以下内容放在 loginNewMn.php
文件的开头。
/** clear session variable */
session_unset();
/** destroy the session */
session_destroy();
/** end the current session and store session data. */
session_write_close();
/** clear cookies */
setcookie(session_name(), '', ['expires' => 0, 'path' => '/']);
/** clear old session id */
session_regenerate_id(true);
/** start the (new) session */
session_start();