【问题标题】:Redirecting same page again再次重定向同一页面
【发布时间】:2012-02-19 21:31:39
【问题描述】:

我有页面register.php,用来获取用户信息,表单完成后提交到另一个页面post.php。

post.php 执行两个动作,它将传入的数据依次添加到 2 个位置,1.php 和 2.php,所以数据流向是

 register.php -->post.php --> 1.php -->2.php -->register.php?value='abc'

一旦数据被发送到这两个位置,register.php 会再次被加载,但这次页面会出现在浏览器中

http://www.example.com/register.php?value='abc'

如何将此页面重定向到welcome.php?新流程将是

register.php -->post.php --> 1.php -->2.php -->register.php?value='abc' -->welcome.php

至于这样一个奇怪的流程,那是相当学习的东西,而且没有问题,我在最后一步被抓住了,当我必须将页面重定向到welcome.php时..

我该怎么做?

【问题讨论】:

  • 为什么不能像在前几页中那样使用 http 重定向? header('Location: ') 不起作用?元重定向? (谷歌搜索)
  • 之前我确实使用表单来发送数据。

标签: php redirect http-headers


【解决方案1】:

为什么不使用会话变量而不是在 register.php 页面上使用 GET?

if(isset($_SESSION['value']){
    header('Location:');
}

【讨论】:

    【解决方案2】:

    您有多种选择,使用 header()Location:(手册中的示例之一):

    header( 'Location: welcome.php');
    // Or with all parameters:
    header( 'Location: welcome.php', true, 301);
    

    meta redirect:

    <meta http-equiv="refresh" content="0; url=http://example.com/">
    

    javascript redirect:

    window.location.href = 'welcome.php'
    

    【讨论】:

    • 感谢您的帮助,但请告诉我,如果我使用这 3 个中的任何一个,每当页面加载时,它将被重定向到 welcome.php,我是真的吗?
    • 只是提个醒...做 header('Location:welcome.php', true,301);避免错误
    • @NewBee 每当您使用它们时页面将被重定向(第一个 header() 实际上会停止 php 脚本以完成)
    • 我想检查 'example.com/register.php?value='abc'' 然后我想重定向,并非总是如此
    • @NewBee if( whatever){ header('Location: welcome');} else { not so much redirected}
    【解决方案3】:

    这可能是你想要的

    if(str_pos($_SERVER['HTTP_REFERER'],"2.php") > 0){
       header( 'Location: welcome.php', true,301);
    }
    

    希望对你有帮助

    【讨论】:

    • if($_SERVER['HTTP_REFERER'] == "2.php") 可以吗?还是我必须使用完整的网址?
    • str_pos 是最好的!它将搜索该字符串的所有地址。要么 this 要么 preg_match 但这更容易!
    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2013-03-11
    • 2016-12-12
    • 2018-03-18
    相关资源
    最近更新 更多