Member Listing マニュアル


概要 / 登録の内容
各ファイルの役割 / ファイルの内容
ページ構成 / カウンタの表示 / 安全機能
初期設定 / 規定値設定 / 各種設定の変更方法 / 更新履歴 / 著作権の表示

●概要

 会員登録システムとして、新規登録、登録内容の変更、登録抹消、会員一覧の機能を備えています。
 また、各人の記録はcookieに記録され、トップページにカウンタとして表示することができます。

 ユーザーにはcookieを利用して専用のカウンタを所有してもらい、それを利用してレベル(称号や役職)を与えて、カウンタのアップ=レベルのアップの楽しみを提供します。
 そのcookieデータを集計し、管理者は常連のユーザーの実状を把握することができるようになります。


●登録の内容

 登録項目は、名前、メールアドレス、パスワードです。
 また、会員番号、カウント、レベルが自動的に割り振られます。

 パスワードは登録内容の変更や削除に必要になります。
 メールアドレスはパスワードを忘れたときにパスワードをメールで受け取るために必要です。(sendmailが使える場合)
 レベルはカウントが増えたときにその表示を変更する機能で、役職やランクが上がったことを分かりやすく伝えるために使用します。


●各ファイルの役割

 ファイル名の後ろに「*」の付いたものはファイル名を変更して使用することをおすすめします。パスワードやメールアドレスを含んでいますので、取り扱いに注意してください。

 【パーミッションの設定】
 member_count、member.scv、mail_listは「777」に設定し、それらを保存するディレクトリも「777」に設定します。
 その他のファイルは「755」に設定します。

 この他、以下のファイルが自動的に作られます。
 member_count.lock(ロックファイル)・・・ロック中のみ
 member_list.bak(バックアップファイル)
 member_list.error(エラーログファイル)


●ファイルの内容


●ページ構成

 画面に表示される各ページは必要に合わせてメッセージを変更してください。
 URLから直接呼び出せる画面もありますので、表記の「URL:」を参照してください。

【登録受付画面】
URL: member.cgi

【管理人室】
 会員の登録内容(member_list)を全て見ることができます。
 会員の完全な抹消とステータスの変更が可能です。
 管理人($kanricolor)、更新禁止($usercolor)、仮抹消($darkcolor)の行は色を変えて表示します。

会員番号登録名カウントレベルパスワードメールアドレスホスト最終アクセスステータス
1秀麗1000会長----shurey@dammy.ne.jpdammy.ne.jp2000/04/1511:43:32
2はるぼう100A会員0000harubow@dammy.ne.jpdammy.ne.jp2000/04/1311:37:59

 入室後は他の会員の操作はロックされます。必ず退室を行わなければ、ロックは解除されませんので注意してください。

【エラーログ】
 会員がエラーメッセージ受け取ったとき、そのときの状況をログファイル($errorlog)に保存しています。
 その内容を画面に表示します。

numbernamecountlevelpassmailhostdate & timestatusmodeerror
1秀麗1000会長5555shurey@dammy.ne.jpmk-000.dammy.ne.jp2000/04/1511:02:025CHANGE8

 「number,name,count,level,password,mail,host,date,status,time,mode,error」
 各会員情報は入力時に(member_listからではなくcookieから)受け取ったものを記録しています。

【登録完了画面】
 登録が完了したことを確認するための画面で、新規入会者へのメッセージを表示します。
 必ずメッセージ部分を編集してください。

【変更確認画面】
 登録内容の変更と登録の抹消申請を行います。
 登録内容の内、名前、メールアドレス、パスワードの変更が可能です。レベル名称の変更が許可されている場合、レベル名称の変更が可能になります。
 登録の抹消は確認のチェックをオンにして、「抹消」ボタンを押すと仮抹消(一覧表に表示されません。cookieも消去します)の状態にステータスを変更します。

【会員名簿表示画面】
URL: member.cgi?mode=LIST

 下のような表が表示されます。

会員番号登録名カウントレベルホスト最終アクセス
1秀麗1000会長dammy.ne.jp2000/03/3121:15:55
2はるぼう100A会員dammy.ne.jp2000/03/3116:22:52

