[道里千虎の館]

◆ SDmultivote 説明書

(c) Sentora Dori 2001/01/24

■ 仕様

注意:
 このプログラムを利用した結果おこるいかなるトラブルに対しても、当方では対処しませんので、各ユーザーの責任でご使用ください。
 また、予告なく変更することがありますので、ご了承ください。

■ index


■ 機能

 CGIを用いた複数投票式のアンケートプログラムです。 
 あらかじめ用意したHTMLファイルに、入力フォームとアンケート結果を挿入することによってアンケートを実現しますので、アンケートページの自由なデザインが可能です。
 管理用プログラムがついているので、不適切な項目を削除することもできます。 [index]

■ ソース

プログラム


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

[index]


■ インストール

  1. ソースから必要なファイルをダウンロードする。
    SDシリーズのパスワード作成、管理プログラムを持っていない場合は、「道里千虎のソフト」トップページからそれもダウンロードする。


  2. SDmultivote.cgiSDmultivman.cgi  の最上部のPerlのパスを正しく設定する。

    (例) #!/usr/local/bin/perl

    ※ PerlのパスはUNIXの種類やサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。


  3. SDmultivote.cgi の上部にある「変数設定」部分を編集する。
    (赤色で示した変数以外は、特に必要がないかぎり変更しなくて大丈夫です。)


    ※注1 プログラムと同じ場所に置く場合は $basedir=".";のまま。
    ※注2 $baseinputtag'INPUT'$baseresulttag'RESULT' の場合HTMLファイル内に<INPUT1>,<INPUT2>・・・と記述した個所に入力フォームが、<RESULT1>,<RESULT2>・・・と記述した個所にアンケート結果が挿入されます。
    詳細は、HTMLファイルの作成を参照
    ※注3 ログをとる場合は$takelogを1に設定してください。0に設定するとログはとりません。とるログは投票されたアンケート番号とその項目の内容、投票時間、投票者のIPアドレスです。
    ※注4 'post' が使えないところでは 'get' に変えてください。
    ※注5 文字化けする場合はコードを変えてください。


  4. SDmultivman.cgi の上部にある「変数設定」部分を編集する。
    (SDmultivote.cgiと同じ項目については省略。)
    (赤色で示した変数以外は、特に必要がないかぎり変更しなくて大丈夫です。)


    ※注1 プログラムと同じ場所に置く場合は $basedir=".";のまま。パスワードファイルは暗号化されてはいますが、セキュリティのために、外部からアクセスできないディレクトリにおくことをおすすめします。
    ※注2 $pass にパスワードを指定した場合は、そのパスワードが入力パスワードとの比較に用いられます。指定しない場合には、$passfiledir にある $passfile からパスワードを検出し比較に用いられます。
     ここにパスワードを指定していると、もしCGIプログラムファイルを閲覧させられたときにパスワードが他人にわかってしまうので、ここでは指定せずパスワードファイルを使用することをおすすめします。ここの指定はあくまでも緊急用と考えてください。


  5. SDmultivote.cgi, SDmultivman.cgi, jcode.pl を FTPのアスキーモードで転送し、CGIの使用できるディレクトリに置く(※注)。パーミッションをそれぞれ755755644にする。
     
    (telnetの場合、以下同様。)
    % chmod 755 SDmultivote.cgi
    % chmod 755 SDmultivman.cgi
    % chmod 644 jcode.pl

    ※注 CGIの使用ディレクトリはサーバによって異なりますので、わからない場合はサーバの管理者に問い合わせてください。(通常は cgi-bin 以下のディレクトリであることが多い。)


  6. ブラウザからSDmultivote.cgiにアクセスする。
       → [no data file]と表示されたらインストール完了。
CGIプログラムの拡張子に「pl」など別のものを指定されているサーバでは、拡張子をそれに合わせて変更して下さい。(SDmultivote.cgi を SDmultivote.pl に変更する。)

[index]

