何时在PHP中创建会话(某种特定情况)?

何时在PHP中创建会话(某种特定情况)?,php,session,Php,Session,我有大量的页面,每个页面都使用一个通用的页眉/页脚。我的愿望是保持页眉和页脚的标准,不管用户在哪个页面上 要访问管理功能,用户按下标题底部的管理链接。我希望此管理登录链接在用户登录后更改为注销链接 如果我在标题中使用session\u start(),那么每个页面都将有一个会话。有人告诉我(我不确定这是不是真的),总是开着会议是不好的做法 更糟糕的是,我的许多页面都使用会话(特别是所有的管理会话),如果您尝试在发送标题后调用start\u session()(这显然是因为在运行页面内容脚本部分之

我有大量的页面,每个页面都使用一个通用的页眉/页脚。我的愿望是保持页眉和页脚的标准,不管用户在哪个页面上

要访问管理功能,用户按下标题底部的管理链接。我希望此管理登录链接在用户登录后更改为注销链接

如果我在标题中使用
session\u start()
,那么每个页面都将有一个会话。有人告诉我(我不确定这是不是真的),总是开着会议是不好的做法

更糟糕的是,我的许多页面都使用会话(特别是所有的管理会话),如果您尝试在发送标题后调用
start\u session()
(这显然是因为在运行页面内容脚本部分之前解析了我的公共标题),那么这就是一个错误

到目前为止,我一直在需要会话的页面上标题的require行之前调用
start\u session()
,但是如果标题现在启动会话,那么这将成为一个错误


如果我需要知道管理员何时在公共头代码中登录,我如何处理会话创建?我看错了吗?

一般来说,你是在重新发明轮子。不使用CMS来完成这些任务是浪费时间和精力。具体而言,
ob_start()
是你的朋友。

一般来说,你是在重新发明轮子。不使用CMS来完成这些任务是浪费时间和精力。具体来说,
ob_start()
是你的朋友

有人告诉我(我不确定这是不是真的),总是开着会议是不好的做法

这是非常错误的。StackOverflow、谷歌、Facebook等都将在没有始终在线会话的情况下停止运行

有人告诉我(我不确定这是不是真的),总是开着会议是不好的做法


这是非常错误的。StackOverflow、Google、Facebook等都将停止运行,如果没有始终打开的会话。

有一种简单的方式来查看会话。如果用户所在的页面需要会话,请使用会话。即使用户所在的页面不需要会话,如果该页面是用户在会话后到达的页面,也可以使用会话它已启动,可以合理地假设用户将从该页面转到另一个需要会话的页面,请维护会话。不要一直启动和停止会话。只是,根据经验,在需要会话之前不要启动会话,在您确信用户不再需要会话时结束会话给他们的访问打电话。

有一种查看会话的简单方法。如果用户所在的页面需要会话,请使用会话。即使用户所在的页面不需要会话,如果该页面是用户在会话启动后到达的页面,则可以合理地假设用户将从该页面转到另一个需要会话的页面恢复会话,维护会话。不要一直启动和停止会话。只是,根据经验,在需要会话之前不要启动会话,在您确信用户在访问期间不再需要会话时结束会话

有人告诉我,总是开着会议是不好的做法

是的。只有在您确实需要时才开始您的课程。
否则,它将使您的网站不必要的缓慢,禁止浏览器缓存您的网页时,可能等

虽然您不能在没有会话的情况下为注册用户提供服务,但对站点的所有其他请求(特别是来自搜索引擎机器人程序的请求)都不需要会话支持,也没有理由启动它

如何处理会话创建

这是一个非常简单的解决方案。
仅在两种情况下调用会话_start():

  • 当用户实际登录时
  • 脚本收到会话标识符时(表示有活动会话正在运行)
因此,只需在检查用户密码的代码之后添加session_start()调用,并以这种方式修改所有其他调用

if (isset($_REQUEST[session_name()])) session_start();
有人告诉我,总是开着会议是不好的做法

是的。只有在您确实需要时才开始您的课程。
否则,它将使您的网站不必要的缓慢,禁止浏览器缓存您的网页时,可能等

虽然您不能在没有会话的情况下为注册用户提供服务,但对站点的所有其他请求(特别是来自搜索引擎机器人程序的请求)都不需要会话支持,也没有理由启动它

如何处理会话创建

这是一个非常简单的解决方案。
仅在两种情况下调用会话_start():

  • 当用户实际登录时
  • 脚本收到会话标识符时(表示有活动会话正在运行)
因此,只需在检查用户密码的代码之后添加session_start()调用,并以这种方式修改所有其他调用

if (isset($_REQUEST[session_name()])) session_start();

任何有用户管理的网站都会在每个页面上使用会话\ cookies。哦,我肯定有一些网站使用了一些疯狂的替代方法。http是无状态的,我想不出替代方法。你可以这样做,以便网站中的每个链接都包含会话数据作为GET参数。我已经看到了,这听起来可能很可怕。没有理由这么做如果你不需要的话,可以创建一个会话。CDN的内容就是这样工作的。任何有用户管理的网站都会在每个页面上使用会话\ cookies。哦,我肯定有一些网站使用了疯狂的替代方法。http是无状态的,我想不出替代方法。你可以这样做,网站中的每个链接都会包含会话数据作为GET参数呃。我已经看到了,虽然听起来很可怕。如果你不需要,就没有理由开始一个会话。CDN的内容就是这样工作的。