我一直在寻找有关使用 PHP 安全登录的信息。我发现了一些有趣的内容,尽管我对最安全和最简单的方法仍然不完全肯定。
我创建了一个简单的系统,但我不确定它在哪里足够安全。我会保持简短,以免让您感到窒息:
我在数据库中的用户表包含一个名为“ loginToken ”的列。当用户登录时,会创建一个值(基于该用户的 id、一个随机数,最后是 sha1 哈希),该值被插入到数据库用户表的 loginToken 中。
除此之外,还创建了一个具有相同值的 $_CCOKIE。所以这些值对于每个用户来说都是完全不同的,并且每次用户登录时都会交替出现。
现在要检查用户是否已登录,我使用以下代码:
$user_id = -1; //By default, the user is logged out
if (isset($_SESSION["user"]) && isset($_COOKIE["ut"])) { //Check session and user token exists
//Get variables
$uid = $_SESSION["user"]; //Get user ID
$ut = $_COOKIE["ut"]; //Get user token
//Compare the user id with the user token in the database
$sql = mysql_query("
SELECT COUNT(*)
FROM `users`
WHERE `id` = '$uid' AND `login_token` = '$ut'
");
//Get result
$sql = mysql_result($sql, 0);
//Found!
if ($sql == 1) {
$user_id = $uid; //User logged in!
}
}
这可以理解吗?如果是这样,那是一种足够安全的方法吗?
谢谢!