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

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

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

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

A 回答 (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);

この回答への補足

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

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

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

補足日時:2006/10/26 18:27
    • good
    • 1

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