在imagepng函数后重定向(Content-Type:image / png)

时间:2017-01-06 20:29:55

标签: php

在某些情况下,我想重定向"标题("位置:http://google.com");"在特定网站上,但页面无法在" imagepng($ im);"之后重定向功能

<CloudExtensionsDir Condition=" '$(CloudExtensionsDir)' == '' ">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Windows Azure Tools\2.9\</CloudExtensionsDir>

1 个答案:

答案 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");
}

提示:确保重定向前没有输出!