1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161:
<?php
class HTTPResponseCustom
{
const PROTOCOL = 'HTTP/1.1';
private static $status_list = array(
'101' => 'Switching Protocols',
'200' => 'OK',
'201' => 'Created',
'202' => 'Accepted',
'203' => 'Non-Authoritative Information',
'204' => 'No Content',
'205' => 'Reset Content',
'206' => 'Partial Content',
'300' => 'Multiple Choices',
'301' => 'Moved Permanently',
'302' => 'Found',
'303' => 'See Other',
'304' => 'Not Modified',
'305' => 'Use Proxy',
'306' => '(Unused)',
'307' => 'Temporary Redirect',
'400' => 'Bad Request',
'401' => 'Unauthorized',
'402' => 'Payment Required',
'403' => 'Forbidden',
'404' => 'Not Found',
'405' => 'Method Not Allowed',
'406' => 'Not Acceptable',
'407' => 'Proxy Authentication Required',
'408' => 'Request Timeout',
'409' => 'Conflict',
'410' => 'Gone',
'411' => 'Length Required',
'412' => 'Precondition Failed',
'413' => 'Request Entity Too Large',
'414' => 'Request-URI Too Long',
'415' => 'Unsupported Media Type',
'416' => 'Requested Range Not Satisfiable',
'417' => 'Expectation Failed',
'500' => 'Internal Server Error',
'501' => 'Not Implemented',
'502' => 'Bad Gateway',
'503' => 'Service Unavailable',
'504' => 'Gateway Timeout',
'505' => 'HTTP Version Not Supported');
private $last_ob_content_before_clean = '';
public function __construct($status_code = 200)
{
$this->set_status_code($status_code);
}
public function set_header($name, $value)
{
header($name . ': ' . $value);
}
public function set_default_attributes()
{
$this->set_header('Expires', '-1');
$this->set_header('Last-Modified', gmdate("D, d M Y H:i:s") . " GMT");
$this->set_header('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
$this->set_header('Pragma', 'no-cache');
}
public function redirect($url, $message = '', $message_type = MessageHelper::SUCCESS, $message_duration = 5)
{
if (!($url instanceof Url))
{
$url = new Url($url);
}
$url = $url->absolute();
if (!empty($message))
{
$this->set_cookie(new HTTPCookie('message', $message, time() + 3600));
$this->set_cookie(new HTTPCookie('message_type', $message_type, time() + 3600));
$this->set_cookie(new HTTPCookie('message_duration', $message_duration, time() + 3600));
}
header('Location:' . $url);
exit;
}
public function set_cookie(HTTPCookie $cookie)
{
setcookie($cookie->get_name(), $cookie->get_value(), $cookie->get_expiration_date(), $cookie->get_path(), $cookie->get_domain(), $cookie->get_secure(), $cookie->get_httponly());
}
public function delete_cookie($cookie_name)
{
$this->set_cookie(new HTTPCookie($cookie_name, '', -1));
}
public function clean_output()
{
$this->last_ob_content_before_clean = ob_get_contents();
ob_end_clean();
}
public function get_previous_ob_content()
{
return $this->last_ob_content_before_clean;
}
public function set_status_code($status_code)
{
if (isset(self::$status_list[$status_code]))
{
header(self::PROTOCOL . ' ' . $status_code . ' ' . self::$status_list[$status_code]);
}
}
}
?>