unreal4u's Personal Network Because my reality… is just your virtuality

29Dic/09Off

Manejar errores en PHP

Mostrando los errores de forma amigable

A continuación cada uno de los contenidos de los archivos, de forma muy simplificada:
El contenido de /index.php:

<?php
  include('includes/sesiones.php');
  if (isset($_POST['(formulario)'])) {
    // Ejecutar todas las acciones de verificación y otros.
  }
  include('includes/header.php');
// Contenido de la página propiamente tal
?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<input type="text" />
(...)
<input type="submit" value="Aceptar" />
</form>
<?php
  include('includes/footer.php');
?>

Contenido de /includes/header.php:

<!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" lang="es">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <base href="http://unreal4u.com/" />
  <title>Título de la página</title>
</head>
<?php
  include('includes/errores.php');
?>

Ahora bien, la gracia de todo el sistema para mostrar errores está justamente en /includes/errores.php, que contiene el siguiente código:

<?php
if (isset($_GET['err'])) $err[] = $_GET['err']; // Reviso si existe error en GET y agrego al arreglo

if (isset($err)) { // Si existen errores...
  $pantalla = '<p class="error">'.c_img('i/warning.png').'&nbsp;'; // Empezamos
  foreach($err AS $a) { // Por cada uno de los errores en $err
    switch($a) { // Reviso de cuál se trata
      CASE 1  : $pantalla .= 'Lo sentimos, pero necesita logearse antes de poder continuar'; break;
      CASE 2  : $pantalla .= 'Debe llenar el formulario'; break;
      CASE 3  : $pantalla .= 'Es probable que se haya intentado inyección SQL'; break;
      CASE 4  : $pantalla .= 'Debe llenar todos los campos'; break;
      CASE 5  : $pantalla .= 'Lo sentimos, pero el usuario y contrase&ntilde;a no corresponden'; break;
      CASE 6  : $pantalla .= 'El tiempo de la sesi&oacute;n ha expirado'; break;
      CASE 7  : $pantalla .= 'Para acceder a esta &aacute;rea debe ser administrador'; break;

      CASE 403:
      CASE 404: $pantalla .= 'La p&aacute;gina solicitada no existe, verifique el link'; break;
      DEFAULT : $pantalla = ''; break;
    }
  }
  if ($pantalla != '') echo $pantalla.'</p>'; // Imprimo
  unset($a,$err,$pantalla); // Limpiamos
}

Por último, la función que retorna el código HTML de la imagen (c_img) ya la habíamos visto en un post anterior.

¿Te gustó este artículo?

¡Considera suscribirte a nuestro feed!

Sobre Camilo Sperberg

Es Ingeniero Informático especializado en Linux y PHP (Es la primera persona en certificarse en PHP5.3 en Chile). En su tiempo libre le gusta estudiar nuevas técnicas de programación y escribir. Además, es amigo de todo ser viviente y cree que la tecnocracia es la mejor forma de política.
Archivado en: Mundo Web, PHP, 2,662 vistas Comments Off