以前、お礼メッセージの追加や変更をもっと簡単にできるような方法はないかというメッセージをいただいた。確かにメッセージの変更をするたびにCGIを変更して、FTPでアップロードしてという手順は面倒で、こまめに変更したいというようなサイトオーナーなら、もっと簡単に変更できればいいという思いを抱くのも自然だと思われた。
なので、お礼メッセージの追加および修正を簡単におこなえるような仕組みを作ってみた。だが、これは今までおこなってきた改造とは異なり、新規にCGIを追加する必要がある、ある種大掛かりなものである。しかし、配布版のweb拍手を利用している方なら問題なく設置、利用できるのではないかと思っている。
このページからダウンロードできるweb拍手支援cgiに、一言メッセージ拒否機能(メッセージ、IPアドレス、リモートホストを対象にNG指定可能)を追加したものが公開されています。細かな修正もおこなわれているため、あえてこのバージョンが必要でない限りは、新バージョンをお使いいただきますようお願いいたします。
上記ファイルをダウンロードする。zipにて圧縮されているので、適宜ツールを利用して伸張していただきたい。
伸張後、以下のファイルが存在するか確認する。
maintenance.cgiをテキストエディタ等で開き、1行目のperlへのパスを、サーバの設定にあわせて変更する。clap.cgiを参考にされるとよいだろう。
同様に、3行目および4行目を、必要に応じて修正する。修正が必要なのはファイルへのパスを絶対パスで指定しなければならないサーバにおいてだけなので、そうでない場合にはこのままで構わない。なお、clapmod.plの名前を変更したような場合には、当然変更した名前にあわせて修正する必要がある。
require './jcode.pl';
require './clapmod.pl';
clapmod.plを開き、設定値の変更をおこなう。設定は5行目から20行目にかけて書かれている。
# メッセージを保存するファイルへのパス
$params{mesfile_path} = './mesfile.dat';
# 添付ファイルを保存するディレクトリへのパス
$params{imgdir_path} = './images/';
# 添付ファイルが保存されているディレクトリへのパス(ブラウザでの表示用)
$params{imgdir_path_rel} = './images/';
# パスワード(必須)
$params{password} = '0000';
# アップロード可能なバイト数(KB単位)
$params{file_size} = 1024;
# ページタイトル
$params{page_title} = 'web拍手支援cgi';
# cssへのパス
$params{css_path} = './clapmod.css';
# 実行可能ファイルのアップロード許可:許可=1, 拒否=0
$params{upload_exe} = '0';
ファイルへのパスを絶対パスで指定しなければならないサーバにCGIを設置する場合は、「メッセージを保存するファイルへのパス」および「添付ファイルを保存するディレクトリへのパス」を絶対パスで記述する。このあたりの情報は、ご利用のプロバイダのCGIに関する説明を参照していただきたい。
お礼メッセージを保存するファイルの名前(デフォルトではmesfile.dat)は変更した方がいいだろう(名前を変更する理由については、web拍手を設置する人へを参照されたい)。必要ならば、添付ファイルを保存するディレクトリの名前を変えるのもいいだろう(デフォルトではimages)。これらの名前を変更した場合には、「メッセージを保存するファイルへのパス」、「添付ファイルを保存するディレクトリへのパス」、「添付ファイルが保存されているディレクトリへのパス(ブラウザでの表示用)」を変更した名前に合わせて修正すること。
「添付ファイルが保存されているディレクトリへのパス(ブラウザでの表示用)」は、ブラウザが表示に使用するものなので、絶対パスで書く必要はない。相対指定のほうがなにかとよいと思う。
ディレクトリを指定する場合は、末尾に/(スラッシュ)ないしは\(バックスラッシュもしくは¥、環境によって表示が異なる)をつけなければ動作に不都合が出るので、ご注意いただきたい。/はUnix、Linux系のサーバ、\はWindows系サーバで使われる、ディレクトリを示す記号だ。
「パスワード(必須)」の変更も重要だ。もしmaintenance.cgiの名前を変更せず、パスワードの変更もしなかった場合には、第三者が自由にweb拍手の中身を変更できてしまう。最低でもパスワードを、できればパスワードとファイル名の両方を変更したほうがいい。maintenance.cgiの名前は自由に付け直して構わない(名前を変えても、プログラムの修正は発生しない)。ただし、拡張子はcgiのままにしておいた方が無難だ。
「アップロード可能なバイト数(KB単位)」では、添付ファイルの最大サイズを設定している。デフォルトでは1024KB(1MB)だが、必要に応じて増減するのがよいだろう。
「ページタイトル」は変更しても構わないが、別に変更するメリットもないので、そのままでよいだろう。「cssへのパス」も同様、変更の必要はない。ただし、CSSファイルの名前を変更したときには、修正が必要になる。
「実行可能ファイルのアップロード許可:許可=1, 拒否=0」は、拡張子がexe,bat,com,cgi,plであるファイルのアップロードを許可するかどうかを決定する。デフォルトは0であり、この場合、上記の拡張子を持つファイルのアップロードは抑制される。1にすればなんでもアップロードできるようになるが、不都合が生じる可能性もあるのでお勧めできない。特にWindows系サーバを利用している場合、cgiやplファイルをアップロードしてしまうと、実行可能になる可能性が極めて高い。セキュリティの観点からも、アップロードできないようにしておくべきだろう。
以下のファイルをサーバにアップロードする。clap.cgiの設置されているディレクトリに置かれることを想定して作られているので、ぜひそのようにしていただきたい。
添付ファイル用のディレクトリを作成する。デフォルトではimages。必要に応じて変更していただきたい。
ファイルおよびディレクトリのパーミッションを以下のように変更する。
clap.cgiおよびclapinit.cgiを改造する。
22行目から35行目にかけてのお礼メッセージ設定部分を削除あるいはコメントアウト(行頭に#をつける)する。
# 拍手送信後画面用お礼メッセージ1(タグ使用可)
$message[0]='拍手が送信されました。<br>ありがとうございました!';
# 拍手送信後画面用お礼メッセージ2(タグ使用可)
$message[1]='拍手が送信されました。<br>ありがとうございました!';
# 拍手送信後画面用お礼メッセージ3(タグ使用可)
$message[2]='拍手が送信されました。<br>ありがとうございました!';
# 拍手送信後画面用お礼メッセージ4(タグ使用可)
$message[3]='拍手が送信されました。<br>ありがとうございました!';
# 拍手送信後画面用お礼メッセージ5(タグ使用可)
$message[4]='拍手が送信されました。<br>ありがとうございました!';
17行目あたりにrequire './clapmod.pl';
を追加する。必要に応じて、パスを絶対パスに変更する。
フォームデコードの付近に@message = &getMessages;
を追加する。私はフォームデコードの直前に加えた。
#----------外部ファイル読み込み(サーバーによっては絶対パスで指定)
require './jcode.pl';
require './clapinit.cgi';
#---------フォームデコード
&decode;
#----------外部ファイル読み込み(サーバーによっては絶対パスで指定)
require './jcode.pl';
require './clapinit.cgi';
require './clapmod.pl';
@message = &getMessages;
#---------フォームデコード
&decode;
最後に、clap.cgiの138行目を変更する。
#------メッセージ
$i = int(rand(5));
#------メッセージ
$i = int(rand($#message + 1));
改造は以上で終了である。アップロードして、動作するかどうかを確認いただきたい。
今回の改造用に用意したCGIは、Perl 5に組み込まれているcgi.pmを利用している。Perl 5.004以降の環境が必要だ。またupload()メソッドも用いているため、cgi.pmのバージョンが2.47以降である必要がある。
今回のCGIを作成するにあたり、CGI - 簡単なCGI(Common Gateway Interface)クラスをはじめとする多くのサイト、ページを参考にした。特に参考にしたのは以下のものである。
もちろん、この他にも多くのサイトを参考にしている。これら有用な情報を公開、提供してくださっている諸氏に感謝いたします。
「web拍手支援cgi」の利用は、どうぞ自由にしていただいてかまわない。使用に際しなんらの対価も求めないし、改変、改造、再配布に関する制限もしない。
「web拍手支援cgi」はクッキーを使ってパスワードの管理をおこなうため、ブラウザがクッキーを受け入れるよう設定していただく必要がある(デフォルトではクッキーを受け入れるようになっていることと思う)。クッキーの有効期間は3時間に設定しているが、必要に応じて延長されるのも悪くないだろう(その際にはCGI - 簡単なCGI(Common Gateway Interface)クラスが力になってくれるはずだ)。
そうそう、「web拍手支援cgi」の使用時には、ページの再読み込みや戻るを使わない方がいい。予期しない動作を引き起こしかねないためだ(表示/非表示の切り替えをした後に再読み込みをしてみると、そういう意味がわかると思う)。
< web拍手改造:ログ保存期間を変更する 改造編 web拍手支援cgiについて >