夏休みですので絵日記をつけましょう。まずは手動で画像とログファイルをFTP送信して表示してみます。
イメージはこんな感じ。
ログファイルはFORMから編集できるようにするつもりですが、今は
2006<>8<>1<>晴れ<>我が輩はうさぎである。名前はまだない。<br>狭くて薄暗いところで寝ることを愛する。<>
このようなファイル(imagecalendarlog.cgi)をテキストエディタで書いて、それを読み込んで表示しています。
画像は [images] フォルダの中にある 2006-8-1.jpg・2006-8-2.jpg を表示しています。
画像ファイル名は [年-月-日.jpg] の形式でつけていきます。表示の時に
と、画像ファイルの存在を確認してから
}
で表示します。
カレンダー内の日付からのリンクは
for ($i = 0; $i < count($log); $i++) { //展開する
$list = explode("<>", $log[$i]); //区切り文字 <> で区切る
if (($nen . $gatsu . $hi) == ($list[0] . $list[1] . $list[2])) { //その日のデータがあれば
print "<a href='./imagecalendar.php?nen=" . $nen . "&gatsu=" . $gatsu . "&hi=" . $hi . "'>"; //リンクを書く
$link = "on"; //リンクがあるという印
}
}
print $hi; //日表示
if ($link == "on") {
print "</a>";
}
こんな感じで GET で渡して、スクリプトの最初のほうで値があれば受け取り処理します。
ファイルをアップロードするにはフォームに enctype="multipart/form-data" を加えます。
入力部分は <input type="file" size="50" name="image"> name属性名は任意ですが、受取側と揃えてください。
受取側は
move_uploaded_file($_FILES["image"]["tmp_name"], "./images/" . $nen . "-" . $gatsu . "-" . $gethi . ".jpg");
}
アップロードするのがJPEGファイルのみで、アップロードする権利が管理人のみにある場合、処理はこれだけで良いでしょう。
画像アップロード掲示板のように複数人がアップロード可能となる状況ですと、ファイルの容量や形式のチェックや制限が必要になってきます。
と、ここまで書いて気が変わり、ファイル形式のチェックだけすることにしました。ファイルがJPEGファイルであるかどうか確かめるには
このように書きます。 [image/pjpeg] と [image/jpeg] の両方を書かないとPCとMacintoshに対応できないのでお気をつけて。
ログの追加・編集・削除の処理は前回の [メモカレンダー] と同様です。削除処理時に文字が空の状態で送信した場合ログを1行削除するわけでが、その際画像があれば削除するようにします。ファイル削除は unlink関数を使用します。
unlink("./images/" . $nen . "-" . $gatsu . "-" . $gethi . ".jpg"); //削除する
}
説明しきれない部分はこのページの一番下、スクリプトをダウンロードしてご覧ください。
下のサンプルは実行すると2006年8月のカレンダーから始まるようにしましたが(書込・編集・削除も管理人のみ可)、ダウンロードするスクリプトは実行時に当月表示するようにしてあります。
この絵日記を こちら からzip形式でダウンロードできるようにしました。 お役立てください。
Fatal error: Uncaught Error: Undefined constant "Y.n.j" in /home/users/2/secret.jp-final/web/phpholiday/25/index.cgi:107 Stack trace: #0 /home/users/2/secret.jp-final/web/phpholiday/index.php(334): include() #1 {main} thrown in /home/users/2/secret.jp-final/web/phpholiday/25/index.cgi on line 107