管理员验证系统 PHP 和 mysqli(程序)


Admin validation system PHP and mysqli (procedural)

function activate($con, $email){
    $email = mysqli_real_escape_string($con, $email);
    return mysqli_query($con, "UPDATE `users` SET `active` = 1 WHERE `email` = '".$email."'");
}
if($role == 'Administrator'){
        $query = mysqli_query($con, "SELECT * FROM `users` WHERE `active` = 0");
        if(mysqli_num_rows($query) > 0){
            while($row = mysqli_fetch_assoc($query)){
                $email = $row['email'];
                $name = $row['name'];
                $surname = $row['surname'];
                echo $name . ' ' . $surname . ' - ' . $email . '<form method="post"><input type="submit" name="activate" value="Activeaza"></form></br>';
                if(isset($_POST['activate']))
                activate($con, $email);
            }           
        }
    }

这是我的代码。我想为管理员创建一个验证页面,他可以从中验证用户。当我激活用户时使用此代码,它会激活所有用户。我不知道如何在一个接一个地使用变量时退出它。谢谢,我是 php :D 的初学者

你不需要退出那个 while,但你在那个 while 循环上做了太多的事情

由于您未在表单上指定操作,因此表单必须在提交时提交到页面本身。 您可以将其分开。

因此,您可以在表单中添加以下内容:

echo $name . ' ' . $surname . ' - ' . $email . '<form method="post">
<input type="submit" name="activate" value="Activeaza">
<input type="hidden" name="email" value='"'. $email . '"'>
</form></br>';

并将其添加到代码顶部:

if ( $SERVER['REQUEST_METHOD'] == 'POST' )
{
     $email = $_POST['email'];
     activate($con,$email);
}

希望这有帮助要了解有关隐藏输入类型的更多信息,请参阅此链接:
https://www.w3.org/TR/html-markup/input.hidden.html

不是为每个用户创建一个表单,而是创建 1 个表单并使用 while 循环将所有用户输入到表单中,并为每个用户提供不同的标识符,例如用户 ID。

您可以使用 HTML 选择或为每个用户提供带有复选框的行

然后将代码放在窗体之外。

if(isset($_POST['activate']))    
activate($con, $email);

如果使用复选框方法,则可以使用修改后的激活功能一次激活多个用户