繁体   English   中英

重定向到php中的页面URL

[英]redirecting to a page url in 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

如果您已经向浏览器发送了信息,则无法执行基于标头的重定向,您对echo的调用将执行此操作。 您必须删除对echo的调用,并确保第一个</php标记前面没有空格。

直接从header() 帮助页面

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

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

除了上面的答案 - 如果您使用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");
});

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

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

这是标准错误; 标头发送http标头,并且在输出启动时,标头已经发送

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

在索引文件的顶部添加:

ob_start();

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

采用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM