会員登録で5000円分が当たります

表題の通り、ホームページ上で投票できるシステム(PHPかCGI)を作りたいと思っています。
PHPとCGIの知識は、すでにあるものを少しだけいじれる程度なのですが
配布されているフリーのものを探して、ちょうどいいものがなく、
この機会に是非チャレンジしたいので、ご助言をお願いします。

内容的には、写真がずらっと並んだギャラリーページから、
ユーザーが一番気に入った写真を1つだけ選んで投票できるというものです。


下記のような機能をつけたいです。

■第一回人気投票、第二回人気投票…と、開催ごとに1回しか投票できない。
 (第一回で投票した人でも、第二回が開催されたときは投票できる)

■1回投票したら、他の写真には投票できない

■ユーザーはどの写真に何票入っているかみれない

■管理者はどの写真に何票入っているか見れる

■データーベースが必要なら用意できます

なにから手をつけていいのかわからない状態なのですが、
ご助言お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

厳密には不可能です。



案1:メールアドレスなどでユーザ登録してもらい、1ユーザ1回の投票にする。
⇒問題点1:メールアドレスを複数持っている人が複数回登録できる
 問題点2:登録が面倒で投票してくれる人が減る

案2:cookieを使う。
⇒問題点1:そもそもcookieを有効にしていない人をどうするのか?・・・投票不可にするしか無い
 問題点2:cookieをクリアすると何度でも投票できる

案3:TwitterとかmixiとかのIDで認証して、1ユーザ1回の投票にする。メールアドレスと違いIDを複数持っている人は少ないので
⇒問題点:そういうサービスを利用してない人は投票できない

まあ、あまり厳密さを求めないで(意図的に何度も投票する人が居てもしょうが無いとあきらめ)、cookieでしょうか。

Cookieを扱うPHPでの具体的な記述は「PHP Cookie」で検索すればいくらでも情報があります。Perlなら「Perl Cookie」で。

処理の流れはこんな感じで:
0. Cookieの名前は投票回ごとに違う名前を決めます。例えば第一回だとponpoko001とか。
1. 投票を受け付けるときに、ponpoko001というcookieがあれば投票済みとみなします。
2. そのcookieが無い場合、Cookieを無効にしてないかチェックのため、checkというcookieを発行してみます。
3. 次のページに遷移して、checkというcookieが帰ってこなければブラウザ設定でCookieを無効にしているということなので「Cookieを有効にしてください」というメッセージを出してトップページなどに帰ります。
4. 投票を受け付けます。
5. 同時に、長い有効期限で、ponpoko001という名前のCookieを発行します。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
なるほど、ご提案のとおり、Cookieがいちばんよさそうです。

おかげさまで、だいたいの設計が理解できたので
少しずつ勉強して作りたいと思います。

ありがとうございました!

お礼日時:2011/10/31 14:01

・相手がPC時はPC上に記録に残す


  クッキーの形成などさせる
 又は同一IPで投票禁止処理をする


・相手が携帯電話時は個別識別番号修得してサーバに残して照合


・携帯で個別識別番号が無い電話会社がある
  これはクッキーの形成で処理する
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
おっしゃることは理解できるのですが、
私の知識不足でその内容を組み上げる方法が全くわかりません…
時間をかけて勉強したいと思います。

お礼日時:2011/10/28 18:02

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qホームページに一人一回しか投票できない投票箱を設置したいのですが、どなたか教えてください。

ホームページビルダー11を使ってホームページを作っています。
みんなで写真を持ち寄って投票する投票箱を設置したいのですが、全く分かりません。2重投票を防ぐため、一人一回投票できる投票箱を探しています。
どなたか、ご存知の方いらっしゃいましたら、どうかご教授ください。よろしくお願いいたします。

Aベストアンサー

どういった環境で実施されるものなのでしょうか。

まず、2重投票を禁止した投票箱のようなものは、サーバーサイドでプログラムを実行させる必要があると思います。

プロバイダが提供するウェブサイトでもCGIの実行が許可されている場合があり、PHPやperlなどが利用可能な場合があります。

