【发布时间】:2015-06-25 00:01:33
【问题描述】:
我昨天发布了一个问题,关于有人使用机器人利用我的投注网站并非常快速地多次按“滚动”以获得相同的滚动数字。
Stop bot sending multiple requests quickly. PHP + AJAX
有人给我的答案是使用锁定。所以我做了,但他回来了,但没有用。见下文:
谁能看看我的代码并告诉我我做错了什么或者这还不够。
页面使用 ajax 发送请求,您可以在上一个问题中找到代码,因为我认为它不相关。
它将它发送到一个 php 文件,其摘录如下:
include '../../inc/functions.php'; //This is where the lock functions are stored.
$lock = acquire_lock("foo");
if (empty($_GET['_unique']) || mysql_num_rows(mysql_query("SELECT `id` FROM `players` WHERE `hash`='".prot($_GET['_unique'])."' LIMIT 1"))==0) exit();
$newSeed=generateServerSeed();
mysql_query("UPDATE `players` SET `server_seed`='$newSeed' WHERE `id`=$playerinv[id] LIMIT 1");
$settings=mysql_fetch_array(mysql_query("SELECT * FROM `system` LIMIT 1"));
$player=mysql_fetch_array(mysql_query("SELECT * FROM `players` WHERE `hash`='".prot($_GET['_unique'])."' LIMIT 1"));
$player['server_seed_']=$player['server_seed'];
$player['server_seed']=(double)substr($player['server_seed'],27);
// More content...
release_lock($lock);
?>
$newseed 是具有卷号的变量。如您所见,通常每次运行时都会生成一个新的。
functions.php里面如下:
<?php
function acquire_lock($name) {
return fopen($name, "rw");
}
function release_lock($lock) {
fclose($lock);
}
?>
感谢您花时间阅读并告诉我您的想法/解决方案。
【问题讨论】:
标签: php mysql ajax locking bots