■ アンケートを作成する

  1. まずHTMLファイルを作成します。アンケートの説明や設問などを書く。
    設問が多い場合には複数のHTMLファイルに分けて別々のページに表示させる。

    ファイル名はわかりやすくするために番号を振った名前をつけると良いでしょう。
    例えば、ここでは、test1.html, test2.html を作成します。
    様式は自由ですが、入力フォームとアンケート結果を表示できる場所をあけておいてください。

    ※入力フォームとは、新規項目を入力してもらうためのフォームです。


  2. 複数のHTMLファイルにわけた場合は、次のページへのリンクを次のように書く。
    (詳細はリンクの書き方を参照)

    (例: アンケート名testで次のページはtest2.html、設問3から設問4までを表示)
    <A HREF="multivote.cgi?test&test2.html&3&4">次へ進む</A>


  3. HTMLファイル内に、入力フォームとアンケート結果を挿入する場所を示すためのタグを書く。
    書くタグはインストール時に設定する、SDmultivote.cgi の「変数設定」部分の、変数 $baseinputtag$baseresulttag によって決まる。

    デフォルトでは、$baseinputtag'INPUT'$baseresulttag'RESULT' となっているので、設問1の入力フォームの個所には <INPUT1> と書き、アンケート結果を表示させる個所には <RESULT1> と書きます。同じく設問2には、<INPUT2>,<RESULT2> 、設問3には、<INPUT3>,<RESULT3> と書きます。以下同様です。 

    ※ 投票してもらうだけのアンケートの場合は、入力フォームが必要ないので、<RESULT*>は書かず<INPUT*>のみ書いてください。

    ※ 2.と3.については、例として test1.html, test2.html を参照してください。


  4. 新しいアンケートの名前を決める。例えば test とする。複数のアンケートを使用する場合は重複しないように名前をつけてください。

    *使用できる文字は英数字のみです。他の記号は使えません。


  5. アンケートデータを保存するための test.txt という空ファイルを作る。それを$basedirで指定したディレクトリ($basedir=".";の場合は SDmultivote.cgi と同じディレクトリ)におく。パーミッションを 666 に設定する。

     (telnetの場合)
    % touch test.txt
    % chmod 666 test.txt.

    ※ ここで空ファイルを作らない場合でも、管理プログラムで自動的にファイルを生成できますが、ファイル所有者がnobodyになってしまうので、面倒でも自分で作ることをおすすめします。


  6. ログをとる場合には、ログデータを保存するための test.log という空ファイルを作る。それを$basedirで指定したディレクトリ($basedir=".";の場合は SDcountH**.cgi と同じディレクトリ)におく。パーミッションを 666 に設定する。

    *すでに機能しているアンケートで、ログをとっておらず新たにログをとりたいときには、必ずログファイルを作成してください。

     (telnetの場合)
    % touch test.log
    % chmod 666 test.log.

  7. SDシリーズパスワード作成プログラムで、アンケート管理に必要となるパスワードを作成する。
    プログラム名は enquete とする。
    (SDmultivman.cgi の上部にもプログラム名が書かれています。)

    * すでに作成してある場合には7.をとばしてください。

    ※ SDシリーズパスワード作成プログラムについては、リンク先の説明をご覧ください。


  8. アンケート管理プログラム SDmultivman.cgi にアクセスし、パスワードを入力して「送信」ボタンを押す。


  9. 「新規アンケート作成」欄に、4.で決めたアンケート名と、アンケートのタイトルを書き「作成」ボタンを押す。

    ※ アンケートのタイトルはアンケートデータファイルの最上部に記述されます。


  10. 最初から選択肢を書いておきたい場合は、「新規項目追加」欄に、アンケート番号(設問の番号)と項目の内容を入力し、「追加」ボタンを押す。


  11. HTMLファイルから、アンケートプログラム SDmultivote.cgi にアクセスするためのリンクを書く。

    リンクの書き方

    <A HREF="multivote.cgi?(1)&(2)&(3)&(4)">アンケートテスト</A>

    (例: アンケート名testで最初のページはtest1.html、設問1から設問2までを表示)
    <A HREF="multivote.cgi?test&test1.html&1&2">アンケートテスト</A>

以上で完了です。アンケートをさらに追加するには、1.からの操作を繰り返してください。

[index]

