PHP $ _SESSION无法正常工作

时间:2017-10-28 17:47:46

标签: php function session session-variables

首先,我搜索了许多主题和主题,他们都在说它的功能位置,但到目前为止,我没有看到我的展示位置存在问题。我很想让这个工作正常,因为我看到了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);
  }
?>

我在很多方面尝试了我对miss.php的require_once的放置,但没有发现运气。我理解$ _SESSION是一个超全局,需要或require_once将代码复制到需要的地方。然而,即使手动将error.php复制到resetpassword.php,我也无法使该功能正常工作。谢谢你们的帮助,因为它真的意味着很多!

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

2 个答案:

答案 0 :(得分:2)

<强>

解决方案:

error.php 中如果在标题重定向之后添加exit();,它允许PHP在重定向发生时暂停执行,这可以防止错误显示代码运行其代码然后擦除会话在会话方面将重定向留空。

答案 1 :(得分:0)

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