0

以前にこの質問をしたことがありますが、ここでより具体的に説明します。誰でも投票できる投票システムを持っています (登録ユーザーである必要はありません)。ユーザーが 1 回だけ投票できるようにしたいのです。ブール値を介していると思いますよね?それで、より良い方法を教えてください.コードは次のとおりです。

<?php
$tries=0;
if (((isset($_POST['hidden']))&&$tries<2) {
    $tries++;
    $likes++;
    $up = mysql_query("Update videos SET Likes='$likes' WHERE Name='$name'");
}
?>
4

2 に答える 2

1

ユーザーが登録されていない場合、以前に投票したかどうかはわかりません。いくつかの一般的な方法 (防弾とはほど遠い) は、IP ごとの投票のログをしばらく保持することです (そのため、ログ テーブルにこのコンテンツの IP が含まれている場合は投票を受け入れません)、または Cookie を使用して、人が投票しました。

上記のいずれも 100% ではありません。そのため、ほとんどの企業は匿名投票を許可していません。

于 2013-03-12T16:15:30.213 に答える
0

私は、あなたが必要としているものとほとんど同じものを必要としていたあるスタートアップを知っています。彼らはこのウェブサイトのようないくつかのコントロールを実装しました

https://panopticlick.eff.org/index.php?action=log&js=yes

これはあなたにこれを伝えます:

あなたのブラウザーの指紋は、これまでにテストされた2,762,716 個の指紋の中で一意の ようです。

現在、お使いのブラウザには、少なくとも 21.4 ビットの識別情報を伝えるフィンガープリントが含まれていると推定されます。

これは、ユーザー エージェント、SO、およびその他のパラメーターのフィンガープリントを生成することを意味します。100% 効果的ではないため、これはスタンドアロンの実装ではありません。また、フィルターに適合しなかったフィンガープリントの結果を処理する、手動の投票検証方法も実装しました。

これをあなたのケースに適用します。この指紋ソリューション (またはそのような別のソリューション) を実装し、例外を手動でチェックする必要があります (ユーザー/投票が増えると、例外が増えます)。

それが役に立てば幸い。

于 2013-03-12T16:27:58.997 に答える