website stats » Evitando mostrar errores con PHP | Solo Código |

Evitando mostrar errores con PHP

Escrito por J.F. el Viernes, 20 de Julio del 2007 a las 17:01

Seguro que navegando alguna vez te has encontrado páginas con errores devueltos por el servidor en respuesta a errores producidos por no poder establecer la conexión con la base de datos, un error de sintáxis, etc. Como alguna vez he comentado, es importante que en caso de que haya errores, éstos no se muestren, ya que no aportan ninguna información al usuario, y en ocasiones esa información podría ser empleada para tratar de atacar nuestro sitio web. Entonces, ¿Como puedo evitar que se muestren los errores con PHP? Pues bien, es muy simple, hay varias formas, pero éstas 2 son las más simples:
En primer lugar, podemos añadir la arroba "@"al principio de la instrucción de la cual no queremos que se muestre el error. Ésto se ve claro con un ejemplo, imaginemos que queremos realizar una consulta contra la base de datos, en éste caso en concreto, una inserción de datos:

PHP:
  1. $orden="INSERT INTO nombre_tabla VALUES (valor1, valor2,....)";
  2. @ $consulta=mysql_query($orden,$id_conexion);

Al haber puesto al principio de la línea la arroba "@" si la tabla no existiera, o si por cualquier razón no se llevara a cabo la operación, el navegador no reflejaría el error. Éste método es muy útil cuando simplemente queremos salvaguardar errores puntuales, pero, ¿Qué ocurre si queremos evitar que se muestre cualquier tipo de error? ¿Debemos poner una arroba al principio de cada línea? Funcionaría pero no es necesario, basta con añadir al principio del código, o en la cabecera la siguiente línea:

PHP:

Ya está, así de simple, en caso de cualquier error el navegador no lo msotrará. La función error_reporting(); es la encargada de establecer el nivel de errores que será mostrado, siendo el 0 el nivel en el que ningún error es msotrado al usuario. Existen distintos tipos de variables que pueden indicar el nivel de errores y que por tanto pueden ser pasados como argumento a dicha función. Los puedes ver en la siguiente tabla, con links al manual oficial de PHP:

VALOR CONSTANTE
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
2047 E_ALL
2048 E_STRICT

Aquí tienes unos ejemplos de uso de error_reporting(); :

PHP:
  1. <?php
  2.  
  3. // Deshabilitar todo reporte de errores
  4.  
  5. // Errores de ejecucion simples
  6. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  7.  
  8. // Reportar E_NOTICE puede ser bueno tambien (para reportar variables
  9. // no inicializadas o capturar equivocaciones en nombres de variables ...)
  10. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
  11.  
  12. // Reportar todos los errores excepto E_NOTICE
  13. // Este es el valor predeterminado en php.ini
  14. error_reporting(E_ALL ^ E_NOTICE);
  15.  
  16. // Reportar todos los errores de PHP (el valor de bits 63 puede ser usado en PHP 3)
  17.  
  18. // Lo mismo que error_reporting(E_ALL);
  19. ini_set('error_reporting', E_ALL);
  20.  
  21. ?>

Categoria: PHP

2 Comentarios

Entradas relacionadas


Pingback de » Inyección SQL en aplicaciones Web (I) | Solo Código |

Realizado el Miércoles, 5 de Septiembre del 2007 a las 10:03

[…] dejando los otros errores para depurar.Para evitar mostrar ningún tipo de error podemos usar la función error_reporting de PHP, de la que ya hemos hablado. Otro factor a la hora de “adivinar” información acerca de nuestra base de datos puede ser recurrir […]

Comentario de esti

Realizado el Lunes, 7 de Septiembre del 2009 a las 1:05

me viene perfecto, estaba buscando esto exactamente =)

Escribir un comentario

Puedes usar las siguientes etiquetas HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Solo Código

Solo Código es una colección de códigos de todo tipo que pueden resultar útiles para el diseño de páginas web. Está enfocado tanto para aquellos que son expertos, como para aquellos principiantes que quieren encontrar recursos útiles, o no saben implementar determinadas funciones en sus webs. No olvides que Solo Código es un blog de Informática Práctica, donde tenemos otras secciones interesantes como:
| Tutoriales | Trucos | Software | Links | Buscar |