我从 previous question 学到了很多关于 session 开始的知识.现在我想知道当文件包含在其他文件中时 session 锁定是如何发生的。假设我有:
页面.php
include('header.php');
...some html content....
include('sub_page.php');
...more html....
header.php:
session_start();
..save session vars...
..print web page header...
子页面.php
session_start();
...use session vars....
..print page content...
当我打开 page.php 时, session 是否会在 header.php 完成后立即解锁?还是它在整个 page.php 生命周期内都有效,所以 sub_page 的 session 被阻止了? sub_page 中的 session_start
是必须的吗?如果我每次处理完 session 数据时都 session_write_close
会更好吗? (尽管这意味着每次我想使用 session 变量时都要 session_start
ing)。
最佳答案
- 您应该只开始一次 session 。在您的示例中,只需要在 page.php 的第一行使用 session_start()
- session_start() 如果 session 之前已启动,将生成 E_NOTICE。您可以使用 @session_start() 忽略它。
- 如果您在输出 HTML 代码后使用 session_start(),它也会生成 E_NOTICE。
关于带有包含文件的 php session_start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914275/