• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:cookieとIPアドレス記録を利用する投票システム)

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

このQ&Aのポイント
  • 投票システムにおける重複投票を防ぐために、cookieとIPアドレスの記録を利用しています。
  • 現在利用しているPHPスクリプトでは、cookieを渡して重複投票のチェックを行っています。
  • しかし、cookieをオフにすると簡単に複数回投票できてしまいます。そのため、cookieが無効な場合は投票を弾く機能を追加したいと考えています。また、IPアドレスを記録して重複投票も防止する機能も追加したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Nii
  • ベストアンサー率48% (79/162)
回答No.1

クッキーをセットした後に、セットしたクッキーを読み込み、取得出来なければエラーで弾けばどうでしょうか? 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);

noname#65125
質問者

補足

さっそくの回答ありがとうございます。 ひとまずcookieを許可していないブラウザは弾く設定には成功しました。 しかし、これだけだと cookieの削除→投稿 の繰り返しで まだ連続投稿は可能ですので このIPアドレスで弾く機能をつけたいのですが・・ ちょっと僕には難しいです、すいません; PHPをほんとにちょこっとできる程度なもので・・; 仕組み的にはIPアドレスと時間?を記録するログファイルを作成して 投票があるたびにそれと照らし合わせて弾く弾かないを判断するということでしょうか? もう少し自分でも調べてみます・・。

関連するQ&A