随机图像创建脚本麻烦

时间:2013-01-27 16:35:05

标签: php image random forum

我创建了一个脚本,它从数据库中随机获取 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);
?>

2 个答案:

答案 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);