ユーザーがリンクをクリックしたときに数値が追加されるように、投票セクションを作成したいと思います (1 つのピア IP などに制限します)。
例えば:
セルティックス: 0 (クリックして投票) -----------これはクリックされました
レイカーズ: 0 (クリックして投票)
セルティックス: 1
レイカーズ: 0
セッションまたはphpコーディングだけでこれはどのように可能ですか?
何か案は?
ユーザーがリンクをクリックしたときに数値が追加されるように、投票セクションを作成したいと思います (1 つのピア IP などに制限します)。
例えば:
セルティックス: 0 (クリックして投票) -----------これはクリックされました
レイカーズ: 0 (クリックして投票)
セルティックス: 1
レイカーズ: 0
セッションまたはphpコーディングだけでこれはどのように可能ですか?
何か案は?
セッションを使用して、投票が行われたかどうかを即座にテストできます。
// if session hasn't voted
if(!$_SESSION['voted']){
// VOTING LOGIC
// set session to have voted
$_SESSION['voted'] = true;
}
ただし、セッションだけでは、1 人のユーザーが再び投票できないという保証はありません (セッションは、ブラウザーのキャッシュ/Cookie を消去するとすぐに失われます)。投票ロジックが起動したら、から取得した IP アドレスを保存する必要があります$_SERVER['REMOTE_ADDR']
。
// if session hasn't voted
if(!$_SESSION['voted']){
// if ip address hasn't voted
if(!$ip_addresses[$_SESSION['REMOTE_ADDR']]){
// VOTING LOGIC
// set session and ip address to have voted
$_SESSION['voted'] = true;
$ip_addresses[$_SESSION['REMOTE_ADDR']] = true;
}
}
この例で要求されるように、IP アドレス全体を取得しないでください。代わりに、外部メディア (ファイル/DB) にクエリを実行して、特定のクライアントが投票したかどうかを判断する必要があります。もちろん、これは実装例にすぎませんが、タスクを実行するための簡単なスクリプトの方向性は次のとおりです。また、一定時間後に IP アドレスを解放して、同じ IP アドレスからの後続の接続が異なるクライアントから確実に投票できるようにする必要があります。
それは、重複投票をどれだけ減らしたいかによって異なります。ユーザーの登録、およびユーザー アカウントに基づく制限、または確認が必要な電子メール アドレスに基づく投票制限は、かなり信頼性が高くなりますが、そのオーバーヘッドは、ここで説明できる以上のものです。