最新バージョン:1.6.7
注意:このプログラムは重要な情報を扱うことを想定していませんので、個人情報など重要な情報の入力には使用しないで下さい。
※がv1.6.7用に更新した分
本CGIはイベントでの日程調整用に作成しました。
「飲み会やツーリングを開催し、できるだけ多くの人に参加してもらいたいので日程の調整をしたい。」
「誰が参加できそうなのか、他の参加予定者からも見えるようにしたい」を基本として制作。
本スクリプトは複数の人が同時にファイルに書き込まないようにする制御にflock関数を使用しています。
まず本スクリプトを利用する前に、使用しているプロバイダ(サーバ)がflock関数に対応しているかどうかの確認をしてから利用して下さい。
サーバの管理者に問い合わせていただくか、KENT WEBにて配付されているSymlink Checkerなどのツールを設置したいサーバに設置し、実行させると対応状況が表示されます。
私が使用しているXREA、ロリポップ、インフォシークiswebライト、Hi-Ho(接続会員用webスペース)をSymlink Checkerでチェックしたところ、flock関数に対応しており、実際、設置してみましたが特に問題は見られませんでした。
zipファイルを解凍すると以下のファイルが展開されます。
その中に「.」で始まる名前のファイルがありましたら不要ですので削除しても構いません。
public_html (ホームディレクトリ) | +-- schedule / schedule.cgi [705] | jcode.pl [604] | style.css | title.gif | sample-key.gif(v1.6.0以降のみ) +-- data / evtdata.txt [606] schdata.txt [606] bbsdata.txt [606](v1.6.0以降のみ)※Hi-Hoや@niftyの@homepageではサーバーの制限上、上記ファイル構成のままサーバーにアップロードしても、style.cssやtitle.gifを読込みません。
本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 = '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) |
schedule.cgiをエディタ開き、以下の個所を修正します。
#!/usr/local/bin/perl
$cgi_title = 'Schedule Board';
$title_img = './title.gif';
$img_width = '190px'; $img_height = '25px';
$style = "./style.css";
$evtdata = "./data/evtdata.txt";
$schdata = "./data/schdata.txt";
$cgi_url = "./schedule.cgi";
$home = "";
$admin_pass = '0123';
$place_title = '行き先';
$date_hide = 1;
$aft_fix = 0;
$add_cell = 1;
$inner_key = 'aW4oH6fD';
$enter_pass = '0123';
$cookie_save_date = 0;
以下で日付、項目欄追加の入力項目数を設定します。以下の注意を守って設定してください。
※あまり数を多く設定するとサーバーやブラウザに負荷がかかってしまうので必要最低限で設定してください。
※入力項目自体が多いと、とくにブラウザ側で処理スピードの低下が見られます。(ブラウザによる)
$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へ';
$bbsdata = "./data/bbsdata.txt";
$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、schdata.txtともに追加した項目のデータは保存されたままですが、イベント設定やイベント日決定画面、スケジュール修正画面で「設定ボタン」を押すと追加した項目のデータは削除されます。
逆に不使用→使用に切り替えた場合、同様に各画面の「設定ボタン」を押すまでデータは書き込まれません。
イベントデータやスケジュールデータがある時に「日付・追加項目数」を変更した場合、以下のような動作をします。
以上の設定が終了したら、各ファイルを所定のディレクトリにアップし、以下のとおりにパーミッションを設定して下さい。
サーバーによっては推奨値が違う場合がありますので、その場合はサーバー側の推奨値を優先してください。
特に接続プロバイダーがユーザーに提供しているホームページサービスには制限が多いです。
ファイル | パーミッション |
---|---|
schedule.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 schdata.txt bbsdata.txt |
666 or 606 or 600 |
設置と設定が終わったらCGIへのリンクを貼って終了です。
<a href="http:// ・・・ cgi-bin/schdule/schedule.cgi">Schedule Board</a>
schedule.cgiを入れ替えて下さい。
schedule.cgiを運用中でもデータはそのまま使用できます。
schedule.cgi、style.cssを入れ替えて下さい。
schedule.cgiを運用中にバージョンアップする場合は、データファイルの以下の部分を修正してください。
修正前:イベント番号<>イベントタイトル<>・・・・・::追加項目セレクトメニュー<>追加項目1行入力タイプ
修正後:イベント番号<>イベントタイトル<>・・・・・::追加項目セレクトメニュー::追加項目1行入力タイプ
修正前:名前<>パスワード<>・・・・・::追加項目セレクトメニュー<>追加項目1行入力タイプ
修正後:名前<>パスワード<>・・・・・::追加項目セレクトメニュー::追加項目1行入力タイプ
そのまま使用してOKです。
schedule.cgiのみのアップロードでOKです。
schedule.cgi, style.cssを入れ替えて下さい。
evtdata.txtは新機能導入に合わせデータ区切り文字等を変えていますので、新しいイベントを設定するタイミングなどでバージョンアップすることをお勧めします。
どうしても現在のイベントからバージョンアップしたい方は、以下を参照にデータ修正してください。
そのまま使用してOKです。
以下の新旧データを比較しながらデータの修正を行なって下さい。
イベントタイトル<>決定イベント日値(※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:イベント日を決定していない時は空欄
決定している時は(日付を14日分に設定、イベント日決定日を1,5,14に設定した場合)1,,,,5,,,,,,,,,14
というように14日分をカンマ「,」で区切り、それに対応する日付の位置と番号が入る。
イベントタイトル<>決定イベント日値(日付の番号に対応)<>イベント終了設定値<>イベント日決定後のスケジュール登録・修正の許可、不許可値<>イベント情報<>場所名<>場所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)
PC | PowerMac G4 1.25GHz Dual FW800 メモリー 1.25GB |
---|---|
サーバー | Apache 1.3.33 (OSX10.3標準) |
Perl | Perl 5.8.1-RC3 (OSX10.3標準) |