0

我在 php 中重新提交表单时遇到了小问题,当表单在我的站点上填写并提交时,它们会被重定向回来。

<?php
if (isset($_POST['submit'])){
        //process form input and validate data here 
        if ( strlen(isset($_POST['name'])) > 0 ){
            //return status to user here
            //and redirect page here.
?>
        <script type='text/javascript'>
           history.go(-2);
        </script>
<?php
        }
    }
?>

这是我遇到问题的地方,我正在使用 javascript 重定向到上一页。我需要浏览器重定向到上一页,但是如果是login.php,那么它应该在login.php之前重定向到上一页,我如何在php中执行此操作,以获取上一页并将浏览器重定向到前一页,但如果前一页是 login.php,那么它应该重定向到它之前的那个。

4

1 回答 1

0

这不是一个确切的解决方案,但要重定向人们使用以下内容:

header('Location: http://www.google.com/');

要使用上面的代码,它必须在任何其他信息显示到页面之前显示。

要将用户重定向到他们来自的页面,请使用以下命令:

header('Location: '+$_SERVER['HTTP_REFERER']);

使用时要小心,$_SERVER['HTTP_REFERER']因为该 url 由用户代理设置并且并不总是存在。

如果您确实需要在他们被重定向到登录页面之前重定向到他们所在的页面,您需要将该信息存储到 $_SESSION[] 变量中,或者在 url 中将其设置为 GET var。

例子:

  1. 用户访问http://www.example.com/settings.php
  2. 用户未登录将他们重定向到login.php?redirect=http://www.example.com/settings.php或在重定向集之前$_SESSION['redirect'] = "http://www.example.com/settings.php";
  3. 处理登录
    • 登录失败将它们重定向到login.php?redirect=http://www.example.com/settings.php或 login.php(如果您使用了 SESSION 变量)。
    • 登录成功重定向header('Location: '+$_GET['redirect']);header('Location: '+$_SESSION['redirect']);

有关会话的更多信息

有关 $_SERVER 变量的更多信息

有关 header() 的更多信息

于 2013-07-22T19:46:03.410 回答