[ CGI集 | CGI解説 | Perl解説 | HTML解説 | LinuxMemo | Q&A | QuizLink ]      

投票CGI T-Vote Ver.7.01 説明書

about...

機能

 様々な設定が可能な投票システムです。T-Vote Limit と同様に、「3時間に1票」というような投票制限を付けることができるようになりました。Ver.6 での問題点「管理がしにくい」「順位表の配色が変えられない」などの欠点を改善しました。また、投票率がグラフで見やすく表示されるようになりました。

 以下の特徴があります。 (は Ver.7 からの新機能。)

  • 一つのプログラムで複数の投票ページが作成可能。
  • 投票とともにコメントを入れることが可能。
  • テンプレートによって、ページ毎にデザイン、設定を変えることが可能。
  • 各項目の得票率をグラフで表示させることが可能。
  • 管理ページから項目、設定の修正が可能。
  • ホスト毎に時間単位の投票数制限をかけることが可能。
  • 順位表の配色をイベント毎に変えることが可能。
  • 投票ボタンの連打による、同じコメントの連続登録を防止。
  • コメントの永久保存が可能。

[目次へ]

ソース

(ダウンロード後、ファイル名が "-cgi.txt"、"-html.txt"、"-tp.txt" となってるものを ".cgi"、".html"、".tp" に変更してください)

全ファイルをまとめてダウンロード 〜 vote700.lzh

プログラム

  • tvote.cgi ... 本体
  • jcode.pl ... 日本語処理用ライブラリ (Copyright (c) 1992,1993,1994 Kazumasa Utashiro)
  • tp.html ... テンプレートファイル(見本)
  • tvadmin.tp ... 管理フォーム用テンプレート

[目次へ]

インストール方法

インストール

  1. ソースからtvote.cgijcode.pltp.htmltvadmin.tp、の四つのファイルをダウンロードする。
    ※ ダウンロード方法はソースをダウンロードするを参照。

  2. tvote.cgi ファイルの最上部のPerlのパスを正しく設定する。
    ※ 詳しくはPerlのパスを設定するを参照。

  3. tvote.cgiの上部にある「変数設定部」の以下の変数を編集する。

    • $basedir ..... データファイルを格納するディレクトリのパス(※注1)
    • $ext ..... CGIプログラムの拡張子
    • $code ..... 日本語コード(※注2)
    • $method ..... フォーム内容の送信方法(※注3)
    • $password ..... 管理用パスワード
    • $admin_email ..... 管理者メールアドレス(※注4)

    ※注1 tvote.cgi と同じディレクトリに入れる場合は、$basedir = "."; のまま。
    ※注2 sjis以外に変更する場合は、全てのファイルをnkfなどでそのコードに変換してください。
    ※注3 "post" が使えないところでは "get" に変えてください
    ※注4 @ の前に必ず \ をつけて下さい。(例, t-nishida\@mvh.biglobe.ne.jp)

  4. tvote.cgijcode.plを、FTPのアスキーモードで転送する。パーミッションを705604にする。
    ※ FTPについてはプログラムをFTPで送るを参照。
    ※ パーミッションについてはパーミッションを設定するを参照。

    (telnetの場合)
    % chmod 705 tvote.cgi
    % chmod 604 jcode.pl

  5. $basedir で指定したディレクトリ($basedir=".";の場合は tvote.cgi と同じディレクトリ。以下同様。)に tvadmin.tpをFTPのアスキーモードで転送する。パーミッションを604にする。

    (telnetの場合)
    % chmod 604 tvadmin.tp

  6. ↑と同じディレクトリに lockdir というディレクトリを作成する。パーミッションを707にする。

    (telnetの場合)
    % mkdir lockdir
    % chmod 707 lockdir

  7. ブラウザからtvote.cgiにアクセスしてみる。
     → 「eventが指定されていません。」と表示されればOK。
       ※ 上のように表示されない場合、ブラウザでアクセスするを参照して問題を解決してください。

