最新バージョンはv1.1.7.3です。
注意:このプログラムは重要な情報を扱うことを想定していませんので、個人情報など重要な情報の入力には使用しないで下さい。
※印がv1.1.7で更新した部分。
※※印がv1.1.7.1で更新した部分。
※※※印がv1.1.7.2で更新した部分。
※※※※印がv1.1.7.3で更新した部分。
本CGIはイベント日程調整用CGI「Schedule Board」をベースにイベントを複数登録できるようにしたものです。
Multi Schedule Boardへ移行したい方はその他:Schedule Boardからのデータ移行についてを参照してください。
「Schedule Board」とではデータ削除の処理が違う部分がありますので、以下の表を参考にしてください。
詳しい機能については使用マニュアルを参照ください。
処理名 | CGI名 | 処理概要 | 削除されるファイル |
---|---|---|---|
イベント削除 | Schedule Board | - | - |
Multi Schedule Board | イベントデータファイルのイベントデータ自体を削除します | スケジュールデータファイルsch-evt*.txt BBSデータファイルbbs-evt*.txt |
|
イベントデータを削除 | Schedule Board | イベントデータファイルを空にします | - |
Multi Schedule Board | イベントデータ枠(番号)は確保しておき、イベントのデータをクリアします | - |
本CGIはイベントの日程調整用に作成しており、「飲み会やツーリングを開催し、できるだけ多くの人に参加してもらいたいので日程の調整をしたい。」
「誰が参加できそうなのか、他の参加予定者からも見えるようにしたい」を基本として制作。
本スクリプトは複数の人が同時にファイルに書き込まないようにする制御にflock関数を使用しています。
まず本スクリプトを利用する前に、使用しているプロバイダ(サーバ)がflock関数に対応しているかどうかの確認をしてから利用して下さい。
サーバの管理者に問い合わせていただくか、KENT WEBにて配付されているSymlink Checkerなどのツールを設置したいサーバに設置し、実行させると対応状況が表示されます。
私が使用しているXREA、ロリポップ、インフォシークiswebライト、Hi-Ho(接続会員用webスペース)をSymlink Checkerでチェックしたところ、flock関数に対応しており、実際、設置してみましたが特に問題は見られませんでした。
zipファイルを解凍すると以下のファイルが展開されます。
その中に「.」で始まる名前のファイルがありましたら不要ですので削除しても構いません。
※ Multi Schedule Boardでは、Schedule Boardに添付しているスケジュールデータファイル「schdata.txt」、BBSデータファイル「bbsdata.txt」は新規イベント登録時に自動で作成されます。
public_html (ホームディレクトリ) | +-- schedule / mulsche.cgi [705] | jcode.pl [604] | style.css | title.gif | sample-key.gif +-- data / evtdata.txt [606]
※Hi-Hoや@niftyの@homepageではサーバーの制限上、上記ファイル構成のままサーバーにアップロードしても、style.cssやtitle.gifを読込みません。
style.cssやtitle.gifを読込ませるためには、これらのファイルをhomepageフォルダ内に設置し、mulsche.cgiの設定でstyle.cssやtitle.gifの設置場所を「http://」から始まるURLにて指定して下さい。
Hi-Hoや@niftyの@homepage以外でもstyle.cssやtitle.gifを読込めない場合は、同じような制限があるかもしれませんので、詳細は契約されているサーバーのCGIについての利用方法を読んでみて下さい。
本CGIは「Shift-JIS」というほとんどの掲示板用CGIでも使われている文字コードで記述していますが、Shift-JISで書かれたperlスクリプト(CGI)をUNIXサーバーで実行させた時などに、一部の文字で発生します。
例えば「表示」のShift-JIS漢字コードは「95 5C 8E A6」ですが、この「表(95 5C)」の5Cというコードが 、メタ文字(特殊文字)「\(バックスラッシュ)」と重複しているために、二つの文字「95 5C(表)」「8E A6(示)」が「95 8E 」と「A6」と解釈され、侮ヲ(半角)という文字化けが発生します。
この問題を解決するには以下の回避策を参考にして下さい。
もっと詳しく知りたい方は「cgi 文字化け」などで検索してみてください。
「文字化けする文字一覧」にある文字の後に「\」を付ける。
例:"表\示する"
$str = '表示する'ただしシングルクォート「'」の前に「文字化けする文字一覧」にある文字があると「'」も別の文字として認識されエラーが出てしまうので、この場合に限り「文字化けする文字一覧」にある文字の後に「\(バックスラッシュ)」を付加する必要がある。
$cgi_title = 'Multi Schedule Board';
を
$cgi_title = 'スケジュール調整表';
としてしまうと「表」が文字化けする文字で、後の「'」も別の文字と認識されエラーとなるので
$cgi_title = 'スケジュール調整表\';
と記述する。
文字(コード) | ||||
---|---|---|---|---|
—(815C) | ソ(835C) | Ы(845C) | Ⅸ(875C) | 噂(895C) |
浬(8A5C) | 欺(8B5C) | 圭(8C5C) | 構(8D5C) | 蚕(8E5C) |
十(8F5C) | 申(905C) | 曾(915C) | 箪(925C) | 貼(935C) |
能(945C) | 表(955C) | 暴(965C) | 予(975C) | 禄(985C) |
兔(995C) | 喀(9A5C) | 媾(9B5C) | 彌(9C5C) | 拿(9D5C) |
杤(9E5C) | 歃(9F5C) | 濬(E05C) | 畚(E15C) | 秉(E25C) |
綵(E35C) | 臀(E45C) | 藹(E55C) | 觸(E65C) | 軆(E75C) |
鐔(E85C) | 饅(E95C) | 鷭(EA5C) | 偆(ED5C) | 砡(EE5C) |
mulsche.cgiをエディタ開き、赤字の個所を修正します。
#!/usr/local/bin/perl
$cgi_title = 'Multi Schedule Board';
$title_img = './title.gif';
$img_width = '230px'; $img_height = '25px';
$style = "./style.css";
$filedir = "./data";
$evtdata = "$filedir/evtdata.txt";
$schname = "sch";
$cgi_url = "./mulsche.cgi";
$home = "http://";
$admin_pass = '0123';
$place_title = '場所';
$date_hide = 1;
$aft_fix = 0;
$max_evt = 20;
$info_summary_number = 200;
$list_comment = '目的のイベントにスケジュール登録してください。
下のイベント一覧の右側リンク、またはイベント名をクリック後表示されるイベント画面の「スケジュール登録」「スケジュール修正」から登録・修正可能です。<br /><a href="#">リンク</a>';
$add_cell = 1;
$inner_key = 'aW4oH6fD';
$enter_pass = '0123';
$cookie_save_date = 0;
以下で日付、項目欄追加の入力項目数を設定します。以下の注意を守って設定してください。 New ... v1.1.5
※あまり数を多く設定するとサーバーやブラウザに負荷がかかってしまうので必要最低限で設定してください。
※入力項目自体が多いと、とくにブラウザ側で処理スピードの低下が見られます。(ブラウザによる)
$add_cell_num = 15、$select_num = 40とした場合、Mac版Firefox2で確実に処理スピードの低下が見られたが、それ以外のブラウザではあまり変わらない。(サーバー側の処理もそれほど気にならない)
$date_number = 14;
$add_cell_num = 2;
$select_num = 8;
$add_ipt_num = 2;
$nowrap = 18;
$use_bbs = 1;
$bbs_name = 'イベントBBS';
$bbs_comment = 'イベントBBSへ';
$bbsname = "bbs";
$entry_key = '4mJ8';
$show_key_image = 1;
$comment_entry_key = '右の投稿キーを入力して下さい';
$entry_key_image = './sample-key.gif'; $ek_image_width = '50px'; $ek_image_height = '23px';
$show_max = 10;
項目欄追加機能設定「$add_cell」をCGI使用中に使用→不使用に切り替えた場合、初期の状態はevtdata.txt、bbs-evt*.txtともに追加した項目のデータは保存されたままですが、イベント設定やイベント日決定画面、スケジュール修正画面で「設定ボタン」を押すと追加した項目のデータは削除されます。
逆に不使用→使用に切り替えた場合、同様に各画面の「設定ボタン」を押すまでデータは書き込まれません。
イベントデータやスケジュールデータがある時に「日付・追加項目数」を変更した場合、以下のような動作をします。
Multi Schedule Board v1.1.0以降にて一部のサーバー+Internet Explorer6で使用した場合、以下の問題が報告されています。
print "Location: $cgi_url?mode=show_evt&evtno=$evt_no\#bbs-head\n\n";
以上の設定が終了したら、各ファイルを所定のディレクトリにアップし、以下のとおりにパーミッションを設定して下さい。
サーバーによっては推奨値が違う場合がありますので、その場合はサーバー側の推奨値を優先してください。
特に接続プロバイダーがユーザーに提供しているホームページサービスには制限が多いです。
ファイル | パーミッション |
---|---|
mulsche.cgi | 755 or 705 or 700 |
jcode.pl | 644 or 604 or 600 |
style.css title.gif sample-key.gif |
ー |
dataディレクトリ | 777 or 707 or 705 |
evtdata.txt | 666 or 606 or 600 |
設置と設定が終わったらCGIへのリンクを貼って終了です。
<a href="http:// ・・・ cgi-bin/mulsche/mulsche.cgi">Multi Schedule Board</a>
ファイル名はそのままで、以下の赤字部分を修正または追加して下さい。
累計イベント番号改行
累計イベント番号は今まで取得したイベント番号の最大値。イベント番号evt10なら10。改行コードはLF。
イベント番号(例:evt1)<>イベントタイトル<>決定イベント日値(日付の番号に対応)(※1)<>イベント終了設定値<>イベント日決定後のスケジュール登録・修正の許可、不許可値<>イベント情報<>場所名<>場所URL<>記号1,記号2,記号3,記号4,記号5<>意味1,意味2,意味3,意味4,意味5<>(最大人数チェック)記号1用,記号2用,記号3用,記号4用,記号5用::日付値(※2)::追加項目セレクトメニュー(※3)::追加項目1行入力タイプ(※4)改行
改行コードはLF
※1:決定イベント日値
イベント日を決定していない時は空欄、決定している時は設定した日にち分をカンマ「,」で区切り、それに対応する日付の位置と番号が入る。
例:$date_number = 14 に設定した場合
1,,,,5,,,,,,,,,14
※2:日付値
設定した日付は「<>」で区切られる。
例:$date_number = 7 に設定した場合
1/1(日)<>1/2(月)<>1/3(火)<>1/4(水)<>1/5(木)<>1/6(金)<>1/7(土)
※3:追加項目セレクトメニュー
メニュータイトルと選択項目はカンマ「,」で区切られ、セレクトメニュー毎に「<>」で区切られる。
例:$add_cell_num = 2、$select_num = 4 に設定した場合
タイトル1,選択項目1,選択項目2,選択項目3,選択項目4<>タイトル2,選択項目1,選択項目2,選択項目3,選択項目4
※4:追加項目1行入力タイプ
設定したデータは「<>」で区切られる。
例:$add_ipt_num = 2 に設定した場合
1行入力タイプ1<>1行入力タイプ2
以下イベントを登録する度に二行目以降のデータを繰り返していく
ファイル名をCGIの設定項目で設定したファイル名に変更してください。(例:sch-evt1.txt)
※ファイル名の後につくイベント番号とイベントデータファイル(evtdata.txt)の中で使用しているイベント番号を一致させてください。
v1.5.5およぼv1.6.5以前のSchedule Boardとはevtdata.txtのデータ内容が大きく異なりますので、新しいイベントからの設置をお勧めします。
修正前:名前<>パスワード<>・・・・・::追加項目セレクトメニュー<>追加項目1行入力タイプ
修正後:名前<>パスワード<>・・・・・::追加項目セレクトメニュー::追加項目1行入力タイプ
mulsche.cgiを入れ替えて下さい。
mulsche.cgiを運用中でもデータはそのまま使用できます。
ユーザー設定部を再設定するのが面倒な方は、mulsche.cgiの以下を修正してください。
print "</div>\n"; print << "EOM"; <script type="text/javascript"> //<![CDATA[ var doc = document; var resPass = doc.getElementById("rpas"); function setValue(){ resPass.value = ""; } //]]> </script> EOM &footer;
mulsche.cgiを入れ替えて下さい。
mulsche.cgiを運用中でもデータはそのまま使用できます。
ユーザー設定部を再設定するのが面倒な方は、mulsche.cgiの以下、2個所を修正してください。
print "</div>\n"; print << "EOM"; <script type="text/javascript"> //<![CDATA[ var doc = document; var resPass = doc.getElementById("rpas"); function setValue(){ resPass.value = ""; } //]]> </script> EOM &footer;
my(@FILE_DATA,$evt_no,$bbs_file,$data,$sch,$name,$pass,$comment,$date,$nc);
mulsche.cgiを入れ替えて下さい。
mulsche.cgiを運用中でもデータはそのまま使用できます。
ユーザー設定部を再設定するのが面倒な方は、mulsche.cgiの以下の部分を修正してください。
($sec,$min,$hour,$day,$month,$year,$youbi) = localtime(time + 1*24*60*60);
mulsche.cgiを入れ替えて下さい。
mulsche.cgiを運用中でもデータはそのまま使用できます。
mulsche.cgi、style.cssを入れ替えて下さい。
その他のファイルはそのまま使用可能です。
mulsche.cgi、style.cssを入れ替えて下さい。
mulsche.cgiを運用中にバージョンアップする場合は、データファイルの以下の部分を修正してください。
修正前:イベント番号<>イベントタイトル<>・・・・・::追加項目セレクトメニュー<>追加項目1行入力タイプ
修正後:イベント番号<>イベントタイトル<>・・・・・::追加項目セレクトメニュー::追加項目1行入力タイプ
修正前:名前<>パスワード<>・・・・・::追加項目セレクトメニュー<>追加項目1行入力タイプ
修正後:名前<>パスワード<>・・・・・::追加項目セレクトメニュー::追加項目1行入力タイプ
そのまま使用してOKです。
mulsche.cgiとstyle.cssを入れ替えて下さい。
evtdata.txtは新機能導入に合わせデータ区切り文字等を変えていますので、新しいイベントを設定するタイミングなどでバージョンアップすることをお勧めします。
どうしても現在のイベントからバージョンアップしたい方は、以下を参照にデータ修正してください。
そのまま使用してOKです。
以下の新旧データを比較しながらデータの修正を行なって下さい。
イベント日決定日を1,5,14に設定した場合
累計イベント番号
イベント番号<>イベントタイトル<>1,,,,5,,,,,,,,,14 (※1)<>イベント終了設定値<>イベント日決定後のスケジュール登録・修正の許可、不許可値<>イベント情報<>場所名<>場所URL<>記号1,記号2,記号3,記号4,記号5<>意味1,意味2,意味3,意味4,意味5<>(最大人数チェック)記号1用,記号2用,記号3用,記号4用,記号5用::日付1<>日付2<>日付3<>日付4<>日付5<>日付6<>日付7<>日付8<>日付9<>日付10<>日付11<>日付12<>日付13<>日付14::(追加項目セレクトメニュー1)表題00,選択1,選択2,選択3,選択4,選択5,選択6,選択7,選択8<>(追加項目セレクトメニュー2)表題00,選択1,選択2,選択3,選択4,選択5,選択6,選択7,選択8<>追加項目一行入力タイプ1<>追加項目一行入力タイプ2改行(改行コードはLF)
※1:イベント日を決定していない時は空欄。
累計イベント番号
イベント番号<>イベントタイトル<>決定イベント日値(日付の番号に対応) (※1)<>イベント終了設定値<>イベント日決定後のスケジュール登録・修正の許可、不許可値<>イベント情報<>場所名<>場所URL<>記号1<>意味1<>記号2<>意味2<>記号3<>意味3::日付1<>日付2<>日付3<>日付4<>日付5<>日付6<>日付7<>日付8<>日付9<>日付10<>日付11<>日付12<>日付13<>日付14::(追加項目セレクトメニュー1)表題00,選択1,選択2,選択3,選択4,選択5,選択6,選択7,選択8<>(追加項目セレクトメニュー2)表題00,選択1,選択2,選択3,選択4,選択5,選択6,選択7,選択8<>追加項目一行入力タイプ1<>追加項目一行入力タイプ2改行(改行コードはLF)
※1:決定できるイベント日は一つだけなので、日付の番号一つが入る。イベント日を決定していない時は空欄。
PC | PowerMac G4 1.25GHz Dual FW800 メモリー 1.25GB |
---|---|
サーバー | Apache 1.3.33 (OSX10.3標準) |
Perl | Perl 5.8.1-RC3 (OSX10.3標準) |