我不能为我的生活弄清楚为什么这个函数会导致多个条目进入我的数据库表...
当我运行该功能时,我最终将两个记录堆叠在每一秒的顶部
screen cap http://img132.imageshack.us/img132/5053/screenshot20100517at259.png
这是功能:
function generate_signup_token(){
$connection = new DB_Connect(); // <--- my database connection class
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$sign_up_token = uniqid(mt_rand(), true);
$_SESSION['signup_token'] = $sign_up_token;
$sign_up_token = mysql_real_escape_string($sign_up_token);
$query = "INSERT INTO `token_manager` (`ip_address`, `signup_token`) VALUES ('$ip', '$sign_up_token')";
mysql_query($query);
}
generate_signup_token();
答案 0 :(得分:4)
看起来你的功能很好。看来你以某种方式调用该函数两次。我建议在函数中添加一些调试信息以找出原因。函数debug_print_backtrace可能会派上用场。
答案 1 :(得分:4)
这个函数不止一次被调用的最大证据就是生成了不同的注册令牌。
此外,插入之间存在一秒的差异,这可能表示多个页面请求。如果始终存在这样的时间差异,我将调查访问日志。如果只有一个页面请求,那么必须以某种方式多次调用该函数。