gpt4 book ai didi

php - 生成随机字符串变量并用它更新 MySQL 字段。

转载 作者:行者123 更新时间:2023-11-29 22:34:59 28 4
gpt4 key购买 nike

我遇到一个问题,因为有人正在使用机器人来利用我的网站。从日志中可以看出,在代码能够从他的余额中扣除请求的金额之前,他能够非常快地发送多个请求。

我曾考虑过在每次执行时声明一个随机值,然后将其放入他的帐户行中并与自身进行比较。这样每次运行时都会有所不同。

下面是代码的头部:

$player=mysql_fetch_array(mysql_query("SELECT `id`,`time`,`ex`,`btc`,`string` FROM `players` WHERE `hash`='".prot($_GET['_unique'])."' LIMIT 1"));
$random = base64_encode(openssl_random_pseudo_bytes(10));
$setstring = $random;
mysql_query("UPDATE `players` SET `string` = $setstring WHERE `id`=$player[id] LIMIT 1");
$playersec=mysql_fetch_array(mysql_query("SELECT `string` FROM `players` WHERE `hash`='".prot($_GET['_unique'])."' LIMIT 1"));

if (!is_numeric($_GET['amount']) || (double)$_GET['amount']>$player['btc'] || (double)$_GET['amount']< 0 || $setstring != $playersec['string'] ) {
$error='yes';
$con=1;
}

我很确定这就是问题所在,因为当它执行时,它不会在 string 中放入任何内容。字段,即留空。

mysql_query("UPDATE `players` SET `string` = $setstring WHERE `id`=$player[id] LIMIT 1");

但是当我运行时:

<?php

$random = base64_encode(openssl_random_pseudo_bytes(10));
$setstring = $random;
echo $setstring;
?>

它输出良好:IAXUqtKraNDb1Q==

有人有什么想法吗?

谢谢

最佳答案

此时您正在创建一个解决方法。为了防止这种滥用,最好从根源上阻止它,并使用数据库事务来做到这一点。

步骤:

1)使用INNODB

2)在php上使用事务封装。

从数据库中更新并检索您的总计。由于它们现在处于一个事务中,因此下一个事务必须等待第一个事务,因此只能检索到真正可用的值。

关于php - 生成随机字符串变量并用它更新 MySQL 字段。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579617/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com