【问题标题】:php redirect function [duplicate]php重定向功能[重复]
【发布时间】:2011-07-17 19:13:12
【问题描述】:

有什么方法可以在我的 PHP 中做一个 if 语句的重定向。所以..只有在这样那样的条件为真时才重定向?另外,我可以通过该 URL 为 GET 请求传递变量吗?

【问题讨论】:

标签: php redirect


【解决方案1】:
if (condition)
{
    header('Location: url');
}

在页面上输出任何内容之前放置它。将 url 替换为您希望重定向到的 url。您可以以标准方式添加 GET 变量 (url?var1=x&var2=y)。

【讨论】:

  • 确保使用完整的网址
  • 如果我的 if(条件)位于页面的下方怎么办。我需要它在我声明某些变量之后工作
  • 你可以把它放在你的变量声明之后。
  • 你“必须”把exit放在标题后面,所以它会在你发送标题后立即重定向。否则脚本将继续执行。
  • Chris - 你需要使用输出缓冲。通过输出缓冲,您可以在代码中的任何位置更改标头和 cookie(就像您在上面使用重定向所做的那样)。
【解决方案2】:
function redirect($url) {
    header("location: " . $url);
}

【讨论】:

  • header后面应该有exit()或者死掉,因为一些浏览器或爬虫忽略了header函数,这可能导致他们能够访问未经授权的内容。
【解决方案3】:

这是非常有用的重定向功能..

function RedirectURL($url, $refreshtime = null)
{
    if(isset($refreshtime))
    {
        echo header('refresh:'.$refreshtime.';url='.$url);
    }
    else
    {
        echo header('Location:'.$url);
    }
    return $url;
}

RedirectURL('login.php' , 5);

RedirectURL('index.php');

或者您可以像这样将标题分配给函数内的变量。

function RedirectURL($url, $refreshtime = null)
{
    if(isset($refreshtime))
    {
        $header = header('refresh:'.$refreshtime.';url='.$url);
    }
    else
    {
        $header = header('Location:'.$url);
    }
    return $header;
}

echo RedirectURL('login.php' , 5);

echo RedirectURL('login.php');

【讨论】:

  • 请进一步解释 - 对我来说,这看起来很奇怪的代码,例如 header 不会返回任何可以回显的内容
  • 一个非常简单的代码。该函数有两个参数,一个是可选的。您在函数中键入并运行 url。如果要在几秒钟后重定向,则输入一个以秒为单位的数字作为第二个参数。我已经在函数底部给出了两个例子。
  • 好吧,那么请进一步解释它的作用:echoheader 的返回值上没有意义。此外,为什么该函数返回未更改的输入值?最后,不鼓励相对重定向,应该支持绝对重定向
  • 函数中有一个控件,如果只输入url参数,则调用重定向,如果输入refresh参数,带有url参数,给定url保存刷新值后重定向几秒钟。
  • 你为什么使用echo
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2013-03-18
  • 2013-09-22
相关资源
最近更新 更多