【登録内容確認】
 内容を確認し、cookieの修復を行うか中止をするか決めます。
 下のような表が表示されます。

会員番号2
登録名はるぼう
カウント100
レベルA会員

 「修復」ボタンを押すと表示された内容がcookieに保存されます。


●カウンタの表示


●安全機能


●初期設定

 member.cgi を開くと「初期設定」の項目があります。
 動作の条件などに応じて変更が必要な部分ですので必ず確認してください。

### 初期設定 ###
# 会の名称
$party = "○○○○の会";

 このプログラムを使用する会の名称です。
 ページのタイトルに表示されます。
# 名簿の名称
$title = "会員名簿";

 一覧表を表示するときなど、名簿の名前を表示します。
# cookieの名前(利用中に変更しないでください)
$cookie_name = "MEMCGI";

 会員が登録した名称を保管するcookieの名称。途中で変更すると全会員のcookieが使用不能になり、会員でなくなってしまいます。
# cookieのpath(使用範囲)
$cookie_pass = "/";

 cookieのパス設定です。「/」はそのサーバー全体から呼び出すことができることを示します。
 同じサーバー内で同じ名前のcookieがあると上書きされてしまうため、使用範囲を個人のホームページの中やディレクトリの中だけに限定するために使用します。
 「/directory」ならURLで表す「www.xxx.co.jp/directory」の中という意味です。
# cookieの期限(日)
$c_exp = 30;

 cookieには一定の期間が過ぎると自動的に削除される機能が備わっています。
 期間経過後、受付画面から「登録内容修復」を行うことで、会員名簿のmember_listから読み込んでcookieを登録し直すことができます。
# 管理人の会員番号とパスワード
$k_number = 1;
$k_pass = "000000";

 管理人番号は途中で管理人を変えたいときに変更してもかまいません。
 管理人はmember_listに登録されたパスワードを使用しません。管理人のパスワードは必ずこちらで設定したもので認証を行います。
#記録用ファイル名(必ず変更してから使ってください)
$member_list = "member_list";

 会員名簿を記録するファイル名。
 ディレクトリ名をファイル名の前に付けることができます。
 バックアップファイル(.bak)やエラーログ(.error)には、このファイル名の後ろに拡張子を付加しています。
# 連番ファイル名
$member_count = "member_count";

 会員数を記録するファイル名。
# トップページ
$top_file = "top.html";

 カウンタを埋め込んで表示するために、member.cgiに読み込んで使用するファイル。
# 会則・注意事項のページ
$kisoku_file = "kisoku.html";

 新規ウインドウを開いて会の規則や注意事項の書いたページを表示するためのファイル。
 会員登録時に参照してもらうために別ファイルとした。
# <BODY TEXT=$textcolor LINK=$linkcolor ALINK=$alinkcolor VLINK=$vlinkcolor BGCOLOR=$backcolor>
$textcolor = "#000000";
$linkcolor = "#990000";
$alinkcolor = "#FF0000";
$vlinkcolor = "#550000";
$backcolor = "#FF9999";

 ページを構成する色を設定します。
 各モードにおいて統一した色を表示するために使用します。
# <TABLE BGCOLOR=$tablecolor>
$tablecolor = "#EEEEEE";
$headercolor = "#EEEEAA";
$kanricolor = "#AAAAEE";
$usercolor = "#EEAAAA";
$darkcolor = "#777777";

 テーブルを構成する色を設定します。
# 警告文字色
$alertcolor = "#FF0000";

 警告文やレベルアップ時に目立たせる部分に使用する文字色を設定します。
# レベル名称の自由選択の許可(Yes=1/No=0)
$level_free = 0;
# レベルの設定は「レベル確認」のサブルーチンを変更

 レベルが一定以上に達した場合、会員がレベル名称を自由に変更することを許可することができます。
 各レベル名称の設定はサブルーチン内で、カウントとレベル名称の対応を行っていますので、変更するには簡単なプログラムの修正が必要です。
# sendmailのパス(メール送信を利用する場合)
$sendmail = "/usr/lib/sendmail";
# sendmailのパス(メール送信を利用しない場合)
#$sendmail = "";

 パスワードを忘れた場合にメールでその通知を受けるための機能を提供します。
 sendmailが使えない場合は、パスを空欄にしてください。受付画面から「パスワード要求」の項目がなくなります。
