-2

調査を行っていますが、ユーザーが複数回投票するのを防ぎたいです。誰かが私がページに含めることができるコードを持っていますか

4

2 に答える 2

0

サーバー/ホスティングの設定に応じて、いくつかのオプションがあります。

簡単: ユーザーが投票したときにブラウザーに Cookie を設定します。投票を受け入れる前に Cookie を確認してください。簡単に回避できます (Cookie の削除)

Med: IP を取得し、テーブルに格納します。投票を受け入れる前にテーブルを確認してください。回避するのは「難しい」(プロキシが必要)。NAT の背後にいて、同じ IP を持つ人々からの投票を受け入れる場合、良い解決策ではない可能性があります。

私がすること: 車輪を再発明しないでください。別の同様のオンライン サービスである surveymonkey を試してみてください。

于 2013-03-01T10:42:40.117 に答える
0

人々が複数の回答を入力するのを防ぐために、セッションを使用する必要があります (これは、そのページをログインの背後に配置する必要があることを意味します)。または、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
}
?>

これが役立つことを願っています。私はログインを好むだろう。

于 2013-03-01T10:44:46.300 に答える