2013-06-26 158 views
0

考虑以下情形:会话共享在PHP

  1. 有在服务器2页,分别是:parent.php和child.php
  2. parent.php设置包含高度隐秘信息
  3. 会话然后
  4. parent.php通过Ajax调用child.php那么无论信息接收

谜过程: child.ph p需要具有与parent.php相同的会话状态,以便提供请求的parent.php信息。

这可能吗?

+10

你是指在浏览器中通过Ajax?如果这两个页面位于同一个域中,则在同一目录中,会话将始终自动结转。 –

+2

这应该是透明的。你甚至不需要做任何事情。 –

+2

我很笨。我现在知道了。 –

回答

3

只要您在每个脚本的顶部调用session_start(),这两个脚本位于同一个域中,并且会话cookie不局限于子目录,则在第一个请求中您在$_SESSION中设置的变量将仍然存在在第二。

+0

因为他们之间的Ajax调用,他们不是有不同的实例吗?如果第一页在http://www.myserver.com/dir1/parent.php,而另一个在http://www.myserver.com/dir2/subdir/parent.php中呢? –

+0

只要满足上述要求,无论请求是否通过AJAX进行,以及它们是否连续,它们都会共享一个会话。除非明确删除,否则存储在会话中的变量将在会话的整个生命周期中保持不变。 – rebroken

+0

现在正在工作。谢谢!已提高+1:D –

0

会话通常通过设置和识别Cookie来分配。 GET变量有时也被使用,但被认为是提升的安全威胁,因为GET变量在URL中可见。

关于何时重新使用现有会话,PHP可以设置为一定的严格等级。你可以,例如拨弄:

  • cookie生存
  • Cookie域设置
  • Cookie路径
  • 如果IP需要每次
  • 是相同的,如果用户代理需要每次都一样

默认设置不是很严格。

当满足所有条件时,当session_start()被调用时,PHP将自动重新使用现有会话。

+0

您能举一个常用设置的例子来实现吗?现在我的默认设置是cookie_path ='/'和cookie_domain ='' –