こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

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

投稿日時 - 2006-10-26 17:01:44

QNo.2498873

困ってます

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

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

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);

投稿日時 - 2006-10-26 18:09:26

補足

さっそくの回答ありがとうございます。
ひとまずcookieを許可していないブラウザは弾く設定には成功しました。

しかし、これだけだと cookieの削除→投稿 の繰り返しで
まだ連続投稿は可能ですので
このIPアドレスで弾く機能をつけたいのですが・・
ちょっと僕には難しいです、すいません;

PHPをほんとにちょこっとできる程度なもので・・;
仕組み的にはIPアドレスと時間?を記録するログファイルを作成して
投票があるたびにそれと照らし合わせて弾く弾かないを判断するということでしょうか?
もう少し自分でも調べてみます・・。

投稿日時 - 2006-10-26 18:27:13

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問