これを機能させる方法がわからないので、現在アイデアを探しています。作りたいものを説明しましょう。「クリック」という名前のボタンがあるとしましょう。このボタンを押すたびにデータベースに1が追加されるため、10回押すと、「clicks」という名前のデータベース列に値「10」が保持されます。これはすでに行われています。アンチボッティングシステムを作るために、ボタンを10回押した速さを確認できるものが必要です。したがって、データベースに「time」という名前の列を作成すると、この「time」列は10秒ごとにリセットされ、「クリック」ボタンが押されるたびに列に1が追加されると思いました。次に、PHPスクリプトで次のようなものを作成できます。時間が200を超える場合はユーザーを削除します。
したがって、誰かが自分自身をリセットする前に200の「時間」列を取得できる必要がある場合、わずか10秒間に何度も押すのは人間のようではないため、ボットを押す必要があります。
TIMESTAMPとINTERVALについて何か読んだことがありますが、思ったとおりに理解できません。必要なのは、特定の時間が経過すると、その中のすべてのデータを削除する列だけです。
どんな提案でも大歓迎です!前もって感謝します。
私はここまでコードを持ってきました:
if (isset($_POST['djahff'])) { // The button
require_once('connectvars.php'); // The DB connection
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$idsession = $_SESSION['id'];
$result = mysqli_query($dbc, "INSERT INTO pbclickslogin SET cps=1, id='$idsession' ON DUPLICATE KEY UPDATE cps=cps+1"); // Adding 1 to the column "cps" where username=$username
$data = mysql_query("SELECT TIMESTAMPDIFF(SECOND, NOW(), mark) > 10 FROM pbclickslogin WHERE username='$username'") // Checking if the difference from mark and now is 10 seconds I assume?
or die(mysql_error());
while($info = mysql_fetch_array( $data )) {
$result = mysqli_query($dbc, "UPDATE pbclickslogin SET cps='0', mark=NOW() WHERE username='$username'"); // Updating cps and mark because the difference from mark and now was 10 seconds.
}
}
ボタンを押すたびにサイトが更新され、入力タイプが「送信」のボタンになります。
うーん、私はあなたがアルゴモルフを完全に理解していませんでしたが、それは私のコード投稿の間違いが原因だったと思います。申し訳ありませんが、このフォーラムはまだ新しいです。とにかく、私はここに更新ステートメントがあると思いますか?あなたが前に述べたのと同じ問題がまだありますか?
追伸 フォーラムの形式について教えてくれてありがとう
もう少しコードを追加しました:
if ($info[0] == 1) {
$result = mysqli_query($dbc, "UPDATE pbclickslogin SET cps='0', mark=NOW() WHERE username='$username'"); // Updating cps and mark because the difference from mark and now was 10 seconds.
}
ただし、コードは今すぐ更新されることはありません。($ info ['0'] == 1)も試してみましたが、残念ながら運がありませんでした。それに加えて、私は今これを本当に理解していません、$ info [0]とは何ですか?データベース内で0か何かを見つけていますか?私は通常、列を呼び出すときにのみ$infoを使用します。もう一度ありがとう:)
さらにいくつかの変更が追加されました。現在取得しているコードは次のとおりです。
if (isset($_POST['djahff'])) { // The button
require_once('connectvars.php'); // The DB connection
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$idsession = $_SESSION['id'];
$result = mysqli_query($dbc, "INSERT INTO pbclickslogin SET cps=1, id='$idsession' ON DUPLICATE KEY UPDATE cps=cps+1"); // Adding 1 to the column "cps" where username=$username
$data = mysql_query("SELECT TIMESTAMPDIFF(SECOND, mark, NOW() ) > 10 FROM pbclickslogin WHERE id='$idsession';") // Checking if the difference from mark and now is 10 seconds I assume?
or die(mysql_error());
while($info = mysql_fetch_array( $data )) {
if ($info[0] == 1) {
$result = mysqli_query($dbc, "UPDATE pbclickslogin SET cps='0', mark=NOW() WHERE id='$idsession'"); // Updating cps and mark because the difference from mark and now was 10 seconds.
}
}
}
アルゴモルフへ:ところで、なぜNOW())> 10をNOW())> 1000に変更したのですか?プラス:私が現在抱えている問題は、ボタン「djahff」を押すと、タイムスタンプ「mark」は更新されますが、整数「cps」は更新されないことです。
ありがとう:-)-近づいています!