Php 为“生成具有密码哈希的令牌”;“记住我”;
我试图通过散列每个用户的电子邮件地址来为他们生成唯一的令牌,当他们单击“记住我”按钮时,我想将令牌写入数据库。由于某种原因,这段代码导致了错误,但我不确定错误在哪里Php 为“生成具有密码哈希的令牌”;“记住我”;,php,token,remember-me,Php,Token,Remember Me,我试图通过散列每个用户的电子邮件地址来为他们生成唯一的令牌,当他们单击“记住我”按钮时,我想将令牌写入数据库。由于某种原因,这段代码导致了错误,但我不确定错误在哪里 “根据用户的电子邮件生成一个随机令牌”——为什么不生成一个完全随机的令牌呢?使用openssl\u random\u pseudo\u bytes例如$expDate=date('Y-m-d H:i:s',strotime('+30天')可以替换前两行(但这不是你的问题)。“以毫秒为单位将日期设置为从现在开始的一个月”-顺便说一句,
“根据用户的电子邮件生成一个随机令牌”——为什么不生成一个完全随机的令牌呢?使用
openssl\u random\u pseudo\u bytes
例如$expDate=date('Y-m-d H:i:s',strotime('+30天')
可以替换前两行(但这不是你的问题)。“以毫秒为单位将日期设置为从现在开始的一个月”-顺便说一句,它不是以毫秒为单位的。我们从发布问题中的任何错误消息/日志开始,怎么样?
if (isset($_POST['remember']){
$expDate1 = time() + (3600*24*30); // Sets the date to a month from now in milliseconds -> used for cookie
$expDate2 = date('Y-m-d H:i:s', $expDate1); // Sets the date to a month from now in YYYY-MM-DD HH:ii:ss -> used for database
$token = password_hash($Email, PASSWORD_DEFAULT); // Generate a random token based on the user's email
$sql = "INSERT INTO RememberMe (userID, token, expDate) VALUES ('$userID', '$token', '$expDate2')";
$result = db_query($sql);
if ($result === false){
die("DIE!");
}
setcookie("monster", $token, $expDate1, "/");
}