Foros del Web » Programando para Internet » PHP »

cabecera 404, ¿cómo la uso?

Estas en el tema de cabecera 404, ¿cómo la uso? en el foro de PHP en Foros del Web. Quiero hacer que cuando no se satisfaga una consulta a la base de datos, enviar la cabecera 404 de HTML. Lo intenté así: Código PHP: ...
  #1 (permalink)  
Antiguo 22/02/2006, 07:47
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
cabecera 404, ¿cómo la uso?

Quiero hacer que cuando no se satisfaga una consulta a la base de datos, enviar la cabecera 404 de HTML.

Lo intenté así:

Código PHP:
//
if(mysql_num_rows($result)==0)
 {
   
header("HTTP/1.0 404 Not Found");
   exit;
 } 
Antes de poner ese código, no muestro nada en pantalla, este código está antes del primer <html>.

Me parece muy extraño, ya que si en lugar de "HTTP/1.0 404 Not Found" utilizo por ejemplo "Location: http:www.google.com" sí me redirecciona a Google cuando se satisface la condición.

Una manita, plz.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #2 (permalink)  
Antiguo 22/02/2006, 08:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero donde usas ese código en su contexto?.

Si dices que un "Location" (enviada por header()) no te origina el típico conflico de cabeceras HTTP enviadas anteriormente .. debería funcionarte esta otra cabecera. Eso sí, .. habría que ver tu código en su contexto .. (por si usas algún control del buffer (ob_Start() .. etc) o alguna otra cosa que pudiera interferir).

Revisa que no tengas ningún espacio antes de tu < ? .. o algún salto de línea .. o algo de HTML .. o "echo " ..

A veces un error de PHP que envia el mensaje de error a la salida .. suele dar conflicto con las cabeceras HTTP enviadas (pero igualmente verias el error referente a este tema).

Intenta aislar tu código y ver que llegue sin problemas (ni mensajes de error u otras "salidas") a punto de tu código donde haces tu actual "header()" ..

Un saludo,
  #3 (permalink)  
Antiguo 22/02/2006, 08:36
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
aquí de new

Cita:
Intenta aislar tu código y ver que llegue sin problemas (ni mensajes de error u otras "salidas") a punto de tu código donde haces tu actual "header()" ..
Código PHP:
<?php
header
("HTTP/1.0 404 Not Found");
exit;
session_start();
require(
"f/funciones.php");
$dbh=conectar_db();
//etc, etc, del código
Esta es la forma en la que lo puse para probar que enviara bien la cabecera. Puse la cabecera al inicio, la etiqueta <?php está en la línea 1, hace lo mismo que hace rato, jeje, que me da una pantalla en blanco y cuando hago click en el código fuente, no hay nada.

Yo me esperaba un mensaje en pantalla que dijera: "Error 404, Not Found" o algo así.

¿Ese mensaje se tiene que configurar a parte?

Thanks.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #4 (permalink)  
Antiguo 22/02/2006, 08:40
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Por que no llamar a una pagina personalizada de error?

header("Location: pagina_error.php?id_error=xxxx");
  #5 (permalink)  
Antiguo 22/02/2006, 08:43
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Lo pensé amigo.

Pero me interesa que se envíe una respuesta 404 para que cuando Google visite el sitio sepa que la página no existe (y luego claro, editar la página para que no se vea tan horrorosa, pero que sí se envíe ese código 404).

De lo contrario, si sólo pongo una página personalizada de error, cuando Google visite varias páginas que tengan error con diferentes URL's y todas lleven hacia esa, me tachará como que estoy poniendo contenido duplicado y no me gustaría hacer enojar al Dios Google, =)
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #6 (permalink)  
Antiguo 22/02/2006, 09:39
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 11 años, 11 meses
Puntos: 1
No estoy seguro del todo, pero creo que además de enviar la cabecera indicando el código 404, habría que enviar el código html con el mensaje de error que queremos mostrar. Es decir, el mensaje de error no lo muestra automaticamente el navegador al recibir una respuesta con el código 404 o cualquier otro. Podemos hacer una prueba: conectarnos via telnet al servidor y pedir una pagina que no exista:

telnet direccion_servidor 80
GET pagina_inexistente HTTP/1.0

Y ahí vamos a ver el texto con la cabecera 404 y además el código html que dice "Not Found .....".
Seria:

Código PHP:
<?
if(mysql_num_rows($result)==0)
 {
   
header("HTTP/1.0 404 Not Found");
   echo 
codigo_html;
 } 
?>
Saludos.
__________________
¿Se me entiende la letra?
  #7 (permalink)  
Antiguo 26/02/2006, 20:31
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Después de un tiempo de desaparecido, regreso con la respuesta.

La forma de JorgitoAlfajor si enviaba caracteres, pero no quería escribir lo mismo en cada una de mis páginas, entonces ahorita sin querer encontré que por .HTACCESS se puede hacer agregando la siguiente línea:

ErrorDocument 404 /noencontrado.html

Thanks a todos.
__________________
"Di no al Internet Explorer" -Proverbio Chino-

Última edición por uamistad; 02/03/2006 a las 16:45
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 15:16.