学校や会社などで利用するのであれば、そのサーバーを利用させてもらうという手もあります。

まず、自分のホームページがどこに設置されているのかで、手っ取り早い実現方法が何なのかは、変わってくると思いますので、ホームページが設置してあるプロバイダのヘルプデスクでFAQを参照したり、学校などの場合、管理者に聞くのがよろしいかと思います。

不特定多数の人が利用できるアンケートならば、インターネット上に無料で利用できるアンケートシステムのようなものもありますが、「写真を持ち寄って投票」のような満足のいくものは、ないと思います。
広告がはいったり、文字だけだったり、デザインが固定だったり、不特定多数の人が対象になったりと、いろいろ問題があるでしょう。

Qサイト内投票ボタン(いいね等)の設置方法について

facebook等に連動しないサイト内投票ボタン(いいね等)を設置したいです。
既に存在するwebページ内に、上記ボタンを設置することによりweb投票が出来るサイトを作成しています。参考になるプログラムやソース等ありますか?

対象htmlファイルが置かれているレンタルサーバでは、javascript、PHP5、perlが動作します。またDB(MySQL、PostgreSQL)が利用可能です。

Aベストアンサー

参考までに:http://w3q.jp/t/3969

参考URL:http://w3q.jp/t/3969

QHTMLでのアンケート方法を教えて下さい。

HTMLでのアンケート方法について質問します。

タブレット(アンドロイド)で、簡単なアンケートを作成したいと思います。
アンケートのフォーマットをHTMLで作成し、その回答をメールで送信せずに、
タブレット内にCSVのようなデータで回答を残していきたいのです。イメージ
的には、googleのformのようなものです。

このようなものは、エクセルで作ろうと思えば作ることができるのですが、
アンケートフォームの作成が容易であること。アンケートフォームの見栄え
や文字の拡大が簡単にできることから、エクセルではなくHTMLで作りたい
と考えています。

ただ、HTMLでアンケートの作り方はわかったのですが、回答をアンケートで
使ったタブレットの中に蓄積させていきたいのです。アンケートの調査場所が
ネット接続することが難しいためgoogleのformだと使用することができません。
そこで、オフラインでgoogleのformのように、HTMLでアンケートに記入して
もらい、その回答をCSVでもテキストでも良いので、蓄積させていきたいのです。

上記のようなものを作りたいのですが、どのようにすれば良いのか教えていた
だだければ幸いです。
私はプログラミング言語に詳しくないのですが、何かしらプログラムを作成
する必要があるようでしたら、その言語もあわせて教えて下さい。

宜しくお願いします。

HTMLでのアンケート方法について質問します。

タブレット(アンドロイド)で、簡単なアンケートを作成したいと思います。
アンケートのフォーマットをHTMLで作成し、その回答をメールで送信せずに、
タブレット内にCSVのようなデータで回答を残していきたいのです。イメージ
的には、googleのformのようなものです。

このようなものは、エクセルで作ろうと思えば作ることができるのですが、
アンケートフォームの作成が容易であること。アンケートフォームの見栄え
や文字の拡大が簡単にできることから...続きを読む

Aベストアンサー

HTML 5から導入されたFile APIを使用すると出来ると思います。
以下が参考になるでしょう。

http://www.atmarkit.co.jp/ait/articles/1112/16/news135.html

参考まで。

Qアンケートなどの1日1回の投票を何度も!

よくHP上のアンケートで1日1回までのアンケートってありますよね? あれを1日に何度もすることって可能なんですか?  アンケートをしていて以上に投票が多いことがありまして。もしできるのならば、方法を教えてください!どうやってるんでしょー?

Aベストアンサー

基本的に、現在、相手の完全にPCを特定する
手段はないと聞きます。

なので、けっこう簡単にできますよ。
いわゆる、同じ人はダメ。っていうのは、IPか、
クッキーを利用しています。
IPは、ダイヤルアップなら、一回接続し直せば、
IPが変わるので、投票可能です。
また、常時接続でも、プロキシを通せば、IPアドレス
が、違う物に偽装する事ができるので、投票可能です。
クッキー(掲示板等で前に書いた名前を表示するヤツ)も
ブラウザーのキャッシュやクッキーを削除すれば、なか
った事にできますので、投票も可能です。