# メール発信記録ファイル
$mail_list = "mail_list";

 メールを要求した会員、メールアドレス、時間を記録するファイル。
 同じ会員からのメール要求は規定値によって制限しています。
# ロックの解放時間(秒)
$locktime = 60;

 通常のロックはmember.cgiを呼び出して、画面の表示が終わった時点で解除されています。
 しかし、何らかの不具合でロック解除が行えなかった場合、設定時間経過後は自動的にアンロックするように設定しています。
 この設定が短いと、動作の遅いサーバーの場合、一連の作業中にロックが自動解除されてしまいますので、呼び出してから画面が表示されるまでの十分な時間(10倍以上の余裕)を設定してください。
# パスワード失敗処理回数(1-5)
$passtime = 3;

 パスワードを設定回数失敗して入力するとデータの入力を受け付けなくします。(更新拒否)
 正しい会員番号とパスワードがcookieに入っている場合にカウンタを動かせば、自動的に解除されます。
# ユーザー制限時間(時間)
$mailtime = 24;

 メール要求を行った会員が再要求可能になるまでの時間やパスワード失敗時の更新拒否状態を自動解除するまので時間を設定します。
# 自動抹消の間隔(日:0=しない)
$deltime = 365;

 会員登録をしても最後のアクセスから指定の日数が経過した場合にステータスを「6」に自動設定し、仮抹消とします。
# 自動バックアップの間隔(日:0=しない)
$backtime = 7;

 会員名簿(member_list)を定期的にバックアップします。
 経過日数後、member.cgiが起動した時にバックアップが作成されます。
 「0」の場合、バックアップはしません。
 その他、管理人が受付画面からバックアップを指示することもできます。

●規定値設定

### 規定値設定 ###
$LT = time;
$SN = $ENV{'SCRIPT_NAME'};

 絶対に変更しないでください。
# カウンタ置換文字列
$c_str = "<!--counter-->";

 top.htmlに記述し、カウンタ表示のために置換対象となる文字列です。
# cookie の初期値=(会員番号、名前、カウント、レベル、パスワード)
$c_number = 0;
$c_name = "no_name";
$c_count = 0;
$c_level = "ゲスト";
$c_pass = "----";
$c_mail = "mail@mail";

 $c_level以外は変更しないでください。
 $c_levelは非会員のレベル名称を設定しています。(標準では表示はされません)
# トップページへのリンク
$toplink = "<FONT COLOR=#FF0000><FORM ACTION='$SN'><INPUT TYPE=hidden NAME='mode' VALUE='TOP'><INPUT TYPE=submit VALUE='トップページへ'></FORM></FONT>";
# $toplink = "<FONT COLOR=#FF0000><FORM ACTION='$top_file'><INPUT TYPE=submit VALUE='トップページへ'></FORM></FONT>";
#$toplink = "<A HREF='$SN' TARGET='_top'>トップページへ</A>";

 トップページへ戻るリンクを設定します。
 3つのパターンを用意してありますので、どれか1つを選択し、必要に応じて変更して使用します。
 1つ目のタイプは、トップページへ戻るボタンを表示し、TOPモード(カウンタ表示・カウントなし)でトップページを表示します。
 2つ目のタイプは、トップページのHTMLファイルを呼び出しています。(フォーム内で使用)
 3つ目のタイプは、ボタンを表示しないタイプでTARGETの設定が必要な場合に使います。フォームの中からフォームのトップへ切り替えています。
# エラーログ
$errorlog = "$member_list.error";

 エラーメッセージを残すログファイル名。
 $member_listで指定したファイル名の後ろに「.error」を付加するように設定されています。

●各種設定の変更方法

【レベル設定】
 member.cgi中の下の部分でレベルの設定を行っています。

