我的网站需要能够"禁用"或者"取消激活"用户的帐户(当然,根据用户的要求)。实际上,我在网站上添加的链接是完全删除帐户。
但是,根据经验,我知道永远不要从数据库中完全删除用户的帐户是一种好习惯。最好以某种方式简单地禁用它,这样用户就无法再登录了。但是,由于各种显而易见的原因,帐户本身应保留在数据库档案中。
而且,这就是我的困境。我知道如何使用我的PHP代码删除帐户(只需要一个简单的MySQL DELETE
查询)。这很容易。
但是,我不知道如何禁用/停用MySQL数据库中的帐户,以便用户无法再登录我的网站。广泛的在线搜索没有产生任何结果。
我唯一能找到的是:REVOKE PRIVILEGES for user "login"
等等。
但是,当这不起作用时,我并不感到惊讶。它只是服务器端。它无法撤销从未授予过的权限。
知道在PHP中禁用/取消激活用户帐户需要什么样的代码?
答案 0 :(得分:2)
我通常会向可能已删除列的表中添加deleted_at
字段:这样,您仍然拥有数据,但它本身已停用。如果要删除字段,请将deleted_at
设置为当前时间戳。然后,在提取数据时,检查deleted_at
字段是否为非空,并且您是否知道它是否已停用。
答案 1 :(得分:1)
首先,添加一行"激活"到你的登录表(我现在叫它"登录")。
<强>&#34;删除&#34;一个帐户(或只是禁用))
这样的东西?我不知道你是否与id合作。我会推荐它。
<?php
$userid = $_SESSION["userid"]; // SET USER ID for example by session
if($_POST["delete"])
{
mysqli_query($conn, mysqli_real_escape_string($conn, "UPDATE login SET activated = 'no' WHERE id = '$userid'"));
// Do other stuff
}
?>
检查帐户是否已激活
登录时,首先检查用户名和密码是否正确,只检查那么,您必须检查帐户是否已激活。使用这样的东西:
$activated = mysqli_num_rows(mysqli_query($conn, mysqli_real_escape_string($conn, "SELECT * FROM login WHERE username = '$username' AND password = '$password' AND activated = 'yes'")));
如果用户被激活,$激活将为1。所以,在设置会话(或其他)之前
if($activated == 1)
{
// your stuff
}
代码未经测试,但应该有效。如果它没有工作,请在评论中寻求额外的帮助。
编辑:永远不要将密码作为纯文本安全!使用md5(仍然不安全)或使用散列。 Hashing on php.net感谢halfer