删除前一个会话后如何创建新会话?

时间:2018-07-23 08:24:03

标签: php session

我正在尝试在完全销毁会话后设置会话,这是我的代码:

    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']";

因此,在更改电子邮件之后,所有会话都将被破坏,用户现在可以重新登录,但是在完全删除会话之后,我想建立一个会话,说更改成功。

但是当我进入登录页面时,为什么看不到会话消息?

2 个答案:

答案 0 :(得分:0)

我永远不会仅将会话用于消息...无论如何这都是有效的代码

session-destroy.php

<?php
session_start();
// YOUR CODE
session_destroy();
header("Location: email-changed.php");
?>

email-changed.php

<?php
session_start();
$_SESSION['test'] = "Email changed, now you can login!";
header("Location: home.php");
?>

home.php

<?php
session_start();
echo $_SESSION['test'];
?>

错误:
回声“ $ _SESSION ['message-success-l']”; ->回声$ _SESSION ['message-success-l']; //不带引号,
$ _SESSION = array(); //为什么要使用数组。
(老实说,我不知道)您不能在session_destroy()之后创建新会话;
对不起,我希望我能再见

答案 1 :(得分:0)

这是因为您正在设置$ _SESSION变量,而该变量刚刚被销毁,这意味着没有会话。

我认为您正在混淆。让我们考虑一下工作流程

您进入某个页面,并且想要session_start();

您想要做的是:每当更改或注销电子邮件时(假设有一个注销功能,因为显然可以更改电子邮件),您都希望在此操作结束时使用session_destroy();

就是这样。每当session_destroy();命中时,它就消失了。每当它启动时,它将启用它

如果要创建会话变量并在其上放置内容,则由您决定要执行的中间操作。要在每个页面之间维持会话,只需在每个所需的页面维护session_start();

重复:一旦销毁,它就会被销毁。您在代码中所做的工作是开始一个会话(或从上一页/操作中进行维护),然后(不知道为什么在那里有$ _SESSION,这毫无价值),您对其进行验证,最后销毁它。

为什么您刚刚销毁了$_SESSION上的邮件?目前没有会议。您可以在之后写session_start(),然后再写一次,为什么当您很可能在重定向到登录名的地方有一个开始时,又要开始->销毁->重新开始?