2016-08-27 24 views
-3

私のような質問と回答のウェブサイトがあります。私はいくつかの施設にいくつかの制限があります。たとえば、評判が20未満のユーザーは投票できません。または、ユーザーは少なくとも200の評判を得るまで質問を閉じることはできません。ユーザーが入力したウェブサイトの入力を制御するにはどうすればよいですか?

よく、質問に答えを書くのと同じように、何の制限もないものもあります。この場合、悪いユーザは、複数の質問に対して無関係の回答を複数書くことができ、無駄な情報でデータベースが膨大になります。

私は新しい回答を挿入する前に何かをチェックする必要があると思いますか?または、とにかくウェブサイトの入力をどのように管理できますか?私が言及したように、私の現在のアルゴリズムでは、悪いユーザ(スパマーやハッカーのような)は、単に私のデータベースに無駄なデータをたくさん入力することができますし、多分私は1日後にそれを理解する(これは遅いです)この場合、彼をブロックして彼のすべてのデータを削除するまでに数回かかる。

結論として、私は知りたい、(例えば)、どのようにそのようなWebサイトを処理するのですか?チェックのために新しい回答を挿入する前に、別のクエリが必要ですか?または何?

注:私はPHP とMySQL (データベースコードについて)(サーバ側コード用)を使用。

+0

はい、確認のためのクエリが必要です。 SOは、多くのクエリを使用して、ユーザーが何を行うことができるかを決定します。 – Barmar

+0

@Barmarこのようなことを意味しますか? http://stackoverflow.com/questions/38107025/how-can-i-count-something-before-inserting#38107363 –

答えて

2

実際はかなり簡単です。前回の作業時間を保存して今すぐ比較してください。

function insertSth(//your args){ 
    $minimumInsertInterval = 10; // Minimum 10 seconds. 
    //You should check if interval ended. 
    if((microtime() - $_SESSION['lastInsertTime']) <= $minimumInsertInterval){ 
     //User can't do any operation. 
     return false; 
    } 
    //Insert operations 
    //At the end of your insert operations you need to write this microtime to Session. 
    $_SESSION['lastInsertTime'] = microtime(); 
} 
+0

はい、アプローチになります..ありがとう.. upvote –

0

Erolのような対策を講じる必要がありますが、論理チェックも必要です。可能なアクションを記述するactionsテーブルを作成し、ルールを記述するprivilegesテーブルを作成します。次に、2つのアクションの間に必要な特権を格納するテーブルを作成します。アクションを実行する前に、アクションに必要な権限がすべて満たされていることを確認します。

関連する問題