- ベストアンサー
1人1回投票できる投票システムの作り方
- ホームページ上で投票できる1人1回投票システムの作り方について、質問があります。写真が並んだギャラリーページからユーザーが一番気に入った写真に投票できるシステムを作りたいと思っています。具体的な機能要件として、1回の投票しかできない回ごとの人気投票、他の写真への投票制限、ユーザーの投票結果の非表示、管理者の投票結果の表示があります。質問者はPHPとCGIの知識があり、フリーのシステムを探しても見つからなかったため、自身で作りたいと考えています。
- まずは、ホームページ上で投票できるシステムを作るために、PHPかCGIの知識が必要です。質問者はすでに一部の知識を持っていますが、その知識を活かしてシステムを作ることを目指しています。質問者が作りたいのはギャラリーページからの写真投票システムであり、以下の機能要件を持っています。投票は1人1回のみであり、回ごとに投票が行われます。また、一度投票した写真には再度投票することはできません。ユーザーは他のユーザーの投票結果を見ることはできないが、管理者は投票結果を確認することができます。
- 質問者はどのようにして投票システムを作ればよいかわからない状態です。具体的な手順やアドバイスを求めています。また、データベースが必要な場合は用意できる旨も伝えています。
- みんなの回答 (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を発行します。
その他の回答 (1)
- nekonynan
- ベストアンサー率31% (1565/4897)
・相手がPC時はPC上に記録に残す クッキーの形成などさせる 又は同一IPで投票禁止処理をする ・相手が携帯電話時は個別識別番号修得してサーバに残して照合 ・携帯で個別識別番号が無い電話会社がある これはクッキーの形成で処理する
お礼
ご回答ありがとうございます。 おっしゃることは理解できるのですが、 私の知識不足でその内容を組み上げる方法が全くわかりません… 時間をかけて勉強したいと思います。
お礼
ご回答ありがとうございます。 なるほど、ご提案のとおり、Cookieがいちばんよさそうです。 おかげさまで、だいたいの設計が理解できたので 少しずつ勉強して作りたいと思います。 ありがとうございました!