Newer
Older
<?php
/*********************************************************************
class.http.php
Http helper.
Peter Rotich <peter@osticket.com>
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
http://www.osticket.com
Released under the GNU General Public License WITHOUT ANY WARRANTY.
See LICENSE.TXT for details.
vim: expandtab sw=4 ts=4 sts=4:
**********************************************************************/
class Http {
function header_code_verbose($code) {
switch($code):
case 200: return '200 OK';
case 201: return '201 Created';
case 204: return '204 NoContent';
case 400: return '400 Bad Request';
case 401: return '401 Unauthorized';
case 403: return '403 Forbidden';
case 404: return '404 Not Found';
case 405: return '405 Method Not Allowed';
case 416: return '416 Requested Range Not Satisfiable';
default: return '500 Internal Server Error';
endswitch;
}
function response($code,$content,$contentType='text/html',$charset='UTF-8') {
header('HTTP/1.1 '.Http::header_code_verbose($code));
header('Status: '.Http::header_code_verbose($code)."\r\n");
header("Connection: Close\r\n");
header("Content-Type: $contentType; charset=$charset\r\n");
header('Content-Length: '.strlen($content)."\r\n\r\n");
print $content;
exit;
}
function redirect($url,$delay=0,$msg='') {
$iis = strpos($_SERVER['SERVER_SOFTWARE'], 'IIS') !== false;
@list($name, $version) = explode('/', $_SERVER['SERVER_SOFTWARE']);
// Legacy code for older versions of IIS that would not emit the
// correct HTTP status and headers when using the `Location`
// header alone
if ($iis && version_compare($version, '7.0', '<')) {
header("Refresh: $delay; URL=$url");
}else{
header("Location: $url");
}
exit;
}
function download($filename, $type, $data=null) {
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header('Content-Type: '.$type);
$user_agent = strtolower ($_SERVER['HTTP_USER_AGENT']);
if (strpos($user_agent,'msie') !== false
&& strpos($user_agent,'win') !== false) {
header('Content-Disposition: filename="'.basename($filename).'";');
} else {
header('Content-Disposition: attachment; filename="'
.basename($filename).'"');
}
header('Content-Transfer-Encoding: binary');
if ($data !== null) {
header('Content-Length: '.strlen($data));
print $data;
exit;
}
}