我正在建立一个网站来展示我的漫画--但我读过一些教程(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>我可以继续这样走下去吗?
谢谢
发布于 2012-06-20 08:47:56
你当然可以这样开始,但我想这完全取决于你的最终目标是什么。如果您只是希望能够将漫画上传到/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-20 08:51:18
到目前为止看起来还不错,您可能希望在使用$_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>https://stackoverflow.com/questions/11111404
复制相似问题