当我们使用session_start()行时,有两种可能: 1.我们正在开始一个新的会话(这个方法通过一个cookie工作,它的过期时间的默认值为零,当会话结束时) 我们正在继续当前的会议。
另外,如果我们在其中一个php文件中使用函数session_set_cookie_params($ lifetime);这允许我们更改会话cookie的到期时间。
我的问题是,如果我们在会话开始session_set_cookie_params($ lifetime)之前写入另一个php文件;它会更新会话的cookie以使另一个$ life秒过期吗? (因为通常在再次设置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秒,然后再次杀死会话,然后再次...... 这是对的吗?
答案 0 :(得分:0)
我不确定你想要找到什么 - 但是,使用session和cookie:有几种方法可以制作cookie,但在你的情况下,我使用的是php,因为它是你试图设置cookie的php用。
Cookie是存储在客户端(您的计算机)上的数据,它具有唯一标识符,服务器可以在其中读取/访问Cookie。除了创建cookie的服务器之外,没有其他服务器可以访问cookie。
设置cookie往往使用三个参数实现:
setcookie(nameOfCookie, valueOfData, expire).
在您的情况下,您可能希望使用此方法:
setcookie("getUsername","kobo", 30);
在你的php脚本中抓取cookie:
$_COOKIE["getUsername"];
在任何时候服务器都会看到cookie的名称相同,但是使用不同的数据,它会覆盖它。
会话类似,但每次浏览器退出/关闭时都会“刷新”,并且必须再次通过安全协议。设置会话数据需要较少的论证,例如:
$_SESSION['username'] = "Kobo";
并检索数据:
echo $_SESSION['username'];
使用会话数据的问题是,在任何这些函数可以工作之前,您必须在脚本的开头使用session_start();
。