php redirect function
在我的PHP中,有没有任何方法可以进行重定向,这是一个if语句。所以…只有在这样和这样的条件成立时才重定向?另外,我可以为GET请求通过该URL传递变量吗?
- 如何获取运行PHP脚本的链接?这可以帮你摆脱困境。看看所有的答案。
1 2 3 4
| if (condition )
{
header('Location: url');
} |
在将任何内容输出到页面之前,请先将其放入。将URL替换为希望重定向到的URL。你一个添加获取变量的标准方式(网址?var1=x&var2=y)。
- 确保使用完整的URL
- 如果我的if(条件)位于页面的下方,该怎么办?我需要它在我声明某些变量之后工作
- 您可以将它放在变量声明之后。
- 你"必须"把exit放在报头后面,所以在你发送报头之后它会立即重定向。否则脚本将继续执行。
- 克里斯-你需要使用输出缓冲。通过输出缓冲,您可以在代码中的任何地方更改头和cookie(就像上面对重定向所做的那样)。
- 我想我误解了这个问题。您可以通过在脚本开始时调用ob_start();在脚本结束时调用ob_end_flush();来进行输出缓冲。
- 如何将变量添加到头URL的URL中?
- @克里斯,对不起,我不确定你在问什么,请澄清你想重定向到的网址。我只能猜测您的意思是"example.com/index.php?"page=1&category=4",在这种情况下,您可以直接将变量传递到查询字符串中。
- header('位置:index.php?test=$test');当我回音时,我得到的只是"$test",而不是实际值
- 克里斯,如果你使用单引号,那么表达式就不会被计算。您可以这样做:header('location:index.php?test='.$test)或header("location:index.php?"测试= $test"
- 你是老板。谢谢您!
- 根据规范,您应该使用完整的URL,而不是位置头的相对URL。
1 2 3
| function redirect ($url) {
header("location:" . $url);
} |
- 头部后面应该有一个exit()或die,因为某些浏览器或爬虫程序忽略了header函数,这可能导致它们能够访问未经授权的内容。
它是非常有用的重定向功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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'); |
或者您可以像这样将头赋给函数中的变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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。如果要在几秒钟后重定向,请输入一个以秒为单位的数字作为第二个参数。我已经在函数的底部给出了两个例子。
- 那么,请进一步解释一下它的作用:echo对header的回报值没有意义。此外,为什么该函数返回不变的输入值?最后,不鼓励相对重定向,应倾向于绝对重定向。
- 函数中有一个控件,如果只输入了url参数,则会重定向调用;如果使用url参数输入了refresh参数,则在保持刷新值秒后会重定向给定的url。
- 你为什么要用echo?
- …另外,总是定义$refreshtime,所以总是执行第一个分支。你应该提供比isset更好的支票
- 你不需要,你可以改变函数,你可以做函数的回音。您可以将它赋给变量,并稍后进行回音。可以使用类似echo redirecturl("index.php");
- 为什么要回送静态输入?
- 对不起,我不想无礼,但你应该看看问题,看看是否应该解决。在此之前,我不建议使用该代码
- 是定义的,但我问是否设置了定义的值。
- 没问题,如果你想的话,我可以编辑你想要的代码。
- 好的,我编辑了代码,请检查。
- 抱歉,但是代码仍然是错误的:它仍然只使用第一个分支(因为$refreshtime总是被设置!),并且由于该函数没有返回值,因此仍然没有可从header返回的内容。在发布代码之前,您是否检查过代码的功能?
- 是的,我现在在网上查过了,工作正常,你收到了什么样的错误?
- 你查过这两个案子吗?RedirectURL的回报值到底是多少?
- 正如您在sandbox.onlinephpfunctions.com/code/…上看到的,两个执行都包含refresh部分
- 请将$refreshTime=0更改为$refreshTime=null。你是对的,我现在看到了bug,但它确实起作用。