/** * Set a normal, unencrypted Cookie * * @param string $name The cookie name * @param string $value The cookie value * @param int|string $time The duration of the cookie; * If integer, should be UNIX timestamp; * If string, converted to UNIX timestamp with `strtotime`; * @param string $path The path on the server in which the cookie will be available on * @param string $domain The domain that the cookie is available to * @param bool $secure Indicates that the cookie should only be transmitted over a secure * HTTPS connection to/from the client * @param bool $httponly When TRUE the cookie will be made accessible only through the HTTP protocol * @return void */ public function setCookie($name, $value, $time = null, $path = null, $domain = null, $secure = null, $httponly = null) { $this->response->setCookie($name, array('value' => $value, 'expires' => is_null($time) ? $this->config('cookies.lifetime') : $time, 'path' => is_null($path) ? $this->config('cookies.path') : $path, 'domain' => is_null($domain) ? $this->config('cookies.domain') : $domain, 'secure' => is_null($secure) ? $this->config('cookies.secure') : $secure, 'httponly' => is_null($httponly) ? $this->config('cookies.httponly') : $httponly)); }
/** * Test delete cookie by name and custom props */ public function testDeleteCookieByNameAndCustomProps() { $r = new Slim_Http_Response(); $r->setCookie('foo', 'bar'); $r->setCookie('abc', '123'); $r->deleteCookie('foo', array('secure' => true, 'httponly' => true)); $this->assertEquals(1, preg_match("@abc=123\nfoo=; expires=.*; secure; HttpOnly@", $r['Set-Cookie'])); }
/** * Save session * @param int $status * @param array $header * @param string $body * @return array[status, header, body] */ protected function saveSession(&$env, $status, $header, $body) { $r = new Slim_Http_Response($body, $status, $header); $value = Slim_Http_Util::encodeSecureCookie(serialize($_SESSION), $this->settings['expires'], $this->settings['secret'], $this->settings['cipher'], $this->settings['cipher_mode']); if (strlen($value) > 4096) { fwrite($env['slim.errors'], 'WARNING! Slim_Middleware_SessionCookie data size is larger than 4KB. Content save failed.'); } else { $r->setCookie($this->settings['name'], $value, $this->settings['expires'], $this->settings['path'], $this->settings['domain'], $this->settings['secure'], $this->settings['httponly']); } return $r->finalize(); }