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、コミックなど) を挿入する 2 番目のテーブルを工夫してセットアップし、かなり興味深い統計を生成することができます。

サンプルデータは次のようになります。

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 に答える