1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace GuzzleHttp\Cookie;
- class SessionCookieJar extends CookieJar
- {
-
- private $sessionKey;
-
- private $storeSessionCookies;
-
- public function __construct(string $sessionKey, bool $storeSessionCookies = false)
- {
- parent::__construct();
- $this->sessionKey = $sessionKey;
- $this->storeSessionCookies = $storeSessionCookies;
- $this->load();
- }
-
- public function __destruct()
- {
- $this->save();
- }
-
- public function save(): void
- {
- $json = [];
-
- foreach ($this as $cookie) {
- if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
- $json[] = $cookie->toArray();
- }
- }
- $_SESSION[$this->sessionKey] = \json_encode($json);
- }
-
- protected function load(): void
- {
- if (!isset($_SESSION[$this->sessionKey])) {
- return;
- }
- $data = \json_decode($_SESSION[$this->sessionKey], true);
- if (\is_array($data)) {
- foreach ($data as $cookie) {
- $this->setCookie(new SetCookie($cookie));
- }
- } elseif (\strlen($data)) {
- throw new \RuntimeException('Invalid cookie data');
- }
- }
- }
|