在 PHP 中,我有一个接收 GET 变量的脚本,在数据库中找到一些值并将用户重定向到动态 (PNG) 图像。以下是示例步骤:
用户调用地址“ http://www.example.com/image/50 ”
“.htaccess”文件中的 RewriteRule 将浏览器重定向到脚本“callImage.php?id=50”
脚本“callImage.php”的内容:
[...]
<?php
$id = $_GET["id"];
$a = pickFromDB("a"); // $a = "Hello"
$b = pickFromDB("b"); // $b = "World"
header("Location: dynamicImage.php?a=".$a."&b=".$b); ?>
结果:用户被重定向到脚本“dynamicImage.php”,该脚本通过 $_GET 数组获取两个变量并生成 PNG 图像。唯一的问题是,在这些步骤之后,用户将在其浏览器的地址栏中看到“dynamicImage”脚本的完整地址:
http://example.com/dynamicImage.php?a=Hello&b=World
..虽然我想隐藏最后一个脚本的地址,但保持显示原来的“友好”地址:
http://www.example.com/image/50
有可能做到吗?谢谢!
编辑 我更新了“header()”语句......它缺少关键字“位置:......”:D
更新 2 我也试过,在“callImage.php”脚本中:
[...]
header('Content-type: image/png');
$url = "http://example.com/dynamicImage.php?a=Hello&b=World";
$img = imagecreatefrompng($url);
imagepng($img);
imagedestroy($img);
...但浏览器无法显示它,因为“它包含错误”。我确定文件格式是 PNG,因为在“dynamicImage.php”脚本中,我用来生成图像的语句是“imagepng()”。奇怪的是,如果我把$url的完整地址放在地址栏中按回车,浏览器就可以正确显示图片了!!怎么了?PHP是在开玩笑!
更新 3
好的,我注意到“UPDATE 2”代码运行良好。它以前不起作用,因为在我的 $url 中有一个空格,所以即使浏览器接受带有空格的 URL,“imagefrompng()”函数也没有,产生错误。
现在“callImage.php”脚本自己生成图像,所以在地址栏中有 http://example.com/image/50
感谢大家!