【发布时间】:2013-05-23 19:48:58
【问题描述】:
我需要编写每日奖励系统。 用户必须能够每天获得一次奖金。 我编写了类似的代码:
function checkDailyBonus($user, $type) {
global $ado;
$last_day = strtotime(date("Y:m:d 00:00:00"));
$query = $ado->exec("SELECT * FROM claimed_bonuses WHERE `user` = '$user' and `type` = '$type' ORDER BY `id` DESC");
$row = mysql_fetch_assoc($query);
$date = strtotime($row['date']);
if ($ado->count($query) < 1) {
return 1;
} else {
if ($last_day < $date) {
return 0;
} else {
return 1;
}
}
}
但是它返回了错误的结果:即使今天高于最后一个索赔奖金脚本返回 0,但它应该返回 1。最后索赔日期为 2013-05-19 23:05:41。提前感谢您的帮助。
【问题讨论】:
-
看起来你在乞求 SQL 注入。
-
您是如何访问数据库的?您的
exec函数是否返回了可以传递给mysql_fetch_assoc()的内容? -
@John,如果
$type和$user是用户输入,那将是正确的,但这里没有任何迹象。 -
我会在查询中设置一个限制 1 以获得性能,或者只是选择
date > '<?= date("Y-m-d")'的位置并检查计数 -
您是否进行了一些调试以查看问题所在?另外,我建议您修复缩进 - 它确实让生活变得很多更轻松。