我正试图在完成销毁会话后设置会话,这是我的代码:
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();setcookie(session_name(), '', time() - 0,$params["path"], $params["domain"],$params["secure"], $params["httponly"]);
}
session_destroy();
$_SESSION['message-success-l']='Email changed, now you can login!';
header ('location: https://example.com/login');
die();
//php登录
session_start();
echo "$_SESSION['message-success-l']";
因此,在更改电子邮件后,所有会话都将被销毁,用户现在可以重新登录,但在完全销毁会话后,我希望设置一个会话,说明更改成功。
但当我进入登录页面时,我没有看到会话消息,为什么?
我永远不会只为一条消息使用会话。。。不管怎样,这是的工作代码
会话销毁.php
<?php
session_start();
// YOUR CODE
session_destroy();
header("Location: email-changed.php");
?>
电子邮件已更改.php
<?php
session_start();
$_SESSION['test'] = "Email changed, now you can login!";
header("Location: home.php");
?>
home.php
<?php
session_start();
echo $_SESSION['test'];
?>
错误:
echo"$_SESSION['message-success-l']";->echo$_SESSION['message-success-l'];//不带引号,
$_SESSION=array((;//为什么要使用数组
(老实说,我不知道(您不能在session_destroy((之后创建新会话
对不起我的eng,我希望这对有用
这是因为当$_SESSION变量刚刚被销毁时,您正在设置它,这意味着没有会话。
我觉得你把事情搞混了。让我们考虑一下的工作流程
你进入一个页面,想要session_start();
。
你想做的是:无论何时更改或注销电子邮件(假设有注销功能,因为大多数电子邮件都可以更改(,你都需要在该操作结束时使用session_destroy();
。
就是这样。每当session_destroy();
命中,它就不见了。无论何时启动,都会启用
如果您想创建会话变量并在其中放置内容,那么中间的操作取决于您。要维护一个页面到另一个页面的会话,只需在每个所需页面维护session_start();
即可。
重复:一旦它被摧毁,它就被摧毁了。你在代码中所做的是启动一个会话(或从上一页/操作中维护它(,然后(不知道为什么你在那里有$_session,它毫无价值(验证它,最后销毁它。
如果你刚刚销毁了一条消息,为什么要把它发到你的$_SESSION
?此时没有会话。你可以在之后写session_start()
,但话说回来,当你重定向到登录时,很可能有一个开始,为什么你要开始->销毁->重新开始?