0

我正在尝试创建一个登录系统,其中

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。这可能是服务器端的东西吗?

4

0 回答 0