我正在尝试创建一个登录系统
1)用户输入电子邮件和pw 2)电子邮件和pw针对DB进行验证3)令牌放在“登录”表中并通过cookie 4)本地存储在需要登录的所有页面上,烹饪令牌为检查数据库中的令牌。
考虑到这一点,我试图用下面的代码覆盖$_COOKIE['stored_login_token']
,但它似乎不起作用。基本上,我有一个名为'logins'的表,它存储用户ID,令牌,登录日期和令牌到期日期。下面的代码正确更新数据库中随机生成的令牌,但在重定向到network_updates.php之前不会覆盖cookie。
//Login Script
$mysqli2 = new mysqli($db_host,$db_username,$db_password,$db_name);
$login_post_signup_token = generateRandomString();
$expiration_date = date('Y-m-d H:i:s', strtotime('+365 days'));
$suloginid = '';
$stmnt2 = $mysqli2->prepare("INSERT INTO logins (id, user, loginDate, token, expiration) VALUES (?, ?, ?, ?, ?)");
$stmnt2->bind_param('issss',
$suloginid,
$uuid,
$date,
$login_post_signup_token,
$expiration_date);
$stmnt2->execute();
$stmnt2->close();
$mysqli2->close();
setcookie(
"stored_login_token",
$login_post_signup_token,
time() + (10 * 365 * 24 * 60 * 60),
'/'
);
header('Location: network_updates.php');
exit();
我在setcookie()代码上面有几个“if”语句:
if (mysqli_num_rows($grabuserinfo) < 1) {
header('Location: index.php?login=invalidemail');
mysqli_close($mysqlicon);
exit();
}
但我不认为这应该是问题的根源。
另外,我创建了一个名为“updatecookie.php”的页面来测试一般只更新cookie,页面上唯一的代码是:
setcookie('stored_login_token','temp123',time()+3600,'/');
header('Location: http://iseyoo.com/dev/index.php');
这也不会覆盖cookie。这可能是服务器端的事吗?