标题位置无法正常工作

Bec*_*cky 1 php redirect imagick http-headers

我有一个PHP脚本渲染图像(与想象)并将其保存到某个目录"SITE_ROOT.$filePath",然后做一个header('Location: ' . SITE_ROOT.$filePath),它重定向到的文件是一个png图像.

如果我直接进入路径,就像在URL栏中键入它我可以保存图像,一切正常,但是当我依靠脚本重定向我,我尝试右键单击并保存图像它没有我知道我实际上是在尝试保存图像,它认为我正在尝试将其保存为名为"Driver"的非类型文件,这是脚本页面的名称.

我不知道这里有什么问题,标题位置肯定会带我到图像并且在重定向后没有'Driver'文件的记录?

同样的事情发生在redirect()btw上.

在此先感谢您的帮助!

编辑:通过die()在header命令后面放置此问题.

spr*_*ain 5

您正在使用不与标头位置一起使用的文件路径.你应该使用网址.

最佳做法是在标题位置使用绝对URL.PHP文档说:

HTTP/1.1需要绝对URI作为»Location:包括方案,主机名和绝对路径的参数,但某些客户端接受相对URI.(来源)

也总是在之后退出脚本,因为否则根据我的经验,在重定向之后可能仍会执行重定向的代码.所以一个很好的例子看起来像这样:

header("location:http://www.mysite.com/path/to/myfile.php");
exit;
Run Code Online (Sandbox Code Playgroud)

通常你会在这种情况下使用服务器变量:

$url = $_SERVER["HTTP_HOST"]."/path/to/myfile.php";
header("location:".$url);
exit;
Run Code Online (Sandbox Code Playgroud)

干杯!