[道里千虎の館]
◆ SDdiary 説明書
(c) Sentora Dori 2001/02/04
■ 仕様
注意:
このプログラムを利用した結果おこるいかなるトラブルに対しても、当方では対処しませんので、各ユーザーの責任でご使用ください。
また、予告なく変更することがありますので、ご了承ください。
■ index
■ 機能
CGIを用いた日記帳です。
うっかり日記を付け忘れても、日付指定ができるので前の日の日付で書くことができます。
- 公開して他人に見てもらうタイプの日記帳。
- 複数の日記を一つのプログラムで扱う。
- 書き込み用と表示用のプログラムを別にしてあるので、表示はスムーズ。
- 日付指定して書き込み可能。
- 日記の削除、修正。
- 古い日記を別のファイルに移動可能。
[index]
■ ソース
プログラム
(ダウンロード後、ファイル名が"-cgi.txt"、"-pl.txt"となってるものを".cgi"、".pl"に変更してください)
[index]
■ インストール
- ソースから必要なファイルをダウンロードする。
SDシリーズのパスワード作成、管理プログラムを持っていない場合は、「道里千虎のソフト」トップページからそれもダウンロードする。
- SDdiarywrite.cgi と SDdiaryshow.cgi の最上部のPerlのパスを正しく設定する。
(例) #!/usr/local/bin/perl
※ PerlのパスはUNIXの種類やサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。
- SDdiarywrite.cgi の上部にある「変数設定」部分を編集する。
(赤色で示した変数以外は、特に必要がないかぎり変更しなくて大丈夫です。)
- $databasedir ..... 日記データファイルをおくディレクトリのパス(※注1)
- $maxlength
..... 一つの日記の最大の長さ
- $passfiledir
..... パスワードファイルをおくディレクトリのパス(※注2)
- $passfile
..... パスワードファイル名(※注3)
- $pass
..... 優先パスワード(※注3)
-
- $method ..... フォーム内容の送信方法(※注4)
- $uselock ..... ファイルロックの方法を指定する (通常は変更必要なし)
2: flockを使用する 1: ロックファイルでロックする 0: ロックしない
- $kanjicode ..... 漢字コード(sjis or jis or euc)(初期設定はsjis)(※注5)
- $jcodelib ..... 漢字ライブラリのファイル名
※注1 プログラムと同じ場所に置く場合は $basedir="."のまま。
※注2 プログラムと同じ場所に置く場合は $basedir="."のまま。パスワードファイルは暗号化されてはいますが、セキュリティのために、外部からアクセスできないディレクトリにおくことをおすすめします。
※注3 $pass
にパスワードを指定した場合は、そのパスワードが入力パスワードとの比較に用いられます。指定しない場合には、$passfiledir
にある $passfile
からパスワードを検出し比較に用いられます。
ここにパスワードを指定していると、もしCGIプログラムファイルを見られてしまったときにパスワードが他人にわかってしまうので、ここでは指定せずパスワードファイルを使用することをおすすめします。
※注4 'post' が使えないところでは 'get'
に変えてください。
※注5 文字化けする場合はコードを変えてください。
- SDdiaryshow.cgi の上部にある「変数設定」部分を編集する。
- $databasedir ..... 日記データファイルをおくディレクトリのパス(※注1)
- $title .....
ページの最上部に表示されるタイトル
※注1 プログラムと同じ場所に置く場合は $basedir="."のまま。
- SDdiarywrite.cgi, SDdiaryshow.cgi, jcode.pl を FTPのアスキーモードで転送し、CGIの使用できるディレクトリに置く(※注)。パーミッションをそれぞれ755、755、644にする。
(telnetの場合、以下同様。)
% chmod 755 SDdiarywrite.cgi
% chmod 755 SDdiaryshow.cgi
% chmod 644 jcode.pl
※注
CGIの使用ディレクトリはサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。(通常は
cgi-bin 以下のディレクトリであることが多い。)
- SDシリーズパスワード作成プログラムで、日記作成に必要となるパスワードを作成する。
プログラム名は diary とする。
(SDdiarywrite.cgi
の上部にもプログラム名が書かれています。)
* すでに作成してある場合には6.をとばしてください。
※ 3.で変数 $pass
にパスワードを指定した場合は、6.の操作は必要ありません。
※ SDシリーズパスワード作成プログラムについては、リンク先の説明をご覧ください。
- ブラウザからSDdiarywrite.cgiにアクセスする。
→ パスワード入力画面が表示されたらインストール完了。
CGIプログラムの拡張子に「pl」など別のものを指定されているサーバでは、拡張子をそれに合わせて変更して下さい。(SDdiary*.cgi
を SDdiary*.pl に変更する。)
[index]
- 新しい日記の名前を決める。例えば test
とする。複数の日記を作成する場合は重複しないように名前をつけてください。
*使用できる文字は英数字のみです。他の記号は使えません。
- 日記データを保存するための test.txt という空ファイルを作る。それを$basedirで指定したディレクトリ($basedir="."の場合は
SDdiarywrite.cgi
と同じディレクトリ)におく。パーミッションを 666 に設定する。
(telnetの場合)
% touch test.txt
% chmod 666 test.txt.
- 日記書き込みプログラム SDdiarywrite.cgi
にアクセスし、パスワードを入力して「送信」ボタンを押す。
- 1.で決めた日記名を入力し「表示」ボタンを押す。
→日記を書くフォームが表示される。
以上で完了です。新しい日記をさらに作成するには、1.からの操作を繰り返してください。
[index]
日記書き込み用プログラム SDdiarywrite.cgi
にアクセスし、パスワードを入力して「送信」ボタンを押します。
「日記名」欄に日記名を入力し「表示」ボタンを押します。
日記を書くためのフォームが表示されます。
すでに日記が書かれていれば、新しい順に表示されます。
●日記を書く
文章を書き「書き込み」ボタンを押します。日付は書き込んだ日の日付となります。
日付を指定したい場合には、「年月日を指定する」のところをチェックし、適切な日付を入力してください。
●日記の削除
最下部の「削除」欄に日記番号を入力し「削除」ボタンを押します。
削除してしまうと元に戻せないので注意してください。
●日記の編集
最下部の「編集」欄に日記番号を入力しますと、編集フォームが現れます。
文章を編集した後、「編集」ボタンを押します。
日付も編集したい場合には、「年月日も変更する」のところをチェックし、適切な日付を入力してください。
●古い日記を別のファイルに移動させる
たくさん書いていくとどんどんファイルサイズが大きくなり表示される日記も膨大なものになります。
そこで、例えば月ごとに、古い日記を別のファイルに移動させて整理しましょう。
- 移動させる先の日記の名前を決める。例えば test0101
とする。(2001年1月の日記という意味で。)
- 日記データを保存するための test0101.txt という空ファイルを作る。それを$basedirで指定したディレクトリ($basedir="."の場合は
SDdiarywrite.cgi
と同じディレクトリ)におく。パーミッションを 666 に設定する。
(telnetの場合)
% touch test0101.txt
% chmod 666 test0101.txt.
- 「古い日記を別のファイルに移動」欄で、日記番号と移動させる先の日記名を入力し「移動」ボタンを押す。
→指定した日記番号より古い日記(若い番号の日記)すべてが、元の日記から削除され、移動先の日記につけ加えられます。
[index]
次のようにリンクのタグを書く。?の後ろに日記名を書く。
<A HREF="SDdiaryshow.cgi?test">日記帳テスト</A>
[index]
過去の日記も表示させたいときには、次のいずれかの方法をとるとよいでしょう。
○月ごと、週ごと等に日記ファイルを分け、各日記名を指定して表示させる。
例) 2001年1月から12月までを表示する。
・test0101.txt, test0102.txt, ..... , test0112.txt
のファイルにそれぞれの月の日記データを入れる。(パーミッションは、まだ書き込むなら666、もう書き込まないなら644)
・リンクを貼る。
<A HREF="SDdiaryshow.cgi?test0101">1月</A>
<A HREF="SDdiaryshow.cgi?test0102">2月</A>
.....
<A HREF="SDdiaryshow.cgi?test0102">12月</A>
○ソースをHTMLファイルとして保存しHTMLファイルで指定して表示させる。
例えば2001年1月の日記データだけが入った test0101.txt を
<A HREF="SDdiaryshow.cgi?test0101">1月</A>
で表示させた後、ブラウザのメニューから「ファイル>名前をつけて保存」を選び、ページをHTMLファイル
test0101.html として保存し、次回からは test0101.html
に直接リンクを貼る。
<A HREF="test0101.html">1月</A>
※
リンクタグについては、通常のHTMLファイルに貼ってもよいですし、または
SDdiaryshow.cgi
の65行目あたりに、リンクのタグを書く欄を用意してあるので、そこに書いてもよいでしょう。
[index]
■ Q&A
Q1: 日記が表示されない。
- 各ファイルのパーミッションは合っていますか。
| 書き込み用 |
SDdiarywrite.cgi |
755 |
|
| 表示用 |
SDdiaryshow.cgi |
755 |
|
| 日本語処理用ライブラリ |
jcode.pl |
644 |
|
| 日記データ |
(日記名).txt |
666 |
|
- SDdiarywrite.cgi と SDdiaryshow.cgi の最上部のPerlのパスが正しく設定されていますか。
(例) #!/usr/local/bin/perl
- 日記データ (日記名).txt は書き込み用プログラム SDdiarywrite.cgi
および表示用プログラム SDdiaryshow.cgi の
$databasedir
で指定されたディレクトリに置かれていますか。
- HTMLファイルから、日記表示プログラム SDdiaryshow.cgi
にアクセスするときのリンクの書き方はあっていますか。
(例: 日記名test)
<A HREF="SDdiaryshow.cgi?test">テスト</A>
Q2: 日記を書き込めない(書き込み用プログラムが動作しない)。
- 各ファイルのパーミッションは合っていますか。
- ファイルロックエラーの可能性があります。
初期設定ではflockを用いていますが、エラーが出る場合は、本体プログラム
SDdiary.cgi の
$uselock を1に変更してください。ロックファイルによるロック方式を用います。
それでもエラーが出る場合は、 SDdiary.cgi の
$uselock を0に変更してください。この場合、ファイルロックは行いませんが、日記は個人で書くので何も問題はないでしょう。
- パスワードファイルは書き込み用プログラム SDdiarywrite.cgi の
$passfiledir
で指定されたディレクトリに置かれていますか。
- SDシリーズパスワード作成プログラムで、日記書き込みに必要となるパスワードを作成していますか。プログラム名は
diary です。
その他
CGIを使用できる環境にありますか。(プログラムを置くディレクトリ、プログラムの拡張子など。)
※
本体プログラムをCGIの使用できる場所に正しく置き、本説明書どおりに使用しても問題がおこる場合は、掲示板に書き込むか道里千虎あてにメールをください。
[index]
■ 更新履歴