当前位置: 首页 > 面试题库 >

如何在PHP中创建持久会话?

傅越
2023-03-14
问题内容

我曾经用session_start()PHP启动会话,但是当我的浏览器关闭时,该会话消失了。

如何使用PHP创建持续持续浏览器关闭的持久会话?


问题答案:

请参阅php.ini值session.cookie_lifetime。

默认值0意味着在浏览器关闭时结束会话。

您可以php.ini使用ini_set在开始会话之前直接在应用程序中覆盖此值或在应用程序中设置它。将其设置为大于此值0将导致会话在该持续时间内存活。

例如

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7);  // 7 day cookie lifetime
session_start();

上面的示例使会话cookie的设置从会话开始起的7天到期。

注意:
如果您从同一段代码开始所有网页的会话,则每次session_start()调用该会话都不会继续延长会话的有效期。cookie生存期是从第一次启动会话时开始设置的,而不是在后续请求时开始设置。如果要将会话的生存期从当前时间延长7天,请参见session_regenerate_id()。

另请注意:
如果您将session.gc_maxlifetime值设置为小于会话cookie长度的值,则可能会出现以下情况:用户5天未访问该站点,并且当他们返回时,会话cookie不再有效因为服务器上的数据已被删除。为了解决这个问题,您还应该将此会话数据的生存期设置为至少与cookie生存期一样长。如手册所述,可能需要对自定义session.save_path会话数据使用自定义项的时间长于默认值。因此,您的脚本可能如下所示:

ini_set('session.cookie_lifetime', 60 * 60 * 24 * 7);
ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 7);
ini_set('session.save_path', '/home/yoursite/sessions');
session_start();


 类似资料:
  • 因为正如我在Active MQ Artemis文档中看到的,持久值是一个布尔值,但在amqpnetlite库中它是一个uint,我的理解是,超过0的所有内容都应该是true,而0应该是false。 起初,这种行为非常奇怪:即使当Aretemis Web界面显示为持久队列时,一旦没有用户连接,它也会被删除。 我发现:ActiveMQ Artemis queue在关闭消费客户机后被删除,这描述了即使是

  • 参考Link,我使用JMS ActiveMQ SpringBoot创建了持久订阅者。我还使用UUID.randomUUID()生成了惟一的客户机ID。toString()。然而,在启动订户(接收器)时,应用程序抛出以下警告消息 请帮我删除上述警告信息。 Receiver.java 学生.java SendMessageApplication.java 主题发送消息.java

  • 我正在开发一个电子商务应用程序。为此,我想为每个客户创建一个会话,以维护他们的购物车信息。 如果它是一个普通的JavaEE项目,我会使用并将所有购物车信息添加到该会话中。 我的问题是对于EJB项目,为上述目的创建会话的过程是什么?

  • 问题内容: 我的.htaccess将所有请求重定向到。然后,PHP脚本检查请求的页面是否在其页面数组中。 如果没有,如何模拟错误404?我试过了,但是并没有导致我的404页面在出现时通过配置。 我是否认为重定向到错误404页面是错误的? 问题答案: 用于生成404页的最新答案(从PHP 5.4或更高版本开始)是使用: 并非绝对必要,但是可以确保您不会继续正常执行。

  • 问题内容: 尝试使用Selenium添加新的持久性Firefox配置文件。AFAIK在执行时,将使用一个临时文件生成一个新的配置文件。理想情况下,即使在创建者关闭后,此配置文件也应可用于后续流程。 问题 : 在Python代码中创建一个新的Firefox配置文件。这应该返回FirefoxProfile对象,该对象可与Selenium使用的Firefox Webdriver一起使用。 创建的配置文件

  • 嗨,我目前正在开发一个Android应用程序,该应用程序使用改进型来拨打网络电话。下面是关于我的需求的基本概述。