【发布时间】:2015-05-03 10:40:11
【问题描述】:
我遇到了问题,不确定我需要的逻辑。
我正在尝试构建一个基本的 PHP 和 MySQL 注册页面,但要检查他们是否更改了 IP 地址,检查这些地址是否已使用 3 个不同的帐户注册,如果是,则返回 false。
这是我的逻辑。
帐户注册 -> 数据库 (site_registration) -> 电子邮件验证 -> 数据库(用户)-> 帐户登录 -> 数据库(account_logins)(仅当新 IP 时)
帐户在 3 个条目后尝试重新注册 -> 检查数据库 (site_registration) IP 字段 -> 检查数据库 (account_logins) 帐户 IP 字段 -> 将帐户的所有 IP 放入数组中 -> 根据 site_registration 检查数组 -> 如果 IP在 3 个帐户上发现,抛出注册错误 -> 数据库 (suspicious_logs)
这是我需要的mysql代码,但不知道如何循环。
//SELECT * FROM users WHERE (idnumber = '75.143.xxx.xxx') OR (idnumber = '76.94.xxx.xxx') OR (idnumber = '76.94.xxx.xxx')
$username = $_SESSION['login'];
$check_ip_site = $MySQL->consult("SELECT * FROM site_registration WHERE (username = '$username')");
$check_ip_logins = $MySQL->consult("SELECT * FROM site_logins WHERE (username = '$username')");
$check_ip_user = $MySQL->consult("SELECT * FROM users");
for($i = 0; $login_array[$i] = mysql_fetch_assoc($check_ip_logins); $i++);
array_pop($login_array);
for($i = 0; $user_array[$i] = mysql_fetch_assoc($check_ip_user); $i++);
array_pop($user_array);
foreach ($login_array["ip"] as $login_ips) {
if (in_array($login_ips, $user_array["ip"]) > 3) {
return true;
} else {
return false;
}
}
虽然这种语法不起作用,但这是我需要的,我想查找是否在用户数据库的 3 条记录中找到任何 IP,如果它们返回 false。
【问题讨论】:
-
for()的结尾应该是{,里面有代码,然后是}而不是for();。 -
你也不需要任何循环;你可以通过一个查询来做到这一点。
-
那到底是什么?我无法弄清楚这里的逻辑。我需要比较他们所有的 IP,看看他们是否已经注册到任何 3 个帐户,如果是,则返回 false。
标签: php mysql database foreach registration