예제 #1
0
파일: Serve.php 프로젝트: rsids/bright_api
 public function serveSpecial($type)
 {
     switch ($type) {
         case Serve::$SPECIAL_403:
             if (!isset($_SERVER['REDIRECT_STATUS']) || $_SERVER['REDIRECT_STATUS'] != 403) {
                 $_SERVER['REDIRECT_STATUS'] = 403;
                 header('Status: 403 Forbidden');
                 header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
             }
             // Include 403
             $bright_uri = USEPREFIX ? '/' . $_SESSION['language'] . '/403' : '/403';
             $nodes = $this->_router->getTreeNodes($bright_uri);
             $this->servepage($nodes);
             break;
         case Serve::$SPECIAL_404:
             if (isset($_SERVER['REDIRECT_STATUS']) && $_SERVER['REDIRECT_STATUS'] == 403) {
                 // 403 requested, but no 403 error page defined
                 exit;
             }
             if (!isset($_SERVER['HTTP_REFERER'])) {
                 $_SERVER['HTTP_REFERER'] = 'unknown';
             }
             $bright_log = date('r') . ': ' . $_SERVER['REQUEST_URI'] . ' resulted in a 404, came from: ' . $_SERVER['HTTP_REFERER'];
             Log::addTo404Log($bright_log);
             if (!isset($_SERVER['REDIRECT_STATUS']) || $_SERVER['REDIRECT_STATUS'] != 404) {
                 $_SERVER['REDIRECT_STATUS'] = 404;
                 header('Status: 404 Not Found');
                 header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
             }
             // Fix for beluga server, THIS SHOULD NEVER HAPPEN!
             if (!array_key_exists('language', $_SESSION)) {
                 error_log('LANGUAGE NOT SET');
                 error_log(var_export($_SESSION, true));
                 $this->_setLanguage();
             }
             // Include 404
             $bright_uri = USEPREFIX ? '/' . $_SESSION['language'] . '/404/' : '/404/';
             $nodes = $this->_router->getTreeNodes($bright_uri);
             $this->servepage($nodes);
             break;
     }
 }