【问题标题】:PHP session_cache_limiter(), session_cache_expire() and session_start()PHP session_cache_limiter()、session_cache_expire() 和 session_start()
【发布时间】:2010-01-14 19:28:51
【问题描述】:

我在 PHP 5.1.0 脚本的顶部使用 session_cache_limiter() 和 session_cache_expire(),就在 session_start() 之前。

来自 PHP 帮助:

[...] 你需要打电话 session_cache_limiter() 对于每个 请求(之前 session_start() 是 调用)。

但是如果我不调用 session_start() 会怎样? session_cache_limiter() 和 session_cache_expire() 会在没有 session_start() 之后工作吗?

谢谢!

【问题讨论】:

    标签: php session caching


    【解决方案1】:

    不,ssession_cache_limiter 和 session_cache_expire 只是修改 php 用于 session.cache_limiter 和 session.cache_expire 的值(在 session_start() 中生成会话标头时使用)-这些函数实际上并不自己发送标头,否则你在 session_start() 之前无法使用它们

    【讨论】:

      【解决方案2】:

      示例直接取自"PHP: session_cache_limiter" off php.net

      <?php
      /* set the cache limiter to 'private' */
      session_cache_limiter('private');
      $cache_limiter = session_cache_limiter();
      echo "The cache limiter is now set to $cache_limiter<br />";
      ?>
      

      以下引自原文的部分是错误的。有关更正信息,请参阅下面的 @eCaroth 评论。

      另外,这取决于你对 work 的定义,函数将是 如果不调用session_start(),则不会抛出错误, 但那毫无意义。这些功能的目的是用于会话 为了使用会话,您需要调用 session_start()

      【讨论】:

      • 如果 session_start() 没有被调用,session_cache_limiter() 是否仍然发送标头?
      • 在上面给定的示例中,它的值'private' 评估为发送的特定标头,我想很简单,因为该示例用于更改发送的标头而不调用 @987654326 @
      • Anthony,该函数只是修改了 session.cache_limiter 的值(在每次请求时以 INI 文件中指定的默认值开始),与调用 ini_set('session.cache_limiter', '私人的')。原因必须在 session_start() 之前调用,因为 session_start() 输出会话页面所需的所有标头,包括缓存标头(由 session.cache_limiter 值确定)
      • 感谢您提供一些我不知道的见解。
      猜你喜欢
      • 2011-01-05
      • 1970-01-01
      • 2012-08-01
      • 2015-05-15
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多