在某些情况下,我想重定向"标题("位置:http://google.com");"在特定网站上,但页面无法在" imagepng($ im);"之后重定向功能
<CloudExtensionsDir Condition=" '$(CloudExtensionsDir)' == '' ">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Windows Azure Tools\2.9\</CloudExtensionsDir>
答案 0 :(得分:1)
您无法重定向此位置的原因是已发送的标头。因此,您必须确保不使用headers_sent()
发送标头。
请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题 来源: http://php.net/manual/en/function.header.php
您可以使用如下函数重定向任何位置:
function redirect($url) {
if(headers_sent() === true) {
echo '<script type="text/javascript">'."\n";
echo '//<![CDATA['."\n";
echo 'document.location.href="'.$url.'";'."\n";
echo '//]]>'."\n";
echo '</script>';
} else {
header('Location: '.$url);
}
}
代码逻辑是否可能出现问题?
如果要在输出后直接重定向,则不需要输出图像。我认为您需要以下内容:
if ($dont_redirect) {
$im = imagecreatefrompng("https://lh3.googleusercontent.com/-oOyCh939GVRH7snJ4o9UjvOhNueTR6TQM1Ca10A0DHyqediBDXqFS9uvyB8qyI7Rg=h400");
header('Content-Type: image/png');
imagepng($im);
//imagedestroy($im);
} else {
//header("Content-Type: text/html");
//header("HTTP/1.1 301 Moved Permanently", TRUE, 301);
header("Location: http://google.com");
}
提示:确保重定向前没有输出!