KAVALEK.NET 
-Blog
Linux Web development C/C++ Python LaTeX Rallye Ostatní
-Projekty
PyGaM PHP WIS Class PHP Atom Class
-Webdesign
Nabídka Reference
-Ostatní
Aktuality Odkazy Informace
-Osobní
Kontakt CV
-Intranet
Mail server Print server Security camera

KUBUNTU
XHTML Valid
Smarty
jQuery
View Tomáš Kavalek's profile on LinkedIn

Web development: Dynamická chybová stránka (PHP a mod_rewrite)

Zobrazit obsah
Zobrazit komentáře | Zobrazit pouze komentáře

Zdrojový kód chybové stránky

Následující zdrojový kód dynamické chybové stránky obsahuje rozšířenou XHTML hlavičku, aby výsledek odpovídal standardu W3C. Samotný skript, v části okomentované jako Get SERVER variables, převezme od serveru údaje potřebné pro zpracování chyby. Hlavním a klíčovým je $redirect_status, proměnná, která obsahuje číslo chyby. Podle této chyby se generuje obsah výsledné stránky. Určitě by šel skript zkrátit, přepsat jinak a jednoduše, ale plně vyhovuje účelu a rychlost zde není podstatná. Za úvahu by možná stálo odstranění redundantních konstrukcí. Použitá chybová hlášení jsou v angličtině, protože jsem měl problém nalézt vhodná chybová hlášení v češtině a nechtělo se mě nějaké krkolomné vymýšlet. Samozřejmě je možné další chybové zprávy přidávat, případně dokonce ubírat.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  <meta name="copyright" content="(c) kavalek.net 2006" />
  <meta name="author" content="(c) Kavalek Tomáš; e-mail: tomas.kavalek@gmail.com" />
  <meta lang="cs" name="description" content="KAVALEK.NET" />
  <link rel="home" href="http://kavalek.net" />
  <link rel="icon" href="/favicon.png" type="image/png" />
  <link rel="stylesheet" type="text/css" media="screen" href="/css/error.css" />
  <title>KAVALEK.NET</title>
 </head>
<body>
 <div class="logo" onclick="location.href='http://kavalek.net/';">
  <span class="kavalek">KAVALEK</span>.<span class="net">NET</span>
 </div>
 <div class="error">
<?php
  // Setup admin e-mail
  $admin_email = "tomas@kavalek.net";
  
  // Get SERVER variables
  $redirect_status  = $_SERVER["REDIRECT_STATUS"];
  $http_referer     = $_SERVER["HTTP_REFERER"];
  $request_uri      = $_SERVER["REQUEST_URI"];
  $remote_addr      = $_SERVER["REMOTE_ADDR"];
  $server_name      = $_SERVER["SERVER_NAME"];
  
  // URL
  $request_url      = "http://" . $server_name . $request_uri;
  $request_link     = "<a href=\"" . $request_url . "\" title=\""
                    . $request_url . "\">" . $request_url . "</a>";
  
  // Common message for all messages
  $common_message = "<p>\n"
                  . "If this problem persists please report it by sending an e-mail to"
                  . " <a href=\"mailto:" . $admin_email . "?Subject=Error_"
                  . $redirect_status . "__" . $request_url . "\" title=\"E-mail\">$admin_email</a>"
                  . " mentioning the error message received and the page you were trying to"
                  . " reach. We are sorry for any inconvenience caused and we will do all we"
                  . " can to fix the error as soon as possible."
                  . "</p>\n";

  // Error messages
  switch($redirect_status) {
    case 400 : $error_name = "Error 400 - Bad Request";
               $error_description = "<h1>Bad Request</h1>\n"
                                    . "<p>Error 400</p>\n"
                                    . "<p>\n"
                                    . "The URL that you requested (" . $request_link
                                    . "), was a bad request.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;


    case 401 : $error_name = "Error 401 - Unauthorised";
               $error_description = "<h1>Authorization Required</h1>\n"
                                    . "<p>Error 401</p>\n"
                                    . "<p>\n"
                                    . "The URL that you requested (" . $request_link 
                                    . "), requires pre-authorization to access.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;

    case 403 : $error_name = "Error 403 - Access Forbidden";
               $error_description = "<h1>Access Forbidden</h1>\n"
                                    . "<p>Error 403</p>\n"
                                    . "<p>\n"
                                    . "Access to the URL that you requested (" . $request_link 
                                    . "), is forbidden.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;
    
    case 404 : $error_name = "Error 404 - Page Not Found";
               $error_description = "<h1>File Not Found</h1>\n"
                                    . "<p>Error 404</p>\n"
                                    . "<p>\n"
                                    . "We are sorry but the page you are looking for (" . $request_link 
                                    . ") cannot be found.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;

    case 408 : $error_name = "Error 408 - Request Timeout";
               $error_description = "<h1>Request Timeout</h1>\n"
                                    . "<p>Error 408</p>\n"
                                    . "<p>\n"
                                    . "Request was stopped before the server finished it.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;

    case 500 : $error_name = "Error 500 - Server Configuration Error";
               $error_description = "<h1>Server Configuration Error</h1>\n"
                                    . "<p>Error 500</p>\n"
                                    . "<p>\n"
                                    . "The URL that you requested (" . $request_link 
                                    . "), resulted in a server configuration error."
                                    . " It is possible that the condition causing the"
                                    . " problem will be gone by the time you finish reading this.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;

    case 501 : $error_name = "Error 501 - Not Implemented";
               $error_description = "<h1>Not Implemented</h1>\n"
                                    . "<p>Error 401</p>\n"
                                    . "<p>\n"
                                    . "Web server doesn't support a requested feature.\n"
                                    . "</p>\n"
                                    . $common_message;
               break;

    default  : $error_name = "Uknown error";
               $error_description = "<h1>Uknown error</h1>\n"
                                    . "<p>Error 000</p>\n"
                                    . "<p>\n"
                                    . "The URL that you requested, resulted in an unknown error."
                                    . "</p>\n"
                                    . $common_message;
               break;
  }

  // Display error message
  echo($error_description);
  printf("<p><a href=\"javascript:history.go(-1);\" title=\"Go back\">"
         . "&laquo; Previous page.</a></p>");
?>
 </div>
</body>
</html>

Úprava .htaccess

Ještě zbývá upravit soubor .htaccess a dynamické chybové stránky jsou připraveny k použití. Upravený soubor .htaccess může vypadat například takto:

# Error documents definition
ErrorDocument 400 /errpages/errorpage.php
ErrorDocument 401 /errpages/errorpage.php
ErrorDocument 403 /errpages/errorpage.php
ErrorDocument 408 /errpages/errorpage.php
ErrorDocument 500 /errpages/errorpage.php

13.12.2006 14:01:04 - 1315x
Hodnocení (221)

Rating - 51% 51%

DOBRÉ | ŠPATNÉ

Komentáře k tématu 'Dynamická chybová stránka (PHP...' (0 komentářů)

Vložit komentář | Zobrazit pouze komentáře | Nahoru
Ještě nebyl vložen žádný komentář. Pro vložení prvního komentáře klikněte zde.

Vyhledávání

 
Google

Reklama

Knihy
© 2004 - 2008 Tomáš Kavalek - Obsah webu, zdrojové kódy a projekty lze používat a dále šířit dle GNU GPL. V diskuzích mně můžete tykat.