PHP会话更改名称

时间:2015-07-07 17:02:11

标签: php login session-cookies

我的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.3,则显示0.1为$ _SESSION变量未设置||| 0.2帐户没有显示登录的数据库。如果帐户已登录,则为||| 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 ......

我做错了什么?

1 个答案:

答案 0 :(得分:0)

移动session_name()以上设置

我怀疑可能是一个问题,然后我在下面发现了一些评论。

将您的会话名称移至您session_get_cookie_params()之上或可能远高于ini_set()

的位置

这不是我可以轻松测试的内容,但我会尝试session_set_cookie_params()的{​​{3}}提出以下建议:

  

我发现使用会话有点困难,因为文档并没有真正表示通过session_name()设置会话名称的必要性,以便session_set_cookie_params()可以使用。我在本文中找不到对session_name()的引用,如果不是熟悉会话的朋友,我的会话功能将是一个灾难性的混乱。

     

所以,实质上,对于任何想知道从哪里开始的人:在使用session_set_cookie_params()之前声明一个会话名称,否则你可能会激怒php以对你的网络服务器犯下一些暴行。

像这样:

function initiazaSesiune()
{
 $secure = 'SECURE'; 
 $httponly = 'true';

 session_name("test");  // Moved above any settings

// 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_start(); 
session_regenerate_id(true);

}