首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网站开发:架构

网站开发:架构
EN

Stack Overflow用户
提问于 2012-06-20 08:44:03
回答 2查看 100关注 0票数 0

我正在建立一个网站来展示我的漫画--但我读过一些教程(Elated.com CMS design with images),它们提倡使用数据库来存储文件扩展名,并使用更面向对象的方法。到目前为止,我没有这样做,因为我没有看到需要,因为我通过FTP管理文件,并且用户将不会添加内容。所以,在我继续之前,我想让大家安心一点,我现在的架构还可以。

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

代码语言:javascript
复制
<?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 } ?>

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

代码语言:javascript
复制
<?php $myImage = $_GET['image']; ?>

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

我可以继续这样走下去吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-20 08:47:56

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

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

代码语言:javascript
复制
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等),并可以生成一些相当有趣的统计数据。

示例数据如下所示:

代码语言:javascript
复制
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)

可以没完没了,但我想你已经明白了。

票数 2
EN

Stack Overflow用户

发布于 2012-06-20 08:51:18

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

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

代码语言:javascript
复制
<?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);
}
?>

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

代码语言:javascript
复制
<?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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11111404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档