0

我创建了一个脚本,它从数据库中获取随机图像 ID,将其转换为有效的文件名,然后我使用它从链接生成随机图像。

这就是这样一个链接的样子(有效 - 试试看): http://imgit.org/roll.php?image= 3J9N0Y4k8g4l4G7

当您重新加载该链接时,您会注意到图像发生了变化。但是,如果我将此图像添加到它可以工作,那么当我将该链接放在BBCode 标记中<img src="THAT LINK" />时,它在 phpBB 或 vBulletin 等留言板上不起作用。[img][/img]

我想我的脚本有问题,因为那里有各种服务可以做完全相同的事情(论坛上的链接)并且它可以工作。

这是我的 roll.php 脚本:

<?php

$imgit_root_path = '.';
include("{$imgit_root_path}/common.php");

if ($config['disable_roll'])
{
    redirect('index.php');  
}

$roll_key = request_var('image', '');
$roll_key = substr($roll_key, 0, 15);

if (!$roll_key)
{
    redirect('index.php?action=404');   
}

if (!$image->roll_key_exists($roll_key))
{
    redirect('index.php?action=404');   
}

$images = $image->roll_info($roll_key);
$images = explode('|', $images);

$count = sizeof($images);
$index = mt_rand(0, $count - 1);

$extList = array();
$extList['gif']  = 'image/gif';
$extList['jpg']  = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$extList['png']  = 'image/png';

$image_url  = generate_site_url() . IMAGES_PATH . $image->get_name($images[$index]);
$image_inf  = pathinfo($image_url);

header('Content-type: ' . $extList[$image_inf['extension']]);
readfile($image_url);
?>
4

2 回答 2

1

我相信问题可能是 phpBB 将禁止未确认为图像的链接。也就是说,没有已知的图像扩展名,例如 .jpg;

https://www.phpbb.com/community/viewtopic.php?f=46&t=1285255

出于安全原因,BBCode 不允许使用无法确认扩展名的图像(例如在第一个示例中)。代替图像,某人完全有可能将 JavaScript 脚本嵌入到页面上,甚至更糟的是,这可能对访问该页面的任何人,甚至可能是服务器构成安全风险。

这在 vBulletin 中很可能是相同的。

似乎您可以在论坛设置中覆盖它?

或者,如果您可以更改脚本,以便在末尾附加“.jpg”扩展名,那么这也可能有效!

于 2013-01-27T17:08:26.523 回答
0

我认为发生的是浏览器缓存图像。尝试添加 header('Cache-Control: max-age=0'); 在读取文件($image_url)之前;

于 2013-01-27T17:06:10.517 回答