or 管理画面へ

No.33

てがろぐ用拡張投票スクリプト


てがろぐ専用の拡張アンケート設置スクリプトです。

主な機能


  • 結果表示はバーグラフ・円グラフ・帯グラフを選択可能。色変更も可。
  • Cookie + IPアドレスによる重複投票防止。IP指定でのブロックも可能。
  • 投票直後のみ取り消しを許可するオプション
  • 結果の公開範囲をてがろぐの権限レベル(0~9)で制限可能。0の場合は全体公開
  • てがろぐへのログインCookieをそのまま利用し管理画面へ
  • 管理画面から投票が掲載されている投稿No.を自動検出し、記事へ直接リンク


配布ファイル


2026/8/9
http://tekitote.s324.xrea.com/download/t...

セットアップ方法


1. ファイルの設置


tega-exvote/フォルダとtegalog-auth.phpを、てがろぐ本体tegalog.cg)と同じディレクトリに設置します。

### 2. 設定ファイルの調整
tega-exvote/exvote.iniのsaltを、推測されにくいランダムな文字列に変更してください(重複投票防止のハッシュ計算に使われる秘密情報です)。

salt=CHANGE_THIS_TO_RANDOM_STRING_ON_SETUP

その他の設定項目はtega-exvote/admin.phpの「設定」タブからブラウザ上で変更できます。

3. skinへのスクリプト読み込み追加



お使いのskinのHTML(例:skin-cover.htm)に、以下の1行を追加してください。場所はQUICKPOSTフォームより後ろであればどこでも構いません。
html
<script src="tega-exvote/exvote.js" defer></script>

以上で導入は完了です。

使い方(利用者向け)



1. てがろぐにログインした状態でQUICKPOSTを開くと、投稿欄の下に「投票を追加」チェックボックスが表示されます(未ログイン時は表示されません)
2. チェックすると、単一選択/複数選択の切り替え、選択肢の入力欄(+項目を追加するボタンで追加可能)、投票期限(任意)が表示されます
3. 選択肢は2つ以上、すべて空欄なしで入力しないと投稿ボタンがロックされます
4. 投稿すると、記事本文の末尾に投票マーカーが自動的に埋め込まれ、記事一覧ページ上ではそのマーカーが投票ウィジェット(iframe)に自動的に置き換わって表示されます
5. 読者は選択肢を選んで投票すると、設定に応じたグラフ(バー/円/帯)で結果が表示されます
6.enable_cancel=1の場合、投票直後は「投票を取り消す」ボタンが一定時間だけ表示されます

管理画面


tega-exvote/admin.phpにアクセスすると、てがろぐへのログイン状態を自動的に確認し、ログイン中であればそのまま管理画面が使えます。

- 設問一覧タブ: 作成済みの投票の一覧、得票数、紐付いた投稿No.へのリンク、手動での締切・削除
- 設定タブ:exvote.iniの主要項目をフォームから変更・保存(色パレットはリアルタイムプレビュー付き)

設定リファレンス(exvote.ini)



charcode=UTF-8
data_dir=./data 設問データの保存先ディレクトリ
cookie_name=exvote_token 投票者識別用Cookie名
cookie_expire_days=365  上記Cookieの有効期限(日)
salt=CHANGE_THIS_TO_RANDOM_STRING_ON_SETUP  重複投票防止ハッシュ用の秘密文字列。導入時に必ず変更すること!

# 結果表示スタイル: bar(バーグラフ)、pie(円グラフ)、stacked(帯グラフ) のいずれか
result_style=bar

# 選択肢ごとの色パレット(カンマ区切り)。選択肢数がこれより多い場合は先頭から循環する
colors=#4a90d9,#e94f37,#f6c945,#4caf50,#9c27b0,#00bcd4,#ff9800,#795548

# 投票をブロックするIPアドレス(完全一致、カンマ区切り、空欄でブロックなし)
blocked_ips=

# 投票の取り消し機能を使うかどうか(1:使う/0:使わない)。0にすると常に取り消しボタンを出さない
enable_cancel=0

# 投票直後に取り消せる時間(秒)。この時間を過ぎると取り消しボタンは表示されなくなる(enable_cancel=1のときのみ有効)
cancel_window_seconds=300

# 日時計算に使うタイムゾーン。締切判定・作成日時等すべてに適用
timezone=Asia/Tokyo

# 投票結果(グラフ)を閲覧できる最低権限レベル(てがろぐのuserlv、1〜9)。
# 0にすると誰でも閲覧可能(デフォルト)。1以上にすると、その値以上のてがろぐログインユーザーのみ結果が見え、
# それ以外は投票後「ご投票ありがとうございました」とだけ表示される(投票自体・取り消しは引き続き可能)
result_min_userlv=4

# てがろぐ本体のCGIファイル名(管理画面から記事へのリンク生成に使用)
cgi_filename=tegalog.cgi



データ形式(参考)



設問1件につきdata/q_<qid>.csvが1ファイル作成されます。

META,<qid>,<singlemulti>,<作成日時>,<締切日時 or 空>,<openclosed>,<投稿No. or 空>
OPT,<選択肢ID>,<ラベル>,<得票数>
OPT,<選択肢ID>,<ラベル>,<得票数>

重複投票防止用の履歴はdata/q_<qid>_hist.csvにハッシュ,投票日時,選んだ選択肢ID(区切り)の形式で追記されます(締切時に自動削除)。

tegalog-auth.phpについて



てがろぐログインを必要とするスクリプトのための共通APIみたいなものです。
主にてきとー実験場製のスクリプトで使用する想定で作られていますが、他者がてがろぐ用スクリプトを開発するときに自由に使用・同梱してもかまいません。

トラブルシューティング


設置サイトでWAFやセキュリティーサービスなどを使用している場合、正しく動作しないことがあります。
お使いのWAF/セキュリティサービスの設定で/tega-exvote/以降のパスを検査対象から除外してください。
畳む


#てがろぐ #スクリプト

配布 No.33 編集 単記事