Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为“生成具有密码哈希的令牌”;“记住我”;_Php_Token_Remember Me - Fatal编程技术网

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, "/");
}