考虑以下场景:
- 一个服务器有2个页面,分别是:parent.php和child.php
- parent.php 设置包含高度机密信息的会话
- parent.php 然后通过 Ajax 调用 child.php 然后处理接收到的任何信息
谜团: child.php 需要与 parent.php 具有相同的会话状态才能提供 parent.php 请求的信息。
这可能吗?
只要您session_start()
在每个脚本的顶部调用,两个脚本都在同一个域中,并且会话cookie不限于子目录,您在$_SESSION
第一个请求中设置的变量仍然存在于第二个请求中。
会话通常通过设置和识别 cookie 来分配。有时也使用 GET 变量,但被认为是一种提升的安全威胁,因为 GET 变量在 URL 中可见。
当涉及到何时重用现有会话时,可以将 PHP 设置为一定程度的严格性。例如,您可以摆弄:
默认设置不是很严格。
当所有条件都满足时,调用 session_start() 时 PHP 将自动重新使用现有会话。