Skip to content

Instantly share code, notes, and snippets.

@CMCDragonkai
Created October 16, 2013 15:32
Show Gist options
  • Save CMCDragonkai/7009683 to your computer and use it in GitHub Desktop.
Save CMCDragonkai/7009683 to your computer and use it in GitHub Desktop.
PHP: Cookie Manager Class
<?php
class Cookies{
protected $options;
//setup some configuration
public function __construct(array $options){
$this->options = $options;
ob_start();
register_shutdown_function(array(&$this, 'flush_cookies'));
}
//automatically adds the prefix in
public function set_cookie($name = '', $value = '', $expire = ''){
if(!is_numeric($expire)){
$expire = time() - 86500;
}else{
$expire = ($expire > 0) ? time() + $expire : 0;
}
return setcookie($this->options['cookie_prefix'] . $name, $value, $expire, $this->options['cookie_path'], $this->options['cookie_domain'], $this->options['cookie_secure'], $this->options['cookie_httponly']);
}
public function get_cookie($index = ''){
return $this->fetch_from_array($_COOKIE, $this->options['cookie_prefix'] . $index);
}
public function delete_cookie($name = ''){
$name = $this->options['cookie_prefix'] . $name;
unset($_COOKIE[$name]);
return $this->set_cookie($name, '', '');
}
protected function fetch_from_array(&$array, $index = ''){
if(isset($array[$index])){
$value = $array[$index];
}elseif(($count = preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $index, $matches)) > 1){
$value = $array;
for ($i = 0; $i < $count; $i++){
$key = trim($matches[0][$i], '[]');
// Empty notation will return the value as array
if($key === ''){
break;
}
if(isset($value[$key])){
$value = $value[$key];
}else{
return NULL;
}
}
}else{
return NULL;
}
return $value;
}
/**
* Flushes the cookies that were in the output buffer.
*/
public function flush_cookies(){
ob_flush();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment