Php 无法使用正确的cookie参数生成会话ID

Php 无法使用正确的cookie参数生成会话ID,php,session-cookies,Php,Session Cookies,我目前正在创建一个PHP登录系统,我想,正如研究所建议的,我会为此使用会话ID cookie。当然,我想让它尽可能安全,因此我将httponly cookie参数设置为true 现在的问题是,如果我在调用session_start()函数之前尝试设置会话cookie参数,它似乎根本不会创建会话id cookie,而如果我以相反的方式创建会话id cookie,则会创建会话id cookie。当然,如果我用另一种方法,参数就不会被设置 因此,为了clearify,这甚至不会生成会话ID cooki

我目前正在创建一个PHP登录系统,我想,正如研究所建议的,我会为此使用会话ID cookie。当然,我想让它尽可能安全,因此我将httponly cookie参数设置为true

现在的问题是,如果我在调用session_start()函数之前尝试设置会话cookie参数,它似乎根本不会创建会话id cookie,而如果我以相反的方式创建会话id cookie,则会创建会话id cookie。当然,如果我用另一种方法,参数就不会被设置

因此,为了clearify,这甚至不会生成会话ID cookie:

$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
    $cookieParams["path"], 
    $cookieParams["domain"], 
    $secure,
    $httponly);

session_start();
这确实会生成一个,但没有正确的参数。(我通过检查浏览器中的cookie信息确认了这一点)

我想不出为什么会发生这种情况,也不知道如何解决。 如果有人能帮我,那就太好了


提前谢谢

当您通过http而不是https加载页面时,无法将
$secure
参数设置为
true
。如果这样做,您将永远不会收到cookie,因为您刚刚指定cookie只能通过安全连接发送

因此,您需要使用默认值或手动将其设置为
false

$cookieParams = session_get_cookie_params();
session_set_cookie_params(
    $cookieParams["lifetime"],
    $cookieParams["path"], 
    $cookieParams["domain"], 
    false,    // $cookieParams["secure"] will also work if you have not modified php.ini to set it to true
    $httponly
);

session_start();

由于您是通过http而不是https加载页面,因此无法将
$secure
参数设置为
true
。如果这样做,您将永远不会收到cookie,因为您刚刚指定cookie只能通过安全连接发送

因此,您需要使用默认值或手动将其设置为
false

$cookieParams = session_get_cookie_params();
session_set_cookie_params(
    $cookieParams["lifetime"],
    $cookieParams["path"], 
    $cookieParams["domain"], 
    false,    // $cookieParams["secure"] will also work if you have not modified php.ini to set it to true
    $httponly
);

session_start();

您试图设置的值是什么,例如,
$secure
是什么?secure和httponly都是真的。我使用了他们在这里提供的示例,您是否通过https加载页面/域是否具有ssl证书?不只是基本的https。您尝试设置的值是什么,例如,
$secure
是什么?secure和httponly都是真的。我使用了他们在这里提供的示例,您是否通过https加载页面/域是否有ssl证书?不只是基本的http