[英]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.