以上でインストール完了です。

[目次へ]

 

新しい投票イベントを作る

  1. イベントの名前を決める。使える文字は以下の通り:
    • 半角英語の大文字(A-Z)
    • 半角英語の小文字(a-z)
    • 半角数字(0-9)
    • アンダーバー(_)
    ここでは例として「vote1」とします。

    ※ 何の投票か想像しやすい名前をつけるとよいです。例えば、野球の投票ならbaseballなど。

  2. テンプレートの見本、tp.htmlをコピーし、vote1.htmlという名前に変える。

  3. vote1.htmlをメモ帳等のテキストエディタで開き、編集する。詳しい編集方法はファイルの中に書いてあります。

  4. vote1.htmlを $basedir で指定したディレクトリにFTPのアスキーモードで転送する。パーミッションを606にする。

    (telnetの場合)
    % chmod 606 vote1.html

  5. 以下の5つの空ファイルを作成し、$basedir で指定したディレクトリにFTPで転送する。パーミッションを606にする。
    ※ 空ファイルの作り方は、空ファイルの作り方を参照。

    • <イベント名>.txt
    • <イベント名>.com
    • <イベント名>.rgt
    • <イベント名>.log
    • allcom_<イベント名>.html

    ここの例の場合は、vote1.txt, vote1.com, vote1.rgt, vote1.log, allcom_vote1.html の5つになります。

  6. ブラウザからtvote.cgi?event=vote1にアクセスしてみる。
     → HTMLが表示されればOK。

[目次へ]

 

投票イベントを追加する

 新しい投票を設置したい場合、イベント名を以前使ったのとは別のものにして(例えば、前にvote1を使っていたらvote2等)、あとは新しい投票イベントを作ると同じようにやって下さい。

[目次へ]

使い方

管理ページへの移行

 管理ページから、項目の追加、修正、削除を行う「項目変更」、制限や順位表の配色を変更する「設定変更」の二つの作業ができます。管理ページへの移行方法は次の通り。

  1. 投票ページの最下部の「パスワード」の欄に、インストール方法の3で設定したパスワードを入れる。
  2. 行いたい作業に応じて「項目変更」「設定変更」のボタンを押す。(各々のボタンの内容は以下を参照。)

[目次へ]

 

管理:「項目変更」

 「管理用フォーム1:項目用」では、以下の作業をすることができます。(カッコ内)は必要な初期値。

  • 新規追加 ... 新しい項目を追加する。(新しい項目の名前、初期票数)
     ※ 設定で「ユーザによる項目追加」を「禁止」にしていても、ここからの追加はできます。

  • 修正 ... 既に存在する項目の票数を変更する。(項目名、修正票数)

  • 削除 ... 項目をリストから削除する。(項目名)

 ※ 「項目名の修正」はできません。一度削除してから再度新規登録してください。

[目次へ]

 