### レベル確認 ###
sub set_level {
# 管理人の確認  if ($k_number == $c_number) {   $level_check = 2;  } else {   $level_check = 0;
# 各レベル名の設定
  local($temp) = "E会員";
  if ($c_count >= 10) {$temp = "D会員";}
  if ($c_count >= 25) {$temp = "C会員";}
  if ($c_count >= 50) {$temp = "B会員";}
  if ($c_count >= 100) {$temp = "A会員";}
  if ($c_count >= 200) {$temp = "C役員";}
  if ($c_count >= 300) {$temp = "B役員";}
  if ($c_count >= 400) {$temp = "A役員";}
  if ($c_count >= 500) {$temp = "S役員";}
# レベル名自由変更の許可
  if ($c_count >= 1000) {
   if ($level_free == 1) {$level_check = 2;}
  }
# 役職変更の有無
  if ($level_check < 2) {
   if ($c_level ne $temp) {$level_check = 1; $c_level = "$temp";}
  }
 }
}

 最も低いレベルを$tempに設定し、現在のカウントを小さい数字から比較して最終的に該当した条件文から$tempを受け取ります。
 現時点のレベル名称と条件から受け取った$tempを比較し、変更が合った場合は$level_checkを使って変更があったことを次の処理(カウンタの表示など)に伝えています。

 変更が可能な部分はレベル名称、各条件のカウント数、条件の行数、レベル名自由変更の許可を行うカウント数です。

【メール送信内容】
 member.cgi中の下の部分でレベルの設定を行っています。

sub send_ok {
# sendmail起動
 if (open(MAIL,"| $sendmail $c_mail")) {
  print MAIL "To: $c_mail\n";

  $c_sub = "[$party] パスワードの通知";
  $com = "「$party」よりパスワードのお知らせです。\n"
  ."(このメールは会員登録のあったメールアドレスへ自動的に送信しています。)\n"
  ."\n"
  ."$l_name 殿のパスワードは「$l_pass」です。\n"
  ."\n"
  ."$party 管理人 $k_name($k_mail)";

(省略)

# メール本文
  print MAIL "--------------------------------------------------------\n";
  print MAIL "TIME : ".localtime($LT)."\n";
  print MAIL "HOST : $get_host\n";
  print MAIL "NAME : $c_name\n";
  print MAIL "--------------------------------------------------------\n";
  print MAIL "$com\n";
  close(MAIL);
 }
(以下省略)

 $c_subはメールタイトル。$comはメール本文に追加する日本語部分です。
 $c_sub、$comはjcode.plを使ってjisコードに変換してから送信本文に組み込んでいます。そのためメール本文送出部分(上記の後半)ではそれ以外は英文字しか使えません。

 送信されるメールは次のようになります。

--------------------------------------------------------
TIME : Fri Mar 31 18:25:12 2000
HOST : dammy.ne.jp
NAME : はるぼう
--------------------------------------------------------
「○○○○の会」よりパスワードのお知らせです。
(このメールは会員登録のあったメールアドレスへ自動的に送信しています。)

はるぼう 殿のパスワードは「0000」です。

わがままファーム 管理人 秀麗(shurey@dammy.ne.jp)

 TIME、HOST、NAMEは処理を操作した時の情報です。他の会員が操作した場合、NAMEにその人の名前が入ります。HOSTも同様。
 管理人の名前とメールアドレスはmember_listから自動的に取得します。


●更新履歴

20000517(v1.2.3)・・・軽度のバグ修正。仮抹消を強化
20000416(v1.2.2)・・・エラーメッセージをログファイルに残す機能を追加。cookieに関するバグ修正
20000411(v1.2.1)・・・バグ修正
20000407(v1.2)・・・サブルーチンのコンパクト化。バグ修正
20000404(v1.1)・・・会員情報保存を任意に可能。サブルーチンのコンパクト化。表示レイアウトの変更。
20000402(v1.0)・・・第1版完成


●著作権の表示

 このプログラムは秀麗が著作権を所有しています。
 http://www.dammy.ne.jp/~hidkei/ にて最新版を公開します。

 2次配布は認めませんが、各自で自由に改変して利用することはできます。
 CGIの性質上、必要な改変もありますが、それによって正常な動作ができなくなる恐れもあります。使用者は各人の責任において使用しなければなりません。
 このプログラムにおいていかなる損害が発生しようとも著作権者は関知いたしませんことをご承知ください。