Foros del Web » Programando para Internet » PHP »

No puedo generar un error 404

Estas en el tema de No puedo generar un error 404 en el foro de PHP en Foros del Web. Buenas, me es imposible generar un error 404 con php. Tengo una página que segun el ID, muestro los datos de un registro u otro. ...
  #1 (permalink)  
Antiguo 29/06/2015, 06:42
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
No puedo generar un error 404

Buenas, me es imposible generar un error 404 con php. Tengo una página que segun el ID, muestro los datos de un registro u otro. Pero cuando ese ID ya no está en la base de datos quiero que se genere como que la página no existe (un 404).

He intentado poniendo al principio del todo esto:
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");

y no funciona.

Es más, he creado una página sólo con esto para probar:
Código PHP:
Ver original
  1. <?php
  2. header("HTTP/1.0 404 Not Found");
  3. header("Status: 404 Not Found");
  4. echo "hola";
  5. ?>

Y nada... se muestra el "hola", pongo un exit() para que no muestre el código restante de la web pero yo lo que quiero es que me envíe a la típica página de Not Found

¿Qué estoy haciendo mal?? Gracias de antemano
  #2 (permalink)  
Antiguo 29/06/2015, 07:39
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: No puedo generar un error 404

Prueba quitando header("HTTP/1.0 404 Not Found"):

Código PHP:
Ver original
  1. header("Status: 404 Not Found");
  2. echo "hola";
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #3 (permalink)  
Antiguo 29/06/2015, 11:46
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: No puedo generar un error 404

Nada no funciona, lo he probado con las dos individualmente y tampoco hace nada
  #4 (permalink)  
Antiguo 30/06/2015, 04:14
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: No puedo generar un error 404

He guardado el archivo en UTF-8 y en ANSI y tampoco. Puede ser que se estén enviando algunas cabeceras por algo??? Repito que el archivo en el bloc de notas sólo contiene lo que puse arriba.

Ayudarme por favor. La versión de PHP es 5.4.38. Ya no sé que hacer...
  #5 (permalink)  
Antiguo 30/06/2015, 04:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo generar un error 404

¿Te queda claro que un error 404 no es un error generado por PHP , sino por el webserver?
Implica que un archivo o su ruta no existen o no se encuentran en él. Lo que quieres hacer no es algo que puedas disparar así, sino que tienes que crear una página que diga eso y que se despliegue en las situaciones que describes.
Estas tratando de hacer algo del modo equivocado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 30/06/2015, 10:41
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: No puedo generar un error 404

Vale gracias, entiendo. Pero entonces, todo esto que he leído que la gente utiliza escribiendo "header("Status: 404 Not Found");" que consigue?
  #7 (permalink)  
Antiguo 30/06/2015, 11:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo generar un error 404

Bueno, yo supongo que lo primero que deberías hacer sería mirar el manual de referencia de PHP, antes que nada...

http://php.net/manual/es/function.header.php

Es lo que yo hice, al menos, y alli me encontré con esto:

Cita:
Existen dos casos especiales en el uso de header. El primero el encabezado que empieza con la cadena "HTTP/" (las mayúsculas no son importantes), es utilizado para averiguar el código de status HTTP a enviar. Por ejemplo, si se tiene Apache configurado para usar un script en PHP para controlar las peticiones a ficheros no encontrados (usando la directiva ErrorDocument), querrá asegurarse de que el script genera el código de status que corresponde.
Código PHP:
Ver original
  1. <?php
  2. header("HTTP/1.0 404 Not Found");
  3. ?>
El segundo caso especial es el encabezado "Location:" No solamente envía el encabezado al navegador, sino que también devuelve el código de status (302) REDIRECT al navegador a no ser que el código de status 201 o 3xx ya haya sido enviado.
Código PHP:
Ver original
  1. <?php
  2. header("Location: http://www.example.com/"); /* Redirección del navegador */
  3.  
  4. /* Asegurándonos de que el código interior no será ejecutado cuando se realiza la redirección. */
  5. ?>
Vale decir, no funciona por si mismo. DEbes tener el WebServer Apache configurado para eso, de lo contrario no sirve para NADA.

¿Está mas claro ahora?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 30/06/2015, 12:09
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: No puedo generar un error 404

Entiendo, muchas gracias por tu ayuda. Miraré qué opción me conviene más para no perjudicar el SEO.

Gracias de nuevo
  #9 (permalink)  
Antiguo 01/07/2015, 09:35
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: No puedo generar un error 404

El código que muestras es totalmente funcional, estás enviando al cliente un código de estado 404, lo cual es correcto. El problema es que PHP envía y procesa los datos de forma independiente al servidor, sin previo paso por las directivas de Apache, (ej. ErrorDocument), y por ello debes añadir el fichero manualmente con un include:

Código PHP:
Ver original
  1. include('archivo_404.html');

Etiquetas: 404, registro
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 02:14.