0

我正在建立一个站点来展示我的漫画——但我已经阅读了一些教程(Elated.com CMS 设计与图像),这些教程提倡使用数据库来存储文件扩展名,并使用更面向对象的方法。我现在没有这样做,因为我没有看到需要,因为我通过 FTP 管理文件,并且用户不会添加内容。所以,在我继续之前,我希望我目前的架构还可以。

现在,我的页面从文件系统中获取图像,如下所示:

<?php
$dir = "../images/*";
foreach(glob($dir) as $image) {
$total = count(glob($dir . "*"));
?>
        <span class="comicBG"><a href="./viewComic.php?image=<?php echo $image ?>"><img src="./thumbnailer.php?img=<?php echo $image ?>&mw=&mh=" /></a></span>

<?php } ?>

单击漫画会在模板上显示该漫画:

<?php $myImage = $_GET['image']; ?>

 <center><img src="<?php echo  $myImage  ?>" /></center>

我可以继续走这条路吗?

谢谢

4

2 回答 2

2

你绝对可以这样开始,但我想这一切都取决于你的最终目标是什么。如果您只是希望能够将漫画上传到 /images/ 目录并让脚本显示缩略图和链接,那么您很好……但是如果您认为您需要的功能比我建议的更多,至少可以工作从数据库。例如,存储每个漫画缩略图被点击多少次的信息,或者可能是访问和查看漫画的人的屏幕分辨率,这样您就可以相应地调整漫画的大小。只是几个想法,但可能值得你花时间。

编辑:这是一个示例表结构,只是为了给您一些想法。

cartoon_id           int(11)         auto-increment    primary
title                varchar(32)
filename             varchar(32)
description          varchar(256)
num_views            int(11)
last_view_dt         datetime
order                tinyint(3)

您可能会喜欢并设置第二个表,将视图信息插入(日期、时间、ip_address、comic 等),并可以生成一些相当有趣的统计数据。

样本数据如下:

cartoon_id:          1    (would be generated automatically)
title:               "Awesome Man!"
filename:            "images/cartoons/awesomeman1.jpg"
description:         "This was my first cartoon, created in 2002, etc..."
num_views:           2300  (this would setup to just auto increment when viewed)
last_view_dt         2012-07-21
order                1     (could use this to determine the order in which comics are displayed on the thumbnail page)

可以继续下去,但我想你明白了。

于 2012-06-20T00:47:55.747 回答
1

到目前为止看起来还不错,您可能想$_GET['image']在使用它之前验证它的内容,并希望在输出它时注意$image$myImage正确编码。所以基本上照顾输出和输入多一点。

此外,您不使用该$total变量,因此不需要创建它。

<?php
$dir = "../images/*";
$images = glob($dir);
foreach ($images as $image) {    
    $linkUrl = sprintf('./viewComic.php?image=%s', urlencode($image));
    $thumbUrl = sprintf('./thumbnailer.php?img=%s&mw=&mh=', urlencode($image))
    printf('<span class="comicBG"><a href="%s"><img src="%s" /></a></span>', $linkUrl, $thumbUrl);
}
?>

对于输入验证,您应该定义图像名称中允许的一组安全字符,然后对其进行检查:

<?php
$image = $_GET['image']; 
if (!preg_match('/^[a-z0-9_-]+\.jpg$/')) {
    header("HTTP/1.1 403 Forbidden");
    echo 'Forbidden'; 
    return;
}
?>
<center><img src="<?php echo htmlspecialchars($image) ?>" /></center>
于 2012-06-20T00:51:17.500 回答