我正在尝试创建一个登录系统,其中
1) 用户输入电子邮件和密码 2) 电子邮件和密码针对 DB 进行验证 3) 令牌被放入“登录”表并通过 cookie 本地存储 4) 在所有需要登录的页面上,cookied 令牌被检查数据库中的令牌。
考虑到这一点,我试图$_COOKIE['stored_login_token']
用下面的代码覆盖,但它似乎不起作用。基本上,我有一个名为“登录”的表,它存储用户 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。这可能是服务器端的东西吗?