管理:「設定変更」

 「管理用フォーム2:設定用」では、以下の設定をすることができます。(カッコ内)は初期値。
  • 項目追加 (許可) ... ユーザによる項目の追加を許すかどうか。

  • コメント表示 (20) ... 投票画面の下部に表示する、最新コメントの件数。
     ※ 「0」にすると、コメントの入力欄が隠れ、コメントを書くことができなくなります。

  • コメントの保存 (しない) ... コメントの表示数(↑)を超えた分を別ファイルに保存するかどうか。
     ※ 「保存」を選択すると、「最新のコメント」の横に「全コメントを表示」のリンクが出現します。
     ※ $basedir の comall_<イベント名>.html というファイルに保存されます。

  • 別保存のコメントファイルをクリアする ... チェックすると↑の全コメントを保存したファイルがクリアされる。
     ※ 「全コメントを表示」の画面を保存したあとこれを使ってクリアすると、容量の増加を防ぐことができます。

  • ログ表示 (10) ... 投票画面の投票画面の下部に表示する、投票ログの件数。

  • 初期表示 (10) ... 最初に投票ページに入ったときに表示させる項目数。(1位から何位まで)

  • 投票制限 (制限なし) ... 投票の制限。「○時間に×票」という形で指定。
     ※ 時間を「-1」にすると無制限。(一人何票でも入れられる。)
     ※ 時間を「0」にすると、制限解除なし。(一度票数に達すると二度と投票できない。)
     ※ 時間に小数を指定することも可能 [例] 「0.5」→ 30分

  • 順位表の配色 ... 順位表の背景色、フォント色を指定。
       ・通常 → 普通の項目の配色。 (#FFFFFF、#000000)
       ・強調 → 投票された項目が強調表示される時の配色。 (#FFFFCC、#DD0000)
     ※ 「標準の配色に戻す」をチェックすると、入力内容に関係なく配色が初期値に戻ります。
     ※ それぞれの現在の配色がフォームの右に表示されます。

  • グラフ (400) ... 得票率グラフの100%時のサイズをピクセル数で指定。

[目次へ]

Note...

データファイルを手動で編集する

 「管理ページからいちいち項目を追加するのは面倒だ」という場合、データファイルを自分で編集することができます。手順は以下の通り。(インストールは完了しているものとします。)

(※ [Tab] … タブ(キーボードの一番左の列の上の方の "Tab" を押せば入力されます。)

  1. 新しい投票イベントを作る」に従って投票イベントを作成する。

  2. tvote.cgi?event=<イベント名> をブラウザで表示させる。

  3. FTPのアスキーモードで <イベント名>.txt をダウンロードする。

  4. ダウンロードした<イベント名>.txt をテキストエディタ(メモ帳など)で開く。
       → 「1[Tab]20[Tab]0[Tab]」という行が一行書き込まれている。

  5. 以下のように項目を書いていく。(太字の部分を新たに記入)

    [項目名][Tab][票数][Tab]

    ※ 票数の多い項目から順に書いて下さい。

    1[Tab]20[Tab]0[Tab](← この一行は最初から書いてある)
    みかん[Tab]59[Tab]
    いちご[Tab]44[Tab]
    ぶどう[Tab]31[Tab]
    バナナ[Tab]27[Tab]
    メロン[Tab]5[Tab]

  6. 編集した <イベント名>.txt を保存し、元の場所にFTPのアスキーモードでアップロードする。

※ 既に運用が始まって票数が入っているものに関しても、上記の方法で票数をまとめて編集できます。

[目次へ]

 

フォーム、順位表、コメント、ログの表示順を変更する方法

 テンプレート(.html)の下部を修正することによって、フォーム、順位表、投票権情報、コメント、ログの表示順を変更することができます。以下の4つの#CHK:xxxxx#という行を、表示したい順に並びかえて下さい。

 テンプレートに書く文字と、その位置に表示されるものの関係は次の通り。

  • #CHK:ranking# ... 順位表
  • #CHK:form# ... 投票用フォーム
  • #CHK:right# ... 投票権情報(投票制限の内容、投票状況など)
  • #CHK:comments# ... 最近のコメント
  • #CHK:logs# ... 最近の投票ログ(時間、ホストなど)

    ■ 注意 ■
  • #CHK:xxxxx#と書いた行には他の文字を一切書かないで下さい。
  • 必ずしも上の5つを書く必要はありません。書かなかったものは表示されません。ただし、form を書かないと投票できませんし、ranking を抜かすと順位が表示されなくなります。

[目次へ]

 

「投票制限」でできること、できないこと。

 T-Vote Ver.7.xx は「投票者が利用しているホスト(コンピュータ)のIPアドレス」を利用して投票制限をかけています。「IPアドレス」というのは簡単に言うと、インターネットに接続するマシンに与えられている固有のID番号のようなものです(正確にはちょっと違うのですが)。原則として、IPアドレスはマシン一台ごとに一つずつ与えられていて、世界中の他のマシンと重複することはありません。

 しかし実際には、各個人の持つパソコン毎に一つずつIPアドレスがつけられているわけではありません。モデムを利用してプロバイダに繋ぐダイヤルアップ接続の場合、プロバイダが管理しているIPアドレスの中で空いていたものが割り当てられます。従って、同じマシンでも接続する度にIPアドレスが変わるということは十分ありえます。また逆に、同じサーバーを利用している全く別の人が(時間差で)同じIPアドレスを使う可能性もあります。

 結論を言うと、IPアドレスを利用して(ダイヤルアップ接続を利用している)個人を特定することは厳密にはできません。制限の限度いっぱいに投票した後で一度電話を切り、すぐに繋ぎなおして、(運良く?)割り当てられたさっきとは違うIPアドレスで再度投票する、ということも考えられます。

 しかし、IPアドレスは違っても、ホスト名は似通っている場合が多いです。(tkrz15.provider.ne.jp とかの、数字部分だけが変更される、とか。)「最近のログ」には投票者のホスト名が記録されますので、それを見れば連続投票があった場合は大体判断がつきます。あとは票数を直すなり、該当する人に注意を促すなど、各自で対策を取ってください。

 これとは逆に、学校や会社などにある、常に接続されているコンピュータには、固定のIPアドレスが割り当てられている場合が多いです。この場合は、厳密な制限が可能です。さらに、Proxyサーバーを利用している環境では、相手の組織全体に対して制限がかかってしまうことがあります。

 このように、T-Vote Ver.7 の投票制限は非常に弱く、あいまいなものです。この性能を理解しながらお使い下さるようお願いします。

 ※ 厳密な投票を行うには、メールを手作業で集めるのが一番でしょう。面倒ですけど。

[目次へ]

バージョン情報

バージョン履歴

(99/7/14) 更新ミス修正
 99/7/9 にアップグレードした 7.01 ですが、間違えて版の古いものを置いてしまいました。7/9 〜 7/14の期間においてあった 7.01 は、下記の変更点のうち、「IE5でのグラフ表示の不具合」が直っていません。上記の期間にダウンロードされた方は、プログラム(tvote.cgi)をダウンロードしなおしてくださるようお願いします

(99/7/9) Ver.7.01
・管理ページから新規項目の追加が失敗するバグの修正。
IE5.XXでグラフ表示がおかしくなる(%の少ない項目が多い項目より長くなる)不具合を修正。

(99/7/9) 説明変更
 「手動で項目を編集する方法」を Ver.7 用に修正。

(99/6/22) 説明変更
 ファイルの自動生成が上手くいかないので「投票の設置」の5で空ファイルを置く過程を加える。

(99/6/13) Ver.7.00
 公開

[目次へ]

6.xx → 7.xx

 Ver.6.xx からは票数データのみ引き継ぐことが可能です。方法は以下の通り。
  1. インストール方法の1〜3の通りに作業を行う。(4つのファイルのダウンロード、パスの設定、変数の設定。)

  2. tvote.cgi を古いバージョン tvote.cgi の上に上書きでアップロードする。

  3. tvadmin.tp を $basedir の位置にアップロードし、パーミッションを604に設定する。

  4. tvote.cgi にブラウザからアクセスして、「event が指定されていません」と出るか確認する。

  5. 古いバージョンにあるイベント(<イベント名>.txtの数)を全てメモする。

  6. 1でダウンロードしたテンプレートファイル(tp.html)をコピーし、上でメモした全てのイベント名に対応する <イベント名>.html を作成する。それぞれをテキストエディタで開いて、デザインを適当に編集する。

  7. 6で作成した全ての <イベント名>.html を、古いバージョンの <イベント名>.html の上に上書きFTPする。

  8. それぞれのイベント名について、tvote.cgi?event=<イベント名>にアクセスしてみる。ちゃんと表示されればOK。
 ※ 一度目のアクセスでデータファイルが Ver.7 用に書き換えられます。バージョンダウンはできません。
 ※ 設定は初期値になっています。管理用フォームから適時変更してください。

[目次へ]