Foros del Web » Programando para Internet » PHP »

header location + exit() = fail

Estas en el tema de header location + exit() = fail en el foro de PHP en Foros del Web. Hola gente algunos ya me conocen y he aportado mucho pero ahora tengo algo que en serio me esta matando el cerebro :( La cuestión ...
  #1 (permalink)  
Antiguo 20/09/2011, 16:39
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 9 meses
Puntos: 52
Pregunta header location + exit() = fail

Hola gente algunos ya me conocen y he aportado mucho pero ahora tengo algo que en serio me esta matando el cerebro :(

La cuestión es que yo tengo un blog que lo he implementado en muchos sitios, pero este en particular después de 4 horas de quebradera de cabeza me he dado cuenta del error y la cuestión es que como todos sabemos luego de hacer un header location hay que poner un exit(); por que si no el código se sigue ejecutando, ahora bien luego de buscar y buscar vi que esos exit me estan jodiendo todo :S... la versión de php del servidor donde esta alojado el sitio es la 5.2 y la de mi compu es 5.3 y funciona perfectamente pero ya arriba en el servidor no me da...

Sera que faltara algo en el server o algo por el estilo? me gustaría me apoyen en esto por que estoy super desesperado

Gracias de antemano
  #2 (permalink)  
Antiguo 20/09/2011, 16:40
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 9 meses
Puntos: 52
Respuesta: header location + exit() = fail

PD: no hay nada de html antes de los header eso lo se perfectamente ya que local funciona y mis otros blog están funcionando correctamente en otros servidores
  #3 (permalink)  
Antiguo 20/09/2011, 16:48
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 14 años
Puntos: 51
Respuesta: header location + exit() = fail

Podés poner el código?
  #4 (permalink)  
Antiguo 20/09/2011, 17:00
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 7 meses
Puntos: 322
Respuesta: header location + exit() = fail

Cita:
como todos sabemos luego de hacer un header location hay que poner un exit()
Para nada cierto. Si no hay ninguna salida HTML antes del header, la función no dará ningún error, el header se ejecutará y no alcanzará a llegar a la siguiente línea, por lo que si pongas exit o no lo pongas no afectará en nada.
Ejemplo:

Código PHP:
Ver original
  1. header('Location: eje.php');
  2. echo 'Hola! Ésta línea nunca se ve, porque nunca llega a ella';
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 20/09/2011, 17:18
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 9 meses
Puntos: 52
Respuesta: header location + exit() = fail

Cita:
Iniciado por walterdevel Ver Mensaje
Podés poner el código?
Es un sistema completo el que falla :p

Cita:
Iniciado por Sourcegeek Ver Mensaje
Para nada cierto. Si no hay ninguna salida HTML antes del header, la función no dará ningún error, el header se ejecutará y no alcanzará a llegar a la siguiente línea, por lo que si pongas exit o no lo pongas no afectará en nada.
Ejemplo:

Código PHP:
Ver original
  1. header('Location: eje.php');
  2. echo 'Hola! Ésta línea nunca se ve, porque nunca llega a ella';
Yo una vez hace mucho leí que era necesario por que si no hay veces que el código se sigue ejecutando, lo vi ilógico pero si era parte del proceso me acostumbre a hacerlo

Pero el punto es por que hasta ahora tengo estos problemas, cree que es probable que puede ser que en alguna parte antes de abrir etiquetas php tenga un espacio por ejemplo

Código PHP:
(aquí un espacio en blanco?)<?

?>
Es único que se me ocurre pero sera un huevo encontrar eso
  #6 (permalink)  
Antiguo 20/09/2011, 17:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: header location + exit() = fail

Cita:
Iniciado por BloodShadow Ver Mensaje
[...] Es único que se me ocurre pero sera un huevo encontrar eso
Y la verdad, hasta te pueden costar los dos si no activas el reporte y notificación de errores, no revisas los logs de errores, etc, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/09/2011, 17:42
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 9 meses
Puntos: 52
Respuesta: header location + exit() = fail

Cita:
Iniciado por pateketrueke Ver Mensaje
Y la verdad, hasta te pueden costar los dos si no activas el reporte y notificación de errores, no revisas los logs de errores, etc, etc...
jajaja si tienes razón, también active los errores en el apache, luego en un htaccess los intente meter en un archivo y también intente con ini_set('display_errors',1);
error_reporting(4181); desde el código php pero los putos del servidor tienen mucha caca de seguridad y no dejan mostrar los errores ni en el sitio ni en el servidor
  #8 (permalink)  
Antiguo 20/10/2011, 12:42
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 14 años, 4 meses
Puntos: 67
Respuesta: header location + exit() = fail

Cita:
Iniciado por Sourcegeek Ver Mensaje
Para nada cierto. Si no hay ninguna salida HTML antes del header, la función no dará ningún error, el header se ejecutará y no alcanzará a llegar a la siguiente línea, por lo que si pongas exit o no lo pongas no afectará en nada.
Ejemplo:

Código PHP:
Ver original
  1. header('Location: eje.php');
  2. echo 'Hola! Ésta línea nunca se ve, porque nunca llega a ella';
Pues si! es cierto, el código se sigue ejecutando aunque las salida no sea enviada al browser:

Código PHP:
Ver original
  1. header('Location: eje.php');
  2. mysql_query('insert into ejemplo (text) values (\'Esta linea si se insertará en la BD y cuando todo el php sea ejecutado se redireccionará a eje.php sin que no demos cuenta que se ejecutó el código\')');
  3. echo 'Este texto nunca será enviado al browser a cause del header';

En http://php.net/manual/es/function.header.php dice claramente:
"Enviar encabezado sin formato HTTP" (el bold lo puse yo )
Los headers definen el tipo de contenido a enviar al browser.

Saludos!!!
__________________
Páginas web de alta calidad y hechas a la medida.

Etiquetas: exit, header, location
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:14.