PHP $_SESSION 函数不工作

PHP $_SESSION not working in function

首先,我搜索了很多线程和主题,他们都一直在说它的功能位置,但到目前为止我没有发现我的位置有问题。我迫切希望它能正常工作,因为我厌倦了查看 50 多行额外的重复代码。

resetpassword.php(相关代码):

<?php
        require_once $_SERVER['DOCUMENT_ROOT'] . '/php/security/sslcheck.php';

        $ResetID = $_GET["ID"];

        session_start();
        require_once $_SERVER['DOCUMENT_ROOT'] . '/php/functionality/error.php';
        print_r(array_values($_SESSION));

        if(empty($ResetID) && !isset($_SESSION["ERR"]) && !isset($_SESSION["ERR_MSG"])) {
            $ResetPassword = "REQUEST";
            if(isset($_POST["email-search"]) && !empty($_POST["email-search"])) {
                require_once $_SERVER['DOCUMENT_ROOT'] . '/php/functionality/users/request.php';

                // Start Request Process
                $Request = RequestPasswordReset($_POST["email-search"]);

                if($Request === "USER_NOT_FOUND") {
                    DisplayError("Password Reset Request Failed", "The specified email is not tied to any accounts in our system.", "/account/resetpassword.php");
                } else if ($Request === "MAIL_FAILURE") {
                    DisplayError("Password Reset Request Failed", "Failed to email you the password reset email.", "/account/resetpassword.php");
                } else {
                    DisplayError("Password Reset Request Success", "We have sent a email that contains a link to reset your password.", "/account/resetpassword.php");
                }
            }

更多相关代码

            <?php
            if (isset($_SESSION["ERR"]) && isset($_SESSION["ERR_MSG"])) {
                echo '<div id="resetPasswordStatus">';
                echo '<h4>' . $_SESSION["ERR"] . '</h4>';
                echo '<p>' . $_SESSION["ERR_MSG"] . '</p>';
                echo '</div>';
                session_destroy();
            }
        ?>

error.php(所有代码):

<?php
  session_start();
  function DisplayError($title, $body, $returnlink) {
      $_SESSION["ERR"] = $title;
      $_SESSION["ERR_MSG"] = $body;
      header("Location: " . $returnlink);
  }
?>

我对 require_once 或 error.php 的放置进行了多种试验,但没有找到任何运气。我知道 $_SESSION 是一个超全局的,需要或 require_once 将代码复制到需要的地方。但是,即使将 error.php 手动复制到 resetpassword.php 中,我也无法使该功能正常工作。谢谢你们的帮助,因为这真的很重要!

预期的输出是在密码重置请求后的回调之后,是要显示的警报。可以在更多相关代码下查看此警报的代码。

您在 if 语句之后调用函数 empty($ResetID) 如果 $_GET['ID'] 不为空,则您的函数不是 运行,因此将其更改为 !empty($ResetID)

解法:

error.php 中,如果在 header 重定向后添加 exit();,它允许 PHP 在重定向发生时暂停执行,从而防止错误显示来自 运行 其代码的代码,然后擦除 session,这使得重定向在 sessions.

方面为空