在PHP中允许从cookie对站点进行身份验证的最佳方法?

在PHP中允许从cookie对站点进行身份验证的最佳方法?,php,authentication,cookies,Php,Authentication,Cookies,我知道这是一个基本的问题,所以它应该是一个基本的答案。我一直只使用会话来完成用户登录系统,现在我想让用户在返回我的站点时,如果他们选择使用cookie,可以选择保持登录。我不确定这样做的最佳方式,但我有一个基本功能的小模型,我认为它可能在下面工作。请告诉我这看起来是否正确,或者我是否应该采取不同的做法。cookie很可能包含一个用户ID和一些加密密钥,它们在每次“登录”时都会重新生成 你在正确的轨道上;这就是大多数“记住我”实现的工作原理。我过去使用的是设置两个cookie,一个存储用户ID,另

我知道这是一个基本的问题,所以它应该是一个基本的答案。我一直只使用会话来完成用户登录系统,现在我想让用户在返回我的站点时,如果他们选择使用cookie,可以选择保持登录。我不确定这样做的最佳方式,但我有一个基本功能的小模型,我认为它可能在下面工作。请告诉我这看起来是否正确,或者我是否应该采取不同的做法。cookie很可能包含一个用户ID和一些加密密钥,它们在每次“登录”时都会重新生成


你在正确的轨道上;这就是大多数“记住我”实现的工作原理。

我过去使用的是设置两个cookie,一个存储用户ID,另一个包含验证用户ID的校验和。以下是一个例子:

//store website user id
setcookie('userid', $userid, time() + 2592000, "/");
//store checksum
setcookie('checksum', md5($userid."F%^WD&*^("), time() + 2592000, "/");
校验和是userid的salt md5散列,因此不能反向工程或修改它以反映另一个userid(如果没有校验和,可以很容易地更改“userid”cookie)

要恢复会话,只需检查Cookie并根据用户ID验证校验和(使用相同的“salt”):

//Restore stored user session
if (md5($_COOKIE["userid"]."F%^WD&*^(") == $_COOKIE["checksum"])
{
    //retrieve user again and store in session
}
//Restore stored user session
if (md5($_COOKIE["userid"]."F%^WD&*^(") == $_COOKIE["checksum"])
{
    //retrieve user again and store in session
}