gpt4 book ai didi

php - 循环,比较多个表值

转载 作者:行者123 更新时间:2023-11-29 22:52:57 25 4
gpt4 key购买 nike

我遇到了一个问题,不确定我需要的逻辑。

我正在尝试构建一个基本的 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。

最佳答案

这对我有用。我必须将其设置为 foreach 才能循环查询。另外,我的 for 循环是这样工作的,因为我在循环内部没有任何事情可做。如果有人看到更好的方法,请告诉我!在我接受我的答案之前,我会看看是否有人有更好的解决方案。

//Check if username is set, if it's not use the current IP instead (add cookie handling later to keep from destroying evidence)
$ip = $_SERVER['REMOTE_ADDR'];
if ($username == NULL){
$check_ip_logins = $MySQL->consult("SELECT * FROM site_logins WHERE (ip = '$ip')");
}
else
{
$check_ip_logins = $MySQL->consult("SELECT * FROM site_logins WHERE (username = '$username')");
}

for($i = 0; $login_array[$i] = mysql_fetch_assoc($check_ip_logins); $i++);
array_pop($login_array); //Deletes the null array at the end of the for loop

foreach ($login_array as $la)
{
$lips = $la["ip"]; //Place just the IP's into it's own array

$check_ip_user = $MySQL->consult("SELECT * FROM users WHERE (idnumber = '$lips')"); //Loop through all IP's associated with account & check the users database

while($test = mysql_fetch_assoc($check_ip_user)) {
$names[] = $test["name"]; // This is used as a way to count, any thing can be used here.
}
}
if (count($names) > 3)
{
echo 'you have too many accounts you cannot create anymore';
}
else
{
echo 'you are able to create an account';
}

关于php - 循环,比较多个表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com