[ Index ]

PHP Cross Reference of phpBB-3.3.14-deutsch

title

Body

[close]

/vendor/guzzlehttp/guzzle/src/Cookie/ -> SessionCookieJar.php (source)

   1  <?php
   2  namespace GuzzleHttp\Cookie;
   3  
   4  /**
   5   * Persists cookies in the client session
   6   */
   7  class SessionCookieJar extends CookieJar
   8  {
   9      /** @var string session key */
  10      private $sessionKey;
  11      
  12      /** @var bool Control whether to persist session cookies or not. */
  13      private $storeSessionCookies;
  14  
  15      /**
  16       * Create a new SessionCookieJar object
  17       *
  18       * @param string $sessionKey        Session key name to store the cookie
  19       *                                  data in session
  20       * @param bool $storeSessionCookies Set to true to store session cookies
  21       *                                  in the cookie jar.
  22       */
  23      public function __construct($sessionKey, $storeSessionCookies = false)
  24      {
  25          parent::__construct();
  26          $this->sessionKey = $sessionKey;
  27          $this->storeSessionCookies = $storeSessionCookies;
  28          $this->load();
  29      }
  30  
  31      /**
  32       * Saves cookies to session when shutting down
  33       */
  34      public function __destruct()
  35      {
  36          $this->save();
  37      }
  38  
  39      /**
  40       * Save cookies to the client session
  41       */
  42      public function save()
  43      {
  44          $json = [];
  45          foreach ($this as $cookie) {
  46              /** @var SetCookie $cookie */
  47              if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
  48                  $json[] = $cookie->toArray();
  49              }
  50          }
  51  
  52          $_SESSION[$this->sessionKey] = json_encode($json);
  53      }
  54  
  55      /**
  56       * Load the contents of the client session into the data array
  57       */
  58      protected function load()
  59      {
  60          if (!isset($_SESSION[$this->sessionKey])) {
  61              return;
  62          }
  63          $data = json_decode($_SESSION[$this->sessionKey], true);
  64          if (is_array($data)) {
  65              foreach ($data as $cookie) {
  66                  $this->setCookie(new SetCookie($cookie));
  67              }
  68          } elseif (strlen($data)) {
  69              throw new \RuntimeException("Invalid cookie data");
  70          }
  71      }
  72  }


Generated: Mon Nov 25 19:05:08 2024 Cross-referenced by PHPXref 0.7.1