【发布时间】:2015-09-25 07:39:51
【问题描述】:
我的 php 登录系统有一些问题。
我正在尝试以更好的方式开始会话。我遵循了互联网上的教程,代码听起来像这样:
function initiazaSesiune()
{
$secure = 'SECURE';
$httponly = 'true';
// Fortam folosirea COOKIE
if (ini_set('session.use_only_cookies', 1) === FALSE) {
echo 'ERROR NO COOKIE';
exit();
}
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"],
$cookieParams["domain"],
$secure,
$httponly);
session_name("test");
session_start();
session_regenerate_id(true);
}
我的登录页面是这样的:
1) 检查是否已登录(如果 $_SESSION['logged_in'] 变量不为 1,则显示 0.1 ||| 如果变量 $_SESSION['logged_in'] 不为 1(真)||| 0.3,如果在数据库中帐户没有' t 显示已登录。||| 1 如果帐户已登录
2) 如果用户凭据有效,则设置 $_SESSION
3) 再次调用 1) 中的函数。
登出页面:
session_start();
session_unset();
session_destroy();
session_write_close();
当我使用有效凭据时,登录页面显示如下: 0.11 表示用户在开始认证时没有登录,程序设置插入的值是因为它们是正确的,而 1 是因为保存的值与数据库中的值相比是有效的。
如果我刷新此页面,我会再次得到 0.11,这是不正确的,因为当我再次启动该过程时用户已登录。它应该显示为 11。
如果我消除 session_name 和 session_regenerate_id,一切正常。首先显示 0.11,然后显示 11。
如果我输入 sestion_name 和 sesion_regenerate_id 并删除 session_set_cookie_params 一切正常,首先显示 0.11,然后显示 1...
我做错了什么?
【问题讨论】:
标签: php login session-cookies