【发布时间】:2014-02-04 10:00:10
【问题描述】:
您好,这个伟大的社区,
我写了以下几行代码。
mysql_query("DELETE FROM token_db WHERE date < ".strtotime('-1 day'));
$token = mt_rand(1000, 9999);
$result = mysql_query("SELECT token FROM token_db WHERE token = $token");
while (mysql_num_rows($result) == 1)
{
$token = mt_rand(1000, 9999);
$result = mysql_query("SELECT token FROM token_db WHERE token = $token");
}
mysql_query("INSERT INTO token_db (date,token) VALUES('$date','$token')");
这个脚本生成我最大存在的令牌。 24 小时在数据库中。如果所有令牌(例如 4 位)都在使用中,我如何添加将令牌扩展一位(例如 5 位)的可能性?谢谢!
【问题讨论】:
-
为了完整性:您的代码容易受到en.wikipedia.org/wiki/SQL_injection的攻击
-
如果 register_globals 处于关闭状态(应该这样做!!!),这怎么容易受到攻击?用户无法控制任何输入,还是我错了?
-
您没有展示完整的示例。 $date 可能是个问题,但你通常是对的。
-
好的。我知道这一点。