IntroducciónNota: Nuestros ejemplos estarán basados y aplicados sobre un servidor Apache, pero son perfectamente extendibles a otros webservers. Además, los errores solos serán mostrados en enlaces dentro del mismo sitio.
Para empezar tendremos que configurar el Apache para que cuando ocurra un error 404 nos redÃrija a nuestro script. Para hacer esto modificamos el archivo .htaccess agregándole o modificando la siguiente lÃnea:
ErrorDocument 404 /path/mi404.php
En caso de que quieran aplicar esto para otros errores el formato es el siguiente:
ErrorDocument nroError path_al_archiv
o
Una vez configurado nuestro webserver, veamos que tenemos dentro de nuestro script.
<html>
<head>
<title>Documento no encontrado</title>
</head>
<body>
El documento: <b><?=$_SERVER['REQUEST_URI'];?></b> no ha sido encontrado en nuestro servidor.<br>
Por favor, bla, bla, bla.
<!--
Recordemos que IE no muestra las paginas de error salvo que sean mayores a 512 bytes
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-->
</body>
</html>
Entre las variables que tenemos disponibles en apache desde PHP esta $_SERVER['REQUEST_URI'] (o $HTTP_SERVER_VARS['REQUEST_URI'] en php 4.0.x y anteriores) la cual nos indica cual es la URL solicitada al servidor. Por eso la utilizamos en nuestro script para indicar cual es el documento o archivo no encontrado.
Algo un poco más funcionalAhora bien, el ejemplo anterior es bastante sencillo y realmente poco útil para el administrador del sitio, ya que únicamente informa al navegante de cual es el documento faltante. Algo mas útil seria que cuando no se encuentra un documento se le informe de alguna manera al administrador para que tome conocimiento inmediatamente, ya sea de algún enlace roto o intento de acceso a archivos no permitidos.
Para avisarle al webmaster del sitio lo haremos mediante el envÃo de un correo electrónico a través de la función mail();
Veamos como quedarÃa nuestro script:
<html>
<head>
<title>Documento no encontrado</title>
</head>
<body>
El documento: <b><?=$_SERVER['REQUEST_URI'];?></b> no ha sido encontrado en nuestro servidor.<br>
El error ha sido comunicado al administrador del sitio. Disculpe las molestias ocasionadas.
<?
//Indicamos la fecha y hora del suceso.
$fecha = date('d-m-Y H:i:s');
$para='webmaster@misitio.com';
$asunto='Documento no encontrado.';
$mensaje='El documento: ' . $_SERVER['REQUEST_URI'] . ' no ha sido encontrado en el sitio: ' .$_SERVER['SERVER_NAME']. ' al tratar de ser accedido el ' . $fecha;
mail($para, $asunto, $mensaje);
?>
<!--
Todo sea por el IE
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxhttp://foro.portalhacker.net/Themes/classic/images/smflogo.gif
http://foro.portalhacker.net/Themes/classic/images/smflogo.gifxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-->
</body>
</html>
Ahora, además del documento le indicamos el sitio, la fecha y la hora del error.
ConclusiónCon esta breve introducción, podrán empezar a personalizar sus mensajes de errores y aprovecharlos para facilitar la administración de su sitio, conociendo al instante que links están caÃdos dentro del sitio. Ahora, solo resta experimentar y encontrar que datos podemos obtener y cuales son los que nos interesan.
Autor:Juan Pablo Winiarczyk