我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

session_start();

if(! isset(

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

session_start();

if(isset(

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

session_start();

if(! isset(

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

<*>

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

<*>

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name']; // will this line throw an error?

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name'])) { $name =

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

session_start();

if(! isset(

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

<*>

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

<*>

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name']; // will this line throw an error?

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name']; } else { echo 'Name is not set'; exit; } // bunch of code here echo 'Name is ', $name;

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

我一直想知道,如果PHP会话在执行脚本的过程中超时,那么在脚本执行结束之前,$ _SESSION数组的内容是否仍然可用?例如:

<*>

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>SESSION['name']; // will this line throw an error?

将会话变量复制到本地作用域是否切实可行,以便稍后在脚本中读取它们而不必继续检查会话超时?类似的东西:

<*>
有帮助吗?

解决方案

不要担心这样的事情。会议什么都不会发生。它由 sessioni_start()初始化, $ _ SESSION 将始终在您的脚本中可用。

其他提示

每次打开会话时都会重置默认的三小时会话生存期(请参阅 session_cache_expire ),因此会话在请求中间超时的唯一方法是请求需要三个小时才能处理。默认情况下,PHP在30秒后请求超时,因此在请求期间没有会话到期的危险。此外, $ _ SESSION 变量在请求中间不会突然改变。它会在会话开始时填充,就是这样。

变量在初始请求时被复制到$ _SESSION全局变量中,因此它与将其复制到局部变量具有相同的效果。

但是,为清楚起见,将其复制到局部变量是有意义的。特别是如果您打算多次使用该变量。在整个地方读取具有$ _SESSION ['variable']的代码可能很困难。

您需要了解的是会话如何运作。使用$ _SESSION超级全局访问脚本的客户端只知道属于它们的会话的密钥(存储在Cookie / URL中)。这意味着会话数据本身与客户端无关。如果您拥有要使用的会话数据的密钥,则可以使用它。较旧版本的PHP存在一些安全漏洞,因为会话存储在易于访问的某个地方(我不记得细节)。

基本上,如果你在PHP脚本中有会话ID,你可以访问该会话,除非机器上的内存被刷新/硬盘损坏(即计算机重启/设备故障)。

希望这会有所帮助,否则请访问php.net并深入了解会话的工作方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top