Foros del Web » Programando para Internet » PHP » CodeIgniter »

Como funcionan los errores y el 404

Estas en el tema de Como funcionan los errores y el 404 en el foro de CodeIgniter en Foros del Web. Hola buenas de nuevo, Quisiera saber como funciona en CodeIgniter el tema de los errores, es decir, cuando llamas a una página que no existe, ...
  #1 (permalink)  
Antiguo 14/07/2011, 06:52
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Como funcionan los errores y el 404

Hola buenas de nuevo,

Quisiera saber como funciona en CodeIgniter el tema de los errores, es decir, cuando llamas a una página que no existe, te muestra el error 404, pero... como funciona realmente? es decir, el hecho de que lo muestre con unos estilos no quiere decir que funcione de alguna manera en especial, no? envia un header 404?

Como lo personalizo para que salga el típico error 404?

Estoy un poco liado,

Un saludo!
  #2 (permalink)  
Antiguo 14/07/2011, 07:10
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como funcionan los errores y el 404

Hay un template para eso:

application/errors/error_404.php

http://codeigniter.com/user_guide/general/errors.html
__________________
Salu2!
  #3 (permalink)  
Antiguo 14/07/2011, 07:59
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Como funcionan los errores y el 404

Hola buenas,

Y si no quiero usar ningún template? es decir, mostrar el error por defecto 404?

Un saludo y garcias!
  #4 (permalink)  
Antiguo 14/07/2011, 08:27
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como funcionan los errores y el 404

Quien te impide desde ese .php cargar una vista en tu template ?

Cita:
application/errors/error_404.php
__________________
Salu2!
  #5 (permalink)  
Antiguo 14/07/2011, 11:19
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como funcionan los errores y el 404

Cita:
Iniciado por miktrv Ver Mensaje
Hola buenas,

Y si no quiero usar ningún template? es decir, mostrar el error por defecto 404?

Un saludo y garcias!

De hecho es algo bueno mostrar una pagina de error personalizada. Porque te esta complicando esto?
__________________
blog
  #6 (permalink)  
Antiguo 14/07/2011, 11:36
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Como funcionan los errores y el 404

Hola buenas de nuevo,

Simplemente lo pregunto porque quiero saber como funciona, evidentemente es mejor personalizar el error, pero me gusta saber como se haen las cosas para poder controlar todas las posibilidades.

Un saludo!
  #7 (permalink)  
Antiguo 14/07/2011, 11:38
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como funcionan los errores y el 404

Cita:
Iniciado por miktrv Ver Mensaje
Hola buenas de nuevo,

Simplemente lo pregunto porque quiero saber como funciona, evidentemente es mejor personalizar el error, pero me gusta saber como se haen las cosas para poder controlar todas las posibilidades.

Un saludo!


En tu document root tenes un .htaccess, que sino encuentra el contenido exacto de la url le avisa a tu archivo index.php para que lo procese, este index.php busca si existe un controller y un action con los parametros que recibio en la url, y sino la encuentra, por default te redirecciona a ese template con el error
__________________
blog
  #8 (permalink)  
Antiguo 14/07/2011, 11:41
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Como funcionan los errores y el 404

Perfecto, me acabas de dar la información exacta de lo que quería saber.. un saludo y muchas gracias por tu gran ayuda!
  #9 (permalink)  
Antiguo 14/07/2011, 11:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como funcionan los errores y el 404

Si miras /system/core/Exceptions.php veras como es el proceso......pero no hay nada en el index como dicen por ahi

Código PHP:
function show_404($page ''$log_error TRUE)
    {
        
$heading "404 Page Not Found";
        
$message "The page you requested was not found.";

        
// By default we log this, but allow a dev to skip it
        
if ($log_error)
        {
            
log_message('error''404 Page Not Found --> '.$page);
        }

        echo 
$this->show_error($heading$message'error_404'404);
        exit;
    }

function 
show_error($heading$message$template 'error_general'$status_code 500)
    {
        
set_status_header($status_code);

        
$message '<p>'.implode('</p><p>', ( ! is_array($message)) ? array($message) : $message).'</p>';

        if (
ob_get_level() > $this->ob_level 1)
        {
            
ob_end_flush();
        }
        
ob_start();
        include(
APPPATH.'errors/'.$template.EXT);
        
$buffer ob_get_contents();
        
ob_end_clean();
        return 
$buffer;
    } 
__________________
Salu2!
  #10 (permalink)  
Antiguo 14/07/2011, 11:55
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Como funcionan los errores y el 404

Entonces.. quiere decir que tengo que sobreescribir la funcion show_404? y extender la clase Exceptions?

Un saludo!
  #11 (permalink)  
Antiguo 14/07/2011, 11:57
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como funcionan los errores y el 404

Cita:
Iniciado por Italico76 Ver Mensaje
Si miras /system/core/Exceptions.php veras como es el proceso......pero no hay nada en el index como dicen por ahi

Código PHP:
function show_404($page ''$log_error TRUE)
    {
        
$heading "404 Page Not Found";
        
$message "The page you requested was not found.";

        
// By default we log this, but allow a dev to skip it
        
if ($log_error)
        {
            
log_message('error''404 Page Not Found --> '.$page);
        }

        echo 
$this->show_error($heading$message'error_404'404);
        exit;
    }

function 
show_error($heading$message$template 'error_general'$status_code 500)
    {
        
set_status_header($status_code);

        
$message '<p>'.implode('</p><p>', ( ! is_array($message)) ? array($message) : $message).'</p>';

        if (
ob_get_level() > $this->ob_level 1)
        {
            
ob_end_flush();
        }
        
ob_start();
        include(
APPPATH.'errors/'.$template.EXT);
        
$buffer ob_get_contents();
        
ob_end_clean();
        return 
$buffer;
    } 

Che capo y como llega a ejecutarse esa exception, desde donde se genera?

Alguien tiene que llamar a esas funciones que pasaste.
__________________
blog
  #12 (permalink)  
Antiguo 14/07/2011, 12:07
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como funcionan los errores y el 404

Bueno me hiciste hacer bajar ese conjunto de funciones :P

Y aca esta el llamado a la funcion magica

Código PHP:
Ver original
  1. if ( ! class_exists($class)
  2.         OR strncmp($method, '_', 1) == 0
  3.         OR in_array(strtolower($method), array_map('strtolower', get_class_methods('CI_Controller')))
  4.         )
  5.     {
  6.         show_404("{$class}/{$method}");
  7.     }

Esto esta en el archivo system/core/CodeIgniter.php en la linea 264 y el que lo llama es ... ta tan tan


index.php
:D

Código PHP:
Ver original
  1. require_once BASEPATH.'core/CodeIgniter'.EXT;

Linea 201
__________________
blog
  #13 (permalink)  
Antiguo 14/07/2011, 12:10
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Como funcionan los errores y el 404

EL frontcontroller es el que se encargará de llamar a esa función evidentemente..
  #14 (permalink)  
Antiguo 14/07/2011, 12:13
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como funcionan los errores y el 404

Cita:
Iniciado por miktrv Ver Mensaje
EL frontcontroller es el que se encargará de llamar a esa función evidentemente..
__________________
blog
  #15 (permalink)  
Antiguo 14/07/2011, 12:16
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como funcionan los errores y el 404

Cita:
Esto esta en el archivo system/core/CodeIgniter.php en la linea 264 y el que lo llama es ... ta tan tan
Pues...quien lo llama es Common.php

pero...evidentemente como dices...todo arranca con el Index.php

INDEX.php -> ?? -> Common.php -> Exceptions.php -> application/errors/error_404.php

PD: quise corregirme pero me posteas primero
__________________
Salu2!
  #16 (permalink)  
Antiguo 14/07/2011, 12:22
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años, 1 mes
Puntos: 37
Respuesta: Como funcionan los errores y el 404

Cita:
Iniciado por Italico76 Ver Mensaje
Pues...quien lo llama es Common.php

pero...evidentemente como dices...todo arranca con el Index.php

INDEX.php -> ?? -> Common.php -> Exceptions.php -> application/errors/error_404.php

PD: quise corregirme pero me posteas primero
Estas viendolo con Code Igniter 2?

la version que yo tengo la llama directamente dese INdex.php no pasa por Common.

Por favor no me hagas leer mas el core de CI , despues tengo pesadillas
__________________
blog
  #17 (permalink)  
Antiguo 14/07/2011, 12:35
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Como funcionan los errores y el 404

Cita:
Iniciado por pablofmorales Ver Mensaje
Estas viendolo con Code Igniter 2?


Cita:
Iniciado por pablofmorales Ver Mensaje
Por favor no me hagas leer mas el core de CI , despues tengo pesadillas
Mejor re-conciliate
__________________
Salu2!
  #18 (permalink)  
Antiguo 15/07/2011, 18:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Como funcionan los errores y el 404

No conozco CI, porque no uso frameworks, pero me parece que no solo el front controller es quien lanza (o debe lanzar) esta excepcion, tambien debiera hacerse en cada controlador.

Por ejemplo, si tienes tu controlador autos y solicitas un elemento (Ferrari) que no existe en la base de datos, esto deberia generar un error 404 y esta fuera del alcance del front controller, porque este ya encontro autos y le paso la estafeta, pero supongo que depende de los gustos y costumbres de cada quien.

Lo que haria yo, en el ejemplo anterior, seria mandar el encabezado 404, mostrar un mensaje indicando el error, algo como "Lo siento, no tenemos Ferrari, pero tenemos un gran surtido de Athos:", junto con enlaces a algunos autos disponibles y, mas abajo, un mini-mapa del sitio.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: frameworks-y-php-orientado-a-objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:22.