■管理用プログラムの使い方


 初めて使用するときは、まずSDシリーズパスワード作成プログラムで、アンケート管理に必要となるパスワードを作成します。プログラム名は enquete とします。

 アンケート管理プログラム SDmultivman.cgi にアクセスし、パスワードを入力して「送信」ボタンを押します。

 「アンケート結果表示」欄にアンケート名を入力し「表示」ボタンを押します。
アンケートのタイトルと、それぞれの設問の結果が表示されます。
アンケート番号とは、設問の番号のことです。(はじめを1とする。)
項目番号は削除、編集するときに指定する番号のことです。


●新規項目追加

 「新規項目追加」欄にアンケート番号と新しい項目を入力し「追加」ボタンを押します。
各結果の最後尾に新規項目がつけ加わります。


●項目の削除

 「項目の削除」欄にアンケート番号と項目番号を入力し「削除」ボタンを押します。
削除してしまうと元に戻せないので注意してください。


●項目の編集

 「項目の編集」欄にアンケート番号と項目番号を入力します。
さらに、内容と票数のどちらか、または両方を入力し「編集」ボタンを押します。
入力したものが変更されます。

※ 票数を変更すると、その数字にあわせて結果が大きい順に並び替えられますので、続けて編集する場合には、項目番号に注意してください。


●新規アンケート作成

 アンケートを新しく作成するときには、「新規アンケート作成」欄にアンケート名とタイトルを入力し「作成」ボタンを押します。
 アンケートデータとなる空ファイルを作成してあれば、アンケートのタイトルがファイルの最上段に記述されます。
 空ファイルを作成していないときは、自動的にアンケートデータファイルが生成されますが、この場合、UNIXではファイル所有者はnobodyになり、あなたがファイルのパーミッションを変更したりできなくなります。どうしても所有者を自分にしたい場合は、ファイルを別名にコピーし、元ファイルを消した後に、コピーしたファイルの名前を変更して元の名前に戻してください。

[index]

■ ログ

 SDmultivote.cgi の「変数設定」部分の、変数 $takelog を1に設定してあれば、 (アンケート名).log というファイルにログをとります。
 とるログは、アンケート番号、項目の内容、票数、投票時間、投票者のIPアドレス、ドメイン名で、この順番にカンマで区切られています。

(ログファイルの例)
1,大工,1,2000-1-15 10:32:11,192.168.0.0,sentora.dori.co.jp
1,主婦,4,2000-1-15 09:45:34,192.168.0.1,guru.meri.co.jp
2,セロリ,3,2000-1-15 08:10:09,1.2.3.4,yeah.bye.com


※ ログデータはほうっておくとどんどん大きくなっていくので、区切りのいいところを見つけて、削除するなり他のファイルにカット&ペーストするなりしてください。

※ ドメイン名は取得できないこともあります。(環境変数に入っていない場合でも、IPアドレスから取得を試みていますが、それでもプロキシを通していると取得できないものもあります。)

[index]


■ アンケートデータの形式

  (アンケート名).txt というファイルにアンケート結果が格納されます。
 最上段にアンケートタイトルが入り、以下がアンケート結果です。
 それぞれのアンケート結果は「---nextenq---」 という識別子によって区切られています。
 項目名と票数はカンマで区切られているので、データベースソフトなどでCSV形式で読み込むことができます。必要な部分だけカット&ペーストして別ファイルにコピーし、拡張子を.CSVにしてセーブしてから読み込んでください。

(アンケートデータの例)
練習
主婦,3
大学生,2
会社員,1
---nextenq---
ごはん,4
卵,4
キャベツ,3
---nextenq---
雨,2
くもり,2
晴れ,2
---nextenq---
いいえ,5
はい,4

[index]


■ Q&A

Q1: アンケートが表示されない。 Q2: アンケートに書き込めない。
Q3: 管理用プログラムがうまく実行できない。
その他

 CGIを使用できる環境にありますか。(プログラムを置くディレクトリ、プログラムの拡張子など。)

※ 本体プログラムをCGIの使用できる場所に正しく置き、本説明書どおりに使用しても問題がおこる場合は、掲示板に書き込むか道里千虎あてにメールをください。

[index]

■ 更新履歴