【问题标题】:Keep things in the same domain - PHP session variable loss将事物保持在同一个域中 - PHP 会话变量丢失
【发布时间】:2015-03-30 06:42:49
【问题描述】:

我正在尝试在会话中使用 $_SESSION 变量。我做了

<?php
session_start();
?>

就在名为“login.php”的文件的顶部。

然后我设置

if(isset($_POST["id"])) $_SESSION['ID'] = $_POST['id'];

(更新)当我使用这个重定向到另一个页面时:

if($psword === $password){
    //echo $_SESSION['ID'];
    header("Location: memberMain.php");
    die();
    exit();
} else {
    echo "Wrong Password.";
    // remove all session variables
    session_unset();
    session_destroy();
}

,$_SESSION 变量丢失。它给了我Notice: Undefined variable: _SESSION in C:\xampp\htdocs\memberMain.php on line 18 我认为这是因为域已更改。

memberMain.php:

<!DOCTYPE html>
<html>
<head>
    <title>Member Home</title>
</head>
<body>

<h1>Member Home</h1>
<a href="reservation.php">Make Reservation</a>
<br>
<a href="reviewMembership.php">Review Membership</a>
<br>
<a href="logoff.php">Log Off</a>
<br>
<a href="resetPassword.php">Reset Password</a>

<?php
 echo $_SESSION['ID'];
?>
</body>
</html>

我正在使用 XAMPP,所有文件都在 localhost 上运行,并且都存储在名为“htdocs”的文件夹中。变量丢失的原因是没有意义的。

感谢任何帮助。

【问题讨论】:

  • 添加模具;在 header("Location: memberMain.php"); 之后
  • 您需要在您打算调用$_SESSION每个 页面上使用session_start()。这意味着您需要在 memberMain.php 页面上使用它。

标签: php session


【解决方案1】:

尝试如下更改您的代码,

header("Location: memberMain.php");
exit();

【讨论】:

  • 我试过了,请检查更新。我试图将&lt;?php session_start(); ?&gt; 放在每个文件的开头,它似乎带有变量,但不确定这样做是否安全..
  • @user3763711 不用担心.. 在每个页面上都有 session_start() 是正确的,但是为了简化和标准化,您可以拥有一个配置文件并将所有必要的东西放在一起,并在所有页面中包含 config.php
【解决方案2】:

您需要在要访问$_SESSION每个页面上启动会话。

<?php 
session_start();

通常是每个使用会话的 php 文件的前 2 行。如果您希望能够在这些页面上的任何位置使用 $_SESSION 变量,它是安全的并且是必需的。

这与更改域(页面)无关。你的问题就是我上面所说的。

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2018-11-30
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多