带有包含文件的 php session_start

标签 php session

我从 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_starting)。

最佳答案

  1. 您应该只开始一次 session 。在您的示例中,只需要在 page.php 的第一行使用 session_start()
  2. session_start() 如果 session 之前已启动,将生成 E_NOTICE。您可以使用 @session_start() 忽略它。
  3. 如果您在输出 HTML 代码后使用 session_start(),它也会生成 E_NOTICE。

关于带有包含文件的 php session_start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6914275/

相关文章:

PHP/SQL 下一页 - 遵循指南,需要帮助

javascript - 如何在 JavaScript session cookie 中存储变量?

javascript - Citrix XenApp - 通过 CMD/DLL/Something 注销

PHP空数组值声明

java - 查询服务器

php - 将我表单中 mysql 选项标记的结果传递给 php 不起作用

php - 将 Gzip/Deflate 与 Codeigniter 结合使用以获得更好的性能

node.js - 如何将express-session与ldap js集成

PHP 警告权限在 session_start() 上被拒绝 (13)

javascript - 为演示目的创建站点的副本/ session