写会话从一页或所有页开始?

Posted

技术标签:

【中文标题】写会话从一页或所有页开始?【英文标题】:Write session start on 1 page or all pages? 【发布时间】:2011-10-31 01:34:08 【问题描述】:

所有教程都说要开始会话。他们没有说是否应该在网站上的所有页面中,或者一些,或者只有 1 个。

如果它只有 1 页,它必须是主页吗?还是我正在制作的带有将会话 ID 放入数据库的表单的页面?如果访问者从未访问过带有会话 ID 的页面,但他们在网站上,他们是否还有会话 ID?

【问题讨论】:

【参考方案1】:

你需要声明 session_start();如果您想从 $_SESSION 获取数据或将数据存储到这些特定页面中的 $_SESSION 中,则在每个页面中。如果您不需要与 $_SESSION 交互,那么您不必声明 session_start().@hmwhat

【讨论】:

【参考方案2】:

为了完整起见,您可以选择在所有页面上写session_start();,只写一个或不写。让我解释一下。

您需要在需要访问 $_SESSION 变量的每个脚本中启动会话,但您可以创建一个文件 headers.php 并将所有重复代码包括 session_start();

如果您的应用程序中的所有内容都需要访问$_SESSION,您可以忘记使用session_start();,只需在您的php.ini 文件中设置session.auto_start = 1。您将能够访问$_SESSION,而无需之前写session_start();

More here

【讨论】:

【参考方案3】:

在访问(或创建)任何会话数据之前,您需要将它放在需要访问会话数据的每个页面中。

见:http://php.net/manual/en/function.session-start.php

【讨论】:

所以我会把会话开始放在网站每个页面的顶部,然后我会把它放在将会话 ID 放入 mysql 数据库的代码中?所以会话开始应该在那些页面上写 2 次? 没有。每页只需要一次,但在访问数据之前。【参考方案4】:

任何要访问会话变量的东西都需要启动会话。

所以除非你有一个不依赖于会话的 php 页面,否则每个页面都需要它。

【讨论】:

以上是关于写会话从一页或所有页开始?的主要内容,如果未能解决你的问题,请参考以下文章

将对象从一页移动到另一页?

Laravel 会话突然被破坏

快速登录会话仅持续一页视图

我可以将 Twig 块从一页过滤到另一页吗?

REST风格

数组作为会话变量