現在、自ホームページで投票を行うPHPスクリプトを利用しています。
基本的に一人一票なのですが
重複投票のチェックがcokkieを渡して判断するだけのシステムのため。
cookkieをオフにすると簡単に複数回投票できてしまいます。
完全に一人一票を判断するのは無理かと思いますが、
できれば現在のプログラムを修正して
・cookieを有効にしていない場合は投票をはじく
・IPアドレスを記録して重複投票をはじく
以上のような機能にできればと考えています。
色々調べてプログラムをいじったのですがなかなか上手くいきません。
どなたか参考になる意見orPHPプログラムをご存知であれば
教えてください。
よろしくお願い致します。
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);
この回答への補足
さっそくの回答ありがとうございます。
ひとまずcookieを許可していないブラウザは弾く設定には成功しました。
しかし、これだけだと cookieの削除→投稿 の繰り返しで
まだ連続投稿は可能ですので
このIPアドレスで弾く機能をつけたいのですが・・
ちょっと僕には難しいです、すいません;
PHPをほんとにちょこっとできる程度なもので・・;
仕組み的にはIPアドレスと時間?を記録するログファイルを作成して
投票があるたびにそれと照らし合わせて弾く弾かないを判断するということでしょうか?
もう少し自分でも調べてみます・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 政治 国政選挙での野党への投票について 長文失礼します。 私は今20代で政治には全くのド素人ですが選挙には 11 2023/08/17 09:27
- 政治 一票の格差違憲訴訟団は、違憲判決を求めるだけでなく、賠償金も求めるべきですよね? 1 2022/06/10 13:02
- 政治 選挙はランダム投票でするべきだろう。 ランダム投票とは、国民から無作為に投票者を抽出する投票制度。 4 2022/06/24 17:09
- その他(ニュース・社会制度・災害) 選挙違反できますか? 5 2023/03/17 10:51
- Java Java 配列<選挙> 4 2023/07/31 15:07
- 政治 自民党は、都市部住民に一人当たり、少なくとも千円の賠償金を払うべきですよね? 1 2022/05/26 10:37
- 政治学 もはや選挙は「サンプル調査」なのか? 1 2023/04/15 14:30
- 政治学 『直接民主制』 4 2022/09/19 06:12
- 政治 ガーシー議員を首にするのは民主主義に対する攻撃ではないですか? 62 2023/03/09 10:50
- 政治 期日前投票の’本当の’理由 5 2023/04/22 12:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Resource id #3 と表示されま...
-
複数行のデータのPOST処理に関して
-
◆速い、ファイル読み込みは?
-
多次元配列の一次元目の最大値...
-
配列をファイルに書き込む方法
-
phpでCSVファイルの中身を多次...
-
バイナリファイルの内容を、そ...
-
rubyで複数列のデータを一行に...
-
配列同士の足し算のループ処理
-
別ファイルの構造体の値を読み...
-
テキストデータから指定行の削除
-
PHPで、CSVファイルを、指定し...
-
curlをPHPで書く方法
-
CSVでアップロードしたデータの...
-
csvの内容を行単位で削除したい
-
配列をループでたくさん宣言し...
-
【PHP】配列内のある値以上をカ...
-
PHPのセレクトボックスの初期値...
-
ファイルの書き込みについて教...
-
$_SESSIONに二次元配列を使える...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ファイルの構造体の値を読み...
-
CSVファイルの最終行のデー...
-
stdClass Objectを連想配列のよ...
-
複数行のデータのPOST処理に関して
-
ヒアドキュメントの中のfor文
-
Resource id #3 と表示されま...
-
エラーメッセージ(無効な間接...
-
自動で番号を振りたい
-
PHPでCSVの一部の行を編集したい
-
C言語でCSVファイルの行数を読...
-
バイナリファイルの内容を、そ...
-
CSVデータの行数カウントをした...
-
ログファイルの古い日付の行を...
-
While文を使って配列の中身を全...
-
csvの内容を行単位で削除したい
-
多次元配列の一次元目の最大値...
-
pythonのファイルの並びでの読...
-
配列同士の足し算のループ処理
-
【PHP】csvファイルへの書き出...
-
配列をファイルに書き込む方法
おすすめ情報