我创建了一个脚本,它从数据库中随机获取 IMAGE ID ,将其转换为有效的文件名,然后用它从链接生成随机图像。
这就是这样一个链接的样子(工作 - 试试): http://imgit.org/roll.php?image=3J9N0Y4k8g4l4G7
当您重新加载该链接时,您会注意到图像发生了变化。如果我将此图像添加到<img src="THAT LINK" />
它可行,但是,当我将该链接放在[img][/img]
BBCode标记内时,它不能像phpBB或vBulletin那样在留言板上工作。
我认为我的脚本存在问题,因为有各种各样的服务完全相同(论坛上的链接)并且它有效。
这是我的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);
?>
答案 0 :(得分:1)
我认为问题可能是phpBB将禁止未确认为图像的链接。也就是说,没有已知的图像扩展名,例如.jpg;
https://www.phpbb.com/community/viewtopic.php?f=46&t=1285255
出于安全原因,无法确认其扩展名的图像 (例如在第一个例子中)BBCode不允许。而不是 图像,人们完全有可能嵌入JavaScript脚本, 或者更糟糕的是,在一个可能对任何人造成安全风险的页面上 访问该页面,甚至可能是服务器。
这在vBulletin中很可能是相同的。
似乎你可以在论坛设置中覆盖它吗?
或者,如果您可以更改脚本,以便可以在末尾添加“.jpg”扩展名,那么这也可能有效!
答案 1 :(得分:0)
我认为会发生什么是浏览器缓存图像。尝试添加标题('Cache-Control:max-age = 0');在readfile之前($ image_url);