尚不清楚您希望传递给 PHP 的这个变量到底做什么。我假设您只是想指出您想要的图像,或者某种用户标识符等......
如果你想将这样的变量传递给 PHP,你可以使用querystring
请求的 。(适用于GET
请求)
例如,您可以<img>
使用以下内容创建一个元素src
:http ://example.com/new_size_image.php?image=imagename&otherparam=1&otherparam2=2
其中 imagename 是图像的标识符,而 otherparam1 和 2 是可选参数。您可以像这样在 PHP 中访问这些变量:
$imagename = $_GET['image'];
$otherparam = $_GET['otherparam'];
$otherparam2 = $_GET['otherparam2'];
然后您可以使用它来确定要为客户提供哪个图像。
接下来,我对您为什么认为需要 iframe 感到困惑。他们不会混淆任何内容或阻止用户复制链接。只使用图像要好得多——您只需要设置正确的标题。例如,试试这个函数,它以$filename
你想要加载的图像的路径作为参数。
function outputImage( $filename ) {
header('Content-Description: File Transfer');
header("Content-type: image/jpeg");
header('Content-Disposition: attachment; filename='.basename($filename ));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename ));
ob_clean();
flush();
readfile($filename );
exit;
}
(这是来自一个相关问题:URL to a random image)
关于安全性的说明:如果您使用查询字符串将您想要的图像传递给脚本(也就是?image=
从第一个块开始),请确保您没有传递文件在磁盘上的位置,否则足够精明的用户可以制定一个请求,使您的脚本发送他们选择的任何文件。相反,我建议使用某种标识符,例如?image=123456
.
这将允许您将此脚本的 url 用作<img>
元素,如下所示:
<img src="http://example.com/new_size_image.php?image=imagename&otherparam=1&otherparam2=2" width="300" height="200" />
编辑
如果你真的不想使用 GET,你可能会使用 jQuery 和 AJAX 来加载图像。然后,您可以向服务器创建一个 POST 请求,该请求将返回一个 base64 编码的图像,然后将其插入页面中。这意味着<img>
标签实际上不会包含图像 URL,而是包含原始 base64 编码数据。不是超级干净,但有些模糊。
要使用 jQuery 和 AJAX 加载图像,请查看此响应:https ://stackoverflow.com/a/12714338/747811
如果您采用这种方法,我建议将图像存储为 base64 编码文件,而不是在每次提供图像时计算它们的编码。要对图像进行编码,您可以使用以下内容:http ://www.freeformatter.com/base64-encoder.html
要在 PHP 中对它们进行编码,请使用base64_encode()
: http: //php.net/manual/en/function.base64-encode.php