当我们使用 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 秒,然后再次终止会话,然后再次...... 这是对的吗???
我不确定你想找出什么 - 但是,对于会话和cookie:有多种方法可以制作cookie,但就你而言,我使用的是php,因为你尝试设置cookie的是php。
Cookie 是存储在客户端(您的计算机)上的数据,它具有唯一的标识符,服务器可以读取/访问 Cookie。 除了创建 cookie 的服务器之外,没有其他服务器可以访问 cookie。
设置 cookie 往往通过三个参数来实现:
setcookie(nameOfCookie, valueOfData, expire).
在您的情况下,您可能想使用这种方法:
setcookie("getUsername","kobo", 30);
在你的 php 脚本中获取 cookie:
$_COOKIE["getUsername"];
任何时候服务器发现cookie名称相同,但数据不同,就会覆盖它。
Session 类似,但是每次浏览器退出/关闭时它都会被“刷新”,并且必须再次通过安全协议。 设置会话数据需要较少的参数,例如:
$_SESSION['username'] = "Kobo";
并检索数据:
echo $_SESSION['username'];
使用会话数据的问题是,您必须在脚本开头使用
session_start();
,然后这些函数才能工作。
访问第一个文件后,会话应在 30 秒后结束。如果我在 30 秒之前访问第二个文件,它是否会更新 cookie 以再存活 30 秒?如果没有你能解释一下为什么吗???
不,有效期不会延长。我刚刚遇到了类似的问题,并使用了可以显示 cookie(名称、值、过期日期) 的边缘浏览器 我发现延长时间的唯一方法是之后
$lifetime=30;
session_set_cookie_params($lifetime);
你打电话
setcookie(session_name(), session_id(),time() + {extended seconds})