/**
  * 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));
 }
예제 #2
0
 /**
  * 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']));
 }
예제 #3
0
 /**
  * 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();
 }