【发布时间】:2014-01-01 19:58:18
【问题描述】:
当我们使用 session_start() 行时,有两种可能性: 1.我们正在开始一个新的会话(这个方法通过一个cookie工作,它的过期时间默认为零,当会话结束时) 2. 我们正在继续当前的会话。
此外,如果我们在其中一个 php 文件中使用函数 session_set_cookie_params($lifetime);这允许我们更改会话 cookie 的过期时间。
我的问题是,如果我们在会话开始之前写入另一个 php 文件 session_set_cookie_params($lifetime);它是否会更新会话的 cookie 以再过期 $lifetime 秒? (因为通常在再次设置 cookie 时会更新 cookie)
这里有一些 php 文件演示了我要问的内容:
第一个文件:
<?php
$lifetime=30;
session_set_cookie_params($lifetime);
session_start();
$_SESSION["username"] = "kobe" ;
?>
第二个文件:
<?php
$lifetime=30;
session_set_cookie_params($lifetime);
session_start();
echo "Username = " . $_SESSION["username"];
?>
访问第一个文件后,会话应该在 30 秒后结束。如果我将在 30 秒之前访问第二个文件,它会更新 cookie 以再存活 30 秒吗?如果不是你能解释为什么吗???
编辑:根据我的检查,我了解到服务器仅在首次初始化会话时才向浏览器发送响应以构建会话的 cookie。现在将使用的唯一生命周期参数是在用户将访问的第一个文件中。 从那时起,会话将在每个生命周期内重新启动??是这样吗???
演示:假设用户访问第一个文件,该文件说要构建一个持续 30 秒的会话 cookie。然后他访问第二个文件,它说生命周期为 30 秒的行将被忽略,直到会话结束的计数是我们第一次访问第一个文件的位置。在那 30 秒之后,它将开始再计算 30 秒,然后再次终止会话,然后再次... 是这样吗???
【问题讨论】: