2016-09-18 37 views
0

PHP session data与特定网页或PHP文件关联吗?换句话说,如果一个会话是在foo.php中创建的,它是否可以从bar.php访问会话数据,假定它们既不引用另一个,也可以直接从Web浏览器访问它们。PHP会话是否与特定文件关联

如果它是特定于文件的,它如何与include()一起使用?例如,如果foo.php创建了一个会话,那么包含bar.php,那么bar.php中的代码可以访问会话数据吗?如果会话创建在bar.php?那么这些数据是否会特定于bar.phpfoo.php

+1

'sessions'在每个'HTTP request'访问中,你开始session_start会话。与您所在的文件无关 – DarkBee

+0

http://stackoverflow.com/questions/576535/cookie-path-and-its-accessibility-to-subfolder-pages – JOUM

+0

@JOUM所以PHP会话只与Cookie相关联(或URL参数)用于标识,而不是用cookie和文件或URL? – laef

回答

2

是的,会话数据在不同的文件和请求之间可用,即会话的整个点:提供HTTP协议没有的状态。你可以看看在会议作为Web服务器上的一个小的存储您的代码来存储数据有限。

如果您foo.php启动一个会话,然后包括bar.php,在bar.php代码确实将能够访问会话。如果您的bar.php执行session_start(),那么foo.php可以从此开始访问会话(所以在include()之后)。

请记住:会话对于特定浏览器和易失性来说是唯一的。即:关闭浏览器,会话将变为非活动状态,无法访问并过期(通常在30分钟后)。

注意: - 现代浏览器有能力重新连接会话。

+0

请记住,如果您的浏览器意外关闭,会话可以恢复。 –

+0

真实的现代浏览器有能力重新连接。谢谢。 – kathmann

1

会话数据在php的所有页面都可用。一般来说,我们在包含在所有文件中的文件(配置文件)中启动会话(session_start())。

所以,如果你没有一个共同的文件或不想全局定义,那么你需要在每个文件中启动session_start()。

0

我给bar.php或foo.php包含对方的答案。

  • 总是存在没有被列入,并通过浏览器中调用或外壳
  • 所有其他文件都包含在那之后(巫顺序是你)
  • 如果你有一个文件时,它第一个文件几乎就像合并一些代码块一样,没什么特别的。一个文件名为session_start
  • 后的会话存在于PHP
  • 所以,无论文件是现在还是以后包括访问会话数据
  • 但是,这一次确实session_start将抛出一个通知下一个文件,因为会话已经启动
  • 也是一个文件(或更好的在文件中的代码)可以做session_close和一些其他的东西,打开一个新的会话