【问题标题】:Page redirect to previous page after authentication认证后页面重定向到上一页
【发布时间】:2012-12-30 18:44:49
【问题描述】:

我试图在身份验证后将用户重定向到上一页。它适用于以下代码。

文件login_page.php(用户输入登录凭据的页面)包含以下代码,该代码存储SOURCE URL并将其传递到下一页。

<input type="hidden" name="url" value=<?php echo $_SERVER['HTTP_REFERER'] ; ?> />

文件do_authentication.php(进行身份验证的页面)的代码echo "&lt;meta http-equiv='Refresh' content=0;url='$_POST[url]'&gt;"; 重定向到SOURCE URL

在正常情况下它可以工作,但在用户输入错误凭据的情况下,页面被重定向到login_page.php,并要求用户使用正确的凭据重试。此时,'url' 值变为login_page.php

解决这个问题的正确/更好的逻辑是什么?

【问题讨论】:

    标签: php


    【解决方案1】:

    我在登录时一直使用会话来保留原始页面。如果会话不受支持,这将不起作用。然后我只是将用户发送到主页。

    讨论此问题的 Stack Overflow 帖子是 Redirect to previous page after logging in using PHP

    【讨论】:

    • 会话对我有用.... Login_page.php //Create session to redirect page to original pg if(!isset($_SESSION['url'])) { $_SESSION['url'] = $_SERVER['HTTP_REFERER']; } do_authentication.php echo "&lt;meta http-equiv='Refresh' content=0;url='$_SESSION[url]'&gt;"; unset($_SESSION['url']);
    【解决方案2】:

    您应该考虑使用会话变量来存储您要重定向到的页面的值。 HTTP_REFERRER 不是正确的选项。

    【讨论】:

      【解决方案3】:

      试试下面:

      <input type="hidden" name="url" value=<?php echo pathinfo(__FILE__,PATHINFO_FILENAME ).".".pathinfo(__FILE__,PATHINFO_EXTENSION); ?> />
      

      【讨论】:

        【解决方案4】:

        用途:

        header("location: ".$_POST['url']); // Redirects to posted page
        exit; // Prevents execution of other code after this
        

        【讨论】:

        • this 和referer 都是第一次工作,但在登录失败后就不行了。此时,referer 和 url 就是登录本身。
        【解决方案5】:

        login_page.php,你可以检查你是否已经通过了URL;如果是这样,请传递这个而不是 HTTP_REFERER。

        <?php if(isset($_POST['url']) ?>
            <input type="hidden" name="url" value=<?php echo $_POST['url'] ; ?> />
        <?php else ?>
            <input type="hidden" name="url" value=<?php echo $_SERVER['HTTP_REFERER'] ; ?> />
        

        或者更简洁的方式

        <?php $url= (isset($_POST['url'])) ? $_POST['url'] : $_SERVER['HTTP_REFERER']; ?>
        <input type="hidden" name="url" value=<?php echo $url; ?> />
        

        【讨论】:

        • 这也给出了相同的结果。登录失败后,url 值变为 login_page.php
        猜你喜欢
        • 1970-01-01
        • 2020-02-26
        • 2019-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 2012-06-11
        相关资源
        最近更新 更多