网站开发:架构

时间:2012-06-20 00:44:03

标签: php mysql

我正在建立一个网站来显示我的漫画 - 但我已经阅读了一些主张使用数据库存储文件扩展名的教程(Elated.com CMS design with images),并使用更面向对象的方法。我现在没有这样做,因为我没有看到需要,因为我通过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>

我可以继续这样吗?

谢谢

2 个答案:

答案 0 :(得分: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,漫画等),并可以生成一些相当有趣的统计数据。

示例数据如下:

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)

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

答案 1 :(得分: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>