<?php /********************************************************************* class.http.php Http helper. Peter Rotich <peter@osticket.com> Copyright (c) 2006-2013 osTicket 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; } } } ?>