基本的には、熱狂的なファンの前では、アンケートは
あまり意味のないものとなっている事があります。

荒らしもそうですが、「IPで管理しています。」
と書けば、対処できる事もありますよ。

QHTMLで投票ボタンを作りたい

HTMLで投票ボタンを作りたいです。
投票ボタンをクリックすればボタン横の数字が1追加され、
出来れば同じIPによる重複投票を抑止したいです。
イメージは、

リンゴ [投票](2)
みかん [投票](11)
ナシ  [投票](6)

という感じです。
Facebookの「いいね!」ではなく、HTMLで作成できるボタンを使います。
どういったコードを書けば良いでしょうか。
それと投票結果はどのように保存すれば良いでしょうか。
以上、宜しくお願い致します。

Aベストアンサー

表示している画面上の値だけカウントアップされるのではなく、投票結果はサーバー上に保存されるのですよね?

でしたらHTMLだけでは無理です。画面上で入力された値をサーバへ飛ばし、サーバ上に配したプログラムがそれを受けてデータを処理してファイルなりデータベースなりに格納。格納出来たら最新の投票状況を示したHTMLを返す、、、という仕掛けを作らねば出来ません。つまり「サーバ上に配したプログラム」の作成が必要です。

なお、表示している画面上の値だけカウントアップされればよいのでしたらHTML+Javascripで可能です。

参考まで。

Qwebアンケートを作成するためのプログラミング言語

プログラミング言語の勉強として、
webアンケートを作成してみたいと思うのですが、
「アンケート作成に向いている言語」、あるいは
「アンケート作成の主流になっている言語」というのはあるのでしょうか。

試しにネット検索してみると、
phpのサンプルが多い気がするのですが、
もしphpが主流ならば、何故phpが選ばれているのか、
理由なども教えて頂けるとありがたいです。

ざっくりとした質問ですが、よろしくお願いします。

※なお、私自身はrubyを勉強中の初学者で、
開発する際の環境は下記のようなものを使っています。
・OS: Windows(7)
・webサーバー: Apache
・データベース: MySQL

※GoogleフォームやQuestantのようなwebサービスも
あるかと思いますが、今回は実務ではなく勉強目的なので、
そういったツールは除外でお願いします。

Aベストアンサー

>何故phpが選ばれているのか、
バカでも書けるほど楽な言語だから
ただし書けるのと実用レベルで使い物になるかは別。
バカが書くともれなくセキュリティーホール大量なソースができあがります。

後、良くも悪くも大量のフレームワークが存在するから
自分にあったフレームワークを選べるから
>私自身はrubyを勉強中の初学者で、
rubyやっているならわかると思うけどrubyはRuby on Railsが事実上標準化しているけど
PHPにはそれがない。

>「アンケート作成の主流になっている言語」というのはあるのでしょうか。
じゃぁWebシステムとして常務レベルでよく利用されているからJavaをすすめておく。
特に勉強目的ならJavaなら教科書のようなオブジェクト指向の実装がされているのでなおさらJavaをすすめておく

QcookieとIPアドレス記録を利用する投票システム

現在、自ホームページで投票を行うPHPスクリプトを利用しています。
基本的に一人一票なのですが
重複投票のチェックがcokkieを渡して判断するだけのシステムのため。
cookkieをオフにすると簡単に複数回投票できてしまいます。

完全に一人一票を判断するのは無理かと思いますが、
できれば現在のプログラムを修正して
・cookieを有効にしていない場合は投票をはじく
・IPアドレスを記録して重複投票をはじく
以上のような機能にできればと考えています。

色々調べてプログラムをいじったのですがなかなか上手くいきません。
どなたか参考になる意見orPHPプログラムをご存知であれば
教えてください。
よろしくお願い致します。

Aベストアンサー

クッキーをセットした後に、セットしたクッキーを読み込み、取得出来なければエラーで弾けばどうでしょうか?

IPアドレスは、メールの連続送信の防止用なのですが、参考になればと・・・

//データファイル
$LogFile = "data.cgi";
//再送信制限時間
$limittime = 30;
//同一クライアントからの連続送信チェック
$time = time();
$addr = $_SERVER['REMOTE_ADDR'];
$fp = fopen($LogFile,'r');
while(!feof($fp)){
$line = fgets($fp);
$items = explode("\t", $line);
if($time - $items[0] < $limittime) $data[$items[1]] = $line;
}
fclose($fp);
if ($data[$addr] == "") {
//処理
}
//アクセス履歴格納
$line = "$time\t$addr\t\n";
$data[$addr] = $line;
$fp = fopen($LogFile, 'w');
foreach($data as $line) fputs($fp, $line);
fclose($fp);

クッキーをセットした後に、セットしたクッキーを読み込み、取得出来なければエラーで弾けばどうでしょうか?

IPアドレスは、メールの連続送信の防止用なのですが、参考になればと・・・

//データファイル
$LogFile = "data.cgi";
//再送信制限時間
$limittime = 30;
//同一クライアントからの連続送信チェック
$time = time();
$addr = $_SERVER['REMOTE_ADDR'];
$fp = fopen($LogFile,'r');
while(!feof($fp)){
$line = fgets($fp);
$items = explode("\t", $line);
if($time - $i...続きを読む

Qホームページ上で人気投票によるランキングを作りたい!

こんにちは。
最近自作のドールハウスのホームページを
立ち上げました。
作品の人気投票によるランキングを作りたいのですが、やり方がわからず、、、
将来的にはインターネットから誰でも参加出来て
投票出来るようにしたいのです。
同じ人が何度も投票出来ないようにしたり、、
難しいでしょうか?
ウエブ上での説明やオススメの本、
ソフトなどがありましたら、ぜひ教えて下さい。
無料に越したことはありませんが、、、(笑)

Aベストアンサー

はじめまして、私、
アンケートのレンタルサービスをしている者です。

アンケートのレンタルサービスは多数あり、
それらを紹介するページも以下の通り多数あります。

http://www.geocities.co.jp/SweetHome/9959/vote.html
http://fif.bbzone.net/other.htm
http://freespace.g--z.com/maimu/tohyosys.html
http://www.hpj3.com/hp-search/html/05_02_07.html
http://www.tpot.to/~attaka/C/search/html/02_18.html
http://www.rentalnavi.jp/kt/11_51.html
http://www.free-service.jp/ys4/html/03_08.html

以上、ご参考まで。

Q重複投稿禁止の投票システム

投票時にIPアドレスを取得して、保存し、同一のIPアドレスから投票があった場合はカウントしない投票のシステムを作りたいのですが、初心者なので全く分かりません…。

出来ればソースを書いて教えて下さい。

宜しくお願いします。

Aベストアンサー

PHP使うけどフリーのものでいいですか?。

投票ポール
BooEasyVotingSystem
http://www.townee.net/script/list.php?cat=75

Q「Duplicate entry '1' for key 'PRIMARY'」というエラー。

mysql> show fields from do;
+-----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| parent_id | int(11) | YES | | 0 | |
| data_time | bigint(20) | YES | | NULL | |
| text | text | YES | | NULL | |
+-----------+------------+------+-----+---------+----------------+
というテーブルに、
insert into do values (1,1,1,'kkk');
などと、SQL文を実行すると、
Duplicate entry '1' for key 'PRIMARY'
というエラーが出ます。
これはどういう意味のエラーなのでしょうか?

mysql> show fields from do;
+-----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| parent_id | int(11) | YES | | 0 | |
| data_time | bigint(20) | YES | | NULL | |
| text | text | YES | | ...続きを読む

Aベストアンサー

id というカラムに既に1という値が入ったレコードがあったりしませんか?
idカラムはプライマリキーに設定されているのでユニークな値を持たせる必要があります。
あと、idカラムはオートインクリメントが設定されているようなので、idカラムに値をあえて入れる必要は無いかもしれません。


人気Q&Aランキング