2013-07-22 102 views
0

我有我在PHP中的表单重新提交的小问题,当表单填写在我的网站上,并提交时,他们被重定向回来。表单重新提交在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,那么它应该重定向到之前的页面。

+0

成功重定向你为什么不设置一个'地点:'头呢? – Brad

+0

你应该看看这个'$ _SERVER ['HTTP_REFERER']'http://php.net/manual/en/reserved.variables.server.php –

+0

布拉德,我不能使用位置,因为我已经发送了一些输出在提交表单之前使用echo,这不会使头部('Location')工作,或者有另一种方法来使用我没有得到的Location方法? –

回答

0

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

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

使用上面的代码之前显示在页面的任何其他信息就必须展示。

将用户重定向到他们从使用附带的以下页面:

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

使用$_SERVER['HTTP_REFERER']时作为URL由用户代理设置,并不总是有要小心。

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

例子:

  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']);

More Information on Sessions

More Information on $_SERVER variables

More Information on header()

+0

我是否必须将其存储在会话变量中?我无法得到它并重定向它们吗? –

+0

@samsonade,我发布了2个选项。 1是会话变量,另一个是将其作为GET变量发布到网址中。除此之外,我不知道一个可行的解决方案。甚至不认为有另一种解决方案是完全不同的。 – Steven10172

相关问题