我正在建立一个网站来显示我的漫画 - 但我已经阅读了一些主张使用数据库存储文件扩展名的教程(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>
我可以继续这样吗?
谢谢
答案 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>