プロが教える店舗&オフィスのセキュリティ対策術

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

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


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

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

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

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

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

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

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

A 回答 (2件)

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


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


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


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

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

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

厳密には不可能です。



案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

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