重定向到php中的页面URL

时间:2012-03-27 11:47:49

标签: php

我有以下代码,其中我在页面上使用某些条件打开或重定向到任何其他网址,但调用网址的PHP方法在这里不起作用请任何人帮助我如何摆脱这个问题 这是我的PHP代码

<?php

$good_domains = array("http://172.17.0.221:84/cp.aspx","http://172.17.0.221:84/cp.aspx");
if(!in_array($_SERVER['HTTP_REFERER'],$good_domains)){
echo "<script>alert(\"NO\");</script>";
Redirect('http://www.google.com.pk');
}
else{
echo "<script>alert(\"YES\");</script>";
//echo $_SERVER['HTTP_REFERER'];
//Redirect('http://www.shakarganj.com.pk');

$URL="http://www.google.com"; 

header ("Location: $URL");
}

?>

当我运行页面时,会生成以下错误。

Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\a\sfpl\MT.php:9) in C:\xampplite\htdocs\a\sfpl\MT.php on line 15

7 个答案:

答案 0 :(得分:5)

如果您已向浏览器发送信息,则无法执行基于标头的重定向,您对echo的调用即可。您必须移除对echo的来电,并确保第一个</php代码前面没有空格。

答案 1 :(得分:3)

直接来自header() help page here

  

请记住,在任何实际输出之前必须调用header()   通过普通HTML标记,文件中的空行或PHP发送。   使用include()或require()读取代码是一个非常常见的错误,   函数或其他文件访问函数,并且有空格或空   调用header()之前输出的行。

echo声明两侧的if脚本标记 - 您需要在重定向端删除它们

答案 2 :(得分:3)

除上述答案外 - 如果您使用JS显示 YES / NO 警告,为什么使用PHP进行重定向?

您可以在JS中重定向用户:

alert("NO"); document.location.replace("http://google.co.uk");
// otherwise
alert("YES"); document.location.replace("http://google.com"); 

如果您希望在重定向用户之前有延迟,可以使用setTimeout功能:

alert("NO");
// wait 5 seconds before redirect
setTimeout(5000, function()
{
    document.location.replace("http://google.co.uk");
});

答案 3 :(得分:2)

由于您已经完成了echo语句,因此PHP无法再向输出发送标题。

您必须确保在对页面的任何其他输出之前执行任何header()次调用。

答案 4 :(得分:2)

这是一个标准错误;标头发送http标头和 在输出启动时,标题已经发送

在这种情况下,您可以通过使用输出缓冲来避免此问题(检查http://php.net/ob_start);您需要在服务器上启用该选项并检查缓冲区大小

答案 5 :(得分:2)

在索引文件的顶部添加:

ob_start();

如果我没弄错的话,这将删除此警告。

答案 6 :(得分:0)

使用

echo '<META HTTP-EQUIV="refresh" content="0; URL=your_url">';