改造ヒントページ
last update:2007/08/10
Web Qnaire 1
サンプル
解説ページ
Web Qnaire 2
サンプル
解説ページ
<ヒント>
- このCGIでは連続投票を避けるために、最後に投票したホストを記録しておいてそのホストからの投票に対しエラーを出す仕組みになっています。
これを避けて連続投稿をOKにするには、「投票内容を今までのものに追加し結果を表示します」
サブルーチン"tsuika(Web Qnaire 1)"、"tohyo(Web Qnaire 2)"の10行目ほどの1行、
if ($lahost eq $host && $mode eq 'tohyo') {&error("連続投票はできません。<br><br>(接続ホストを変えて投票を試してみてください)");}
を削除してしまうことにより可能になります。先頭に#をつけてコメント行にしてしまうことでも同じく可能です。
また、サーバーによっては連続投票を避ける機能がお使いいただけず、
連続投票でなくてもエラーとなってしまうサーバーがあり、
この場合は上記の方法でこの機能を無効にする必要があります。
- このアンケートスクリプトでは全部の質問に回答しないとエラーが出るようになっています。
回答しないときにエラーを出さないようにするには、選択肢に「回答しない」という項目をつくっておくという方法があります。
- 回答方法を「複数回答可」にした場合は質問文に(複数回答が可能です)といったことを書いておいたほうが
回答者の人たちに分かりやすいかもしれません。
- 西暦年表示を4桁にするには、「時間読み込み」サブルーチン"jikan"の10行目ほどの1行、
$year = substr($year,1,2);
を、
$year += 1900;
としてください。(ver 3.03以降は変更済みです。)
- 投票ページおよび結果表示ページに表示される「ご意見・ご感想をどうぞ(必須ではありません)」の
文面を変更するには、
- (Web Qnaire 1)「初期投票画面」サブルーチン "tohyo"の50行目ほど(下から25行目ほど)の一行、
<p><b><i>ご意見・ご感想をどうぞ(必須ではありません)</i></b><br>
および、「投票内容を今までのものに追加し結果を表示します」サブルーチン"tsuika"の下から20行目ほどの1行、
print "<p><b><i>ご意見・ご感想をどうぞ</i></b><br>";
を変更することで可能です。
- (Web Qnaire 2)「投票内容を今までのものに追加し結果を表示します」サブルーチン "tohyo"の下から30行目ほどの一行、
<p><b><i>ご意見・ご感想をどうぞ(必須ではありません)</i></b><br>
および、
print "<p><b><i>ご意見・ご感想をどうぞ</i></b><br>";
を変更することで可能です。
- フリーコメントの書きこみスペースを複数行(textarea)にするには、
「初期投票画面(Web Qnaire 1)」「投票内容を今までのものに追加し結果を表示します(Web Qnaire 2)」
サブルーチン"tohyo"の下から20行目ほどの1行、
内容<input type=text name=toko size="90">
を、次のように変更することで可能です。
内容<textarea name=toko rows=5 cols=50></textarea>
ただし、"rows"属性は入力フィールドの行数、"cols"属性は入力フィールドの幅(文字数)を表します。
この場合、改行文字を入力されるとプログラムが誤作動を起こしますので、
次の箇所を必ず変更してください。(ver 3.03以降は変更済み)
「入力情報の解析」サブルーチン"decode"内の20行目ほど、
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
の行のあとに、
$value =~ tr/\n/\ /d; #改行拒否
という1行を追加してください。これで改行コードが空白に変わります。
- フリーコメントの投稿元ホストを表示しないようにするには、「投票内容を今までのものに追加し結果を表示します」
サブルーチン "tsuika(Web Qnaire 1)"、"tohyo(Web Qnaire 2)"の下から30行目ほどの1行、
unshift (@tnaiyo,"<b>$in{'tname'}</b>/$in{'toko'} [$jikanl][<i>$host</i>]");
を、例えば次のように変更することで可能です。
unshift (@tnaiyo,"<b>$in{'tname'}</b>/$in{'toko'} [$jikanl]<!--[<i>$host</i>]-->");
この場合は文書のソースファイルを見ると投稿元ホストが分かります。
unshift (@tnaiyo,"<b>$in{'tname'}</b>/$in{'toko'} [$jikanl]");
この場合は投稿元ホストはデータファイルにいっさい記録されないので、管理者からも
見ることができなくなります。
- 画面下部に表示される「動作に不具合がありましたらお手数ですがこちらまでお知らせください。」
の文面を変更するには、「フッタ表示」サブルーチン"foot"の中の1行、
print "<p align='center'><small>動作に不具合がありましたらお手数ですが";
print "<a href=mailto:$mail>こちら</a>までお知らせください。</small>";
を変更することで可能です。
<データファイルについて>
- 事故によりデータファイルが損なわれたときは、以下を参考にして手動で復旧することも可能です。
- 管理ページからではできない、質問文・選択肢へのタグの使用やスペースの挿入
もデータファイルを直接編集すれば可能です
(ver 3.50以降では管理ページからスペースや一部タグが入力可能)。
- データファイルの一例を示します。
5
1.自分のホームページを持っていますか?,3,no,radio,持ってます=58,持ちたいです=18,持つ気はないです=10,
2.このCGIスクリプトを気に入ってくれましたか?,4,no,radio,使います!=37,自分でもっと改造する!=31,使いたいけど難しそう=20,いまいちだね=8,
3.一日ネットにどのくらいつなぎますか?,7,no,select,常時接続=37,8時間以上=16,5時間以上=10,3時間以上=18,2時間以上=2,1時間以上=6,それ未満=6,
4.好きな言葉は?[複数選択可],7,yes,checkbox=sort,大好き!=26,一攫千金=30,そんなわけねーだろ=15,なんでやねん=17,やっとできた。=6,一期一会=5,一石二鳥=3,
5.行ってみたい場所は?,9,yes,radio,月=24,北海道=14,ヨーロッパ=16,夜景のきれいな丘=6,ルネッサンス時代=6,東北=5,南西=4,マントル=1,過去=8,
<b>narishin</b>/CGI使ってください [01/05/13 19:19:53][<i>proxy.narishin.com</i>]
01/05/13 19:19:53
proxy.narishin.com
- 1行目は質問数を表します。
- 2行目からは質問の内容です。
- 質問文,選択肢数,項目追加(yesかno),解答方法(択一"radio"か複数回答"checkbox"かプルダウン"select"、また回答を票数によりソートして表示する場合には"=sort"が後ろに付く),選択肢要素=投票数
- 最後-2行目はフリーコメントの内容です。
- <b>投稿者名</b>/投稿内容 [日時][<i>投稿元ホスト</i>] を1つの投稿とし、<br>でつないであります。
- 最後-1行目は最終投稿日時です。
- 最後の行は最終投稿元ホストです。
ご意見はこちらへ:
webmaster@narishin.com
ご返答を約束するものではありません。ご了承ください。
改造についてのお問い合わせにはお答えいたしておりません。
©2001-2007, narishin