調査を行っていますが、ユーザーが複数回投票するのを防ぎたいです。誰かが私がページに含めることができるコードを持っていますか
2 に答える
サーバー/ホスティングの設定に応じて、いくつかのオプションがあります。
簡単: ユーザーが投票したときにブラウザーに Cookie を設定します。投票を受け入れる前に Cookie を確認してください。簡単に回避できます (Cookie の削除)
Med: IP を取得し、テーブルに格納します。投票を受け入れる前にテーブルを確認してください。回避するのは「難しい」(プロキシが必要)。NAT の背後にいて、同じ IP を持つ人々からの投票を受け入れる場合、良い解決策ではない可能性があります。
私がすること: 車輪を再発明しないでください。別の同様のオンライン サービスである surveymonkey を試してみてください。
人々が複数の回答を入力するのを防ぐために、セッションを使用する必要があります (これは、そのページをログインの背後に配置する必要があることを意味します)。または、IP を使用することもできます。
ただし、IP は変更されます。これは、IP のみを使用してどこかに保存したとしても (暗号化されている可能性があります)、その IP を使用した人が再び応答できないようにしても、私が再び応答するのを妨げないことを意味します。
facbook や twitter や google+ などのソーシャル ネットワークでのログインを有効にすることを検討したことはありますか? ログインの代替手段です。
IP のみに満足している場合は、IP エントリを含むデータベース テーブルを簡単に作成できます。既にそれがあり、テーブルに 3 つの列 (id、ip、調査) があるとします。
<?
//take the ip
$user = $_SERVER['REMOTE_ADDR'];
//sanitize the ip (is it valid?). This can probably skipped with prepared statements but one never knows
if (filter_var($user, FILTER_VALIDATE_IP)) {
echo "This (ip_a) IP address is considered valid."; //for debug
$user = md5( $user); //or whatever else if not md5
$query = $mysqli->prepare("insert into iptable values (NULL, ?, ?)");
//etc.
}else{
//return error
}
?>
これが役立つことを願っています。私はログインを好むだろう。