Foros del Web » Programando para Internet » PHP »

Permitir salida antes de header

Estas en el tema de Permitir salida antes de header en el foro de PHP en Foros del Web. Hola, se que cuando se usa "header(Location:...)" no puede haber nada (ni html ni nada) antes de esa línea. He migrado una web de un ...
  #1 (permalink)  
Antiguo 01/02/2012, 10:47
 
Fecha de Ingreso: diciembre-2011
Ubicación: Castellón
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 2
Permitir salida antes de header

Hola,
se que cuando se usa "header(Location:...)" no puede haber nada (ni html ni nada) antes de esa línea. He migrado una web de un cliente a mi servidor, y tiene la instrucción header(...) dentro de la etiqueta body, por lo que falla ya que dice que ya se han enviado los encabezados (lógico).

Lo no tan lógico es que sin tocar nada, ese código funciona perfectamente en su servidor (se redirecciona correctamente sin error alguno), por lo que supongo que debe haber algún parámetro de php o algo para indicar que obvie todo lo anterior si se encuentra una redirección mediante header(...).

¿Alguien sabe cómo puede hacerse eso?

Para que os hagais una idea, este es el código que, sin tocarlo, funciona bien en su servidor y en el mio da error de "Bad headers, etc...".

Código PHP:
<--linea del doctype-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Título de la página</title>
</head>
<body>
<?php
$location
="es/presentacion.html";
header("Location: $location");
?>
</body>
</HTML>
  #2 (permalink)  
Antiguo 01/02/2012, 11:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Permitir salida antes de header

Eso es porque seguramente tiene el parámetro de output_buffering en algún valor. Lo que hace ese parámetro es "guardar" todo lo que se esta imprimiendo en el buffer y lo envía después de xKB (ese x es el parámetro output_buffering) por lo que sí encuentra un header() antes de que sean los xKB, va a envíar primero el header() y ya se ignora el resto del contenido.

Si bien es útil el output_buffering, no se debe de programar pensando en que todos los servidores tendrán el parámetro en algo diferente de 0 (0 indica que esta desactivado) ya que en servidores donde este desactivado causa el error antes mencionado.

La desventaja de usar output_buffering, es que hace un poco más lento el proceso de PHP al guardar la salida en buffer (no es mucho).

Lo mejor es poner el header antes de cualquiér salida HTML.

Saludos.
  #3 (permalink)  
Antiguo 01/02/2012, 11:15
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Permitir salida antes de header

tenes que habilitar
output_buffering =
en php.ini
http://www.php.net/manual/en/outcont...tput-buffering

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 01/02/2012, 14:22
 
Fecha de Ingreso: diciembre-2011
Ubicación: Castellón
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Permitir salida antes de header

Probaré con esa directiva.

Muchas gracias!
  #5 (permalink)  
Antiguo 01/02/2012, 14:54
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Respuesta: Permitir salida antes de header

Una pregunta..
¿Por qué quieres hacer el header ahí? O mejor, ¿por qué no hacer el header en el inicio de tu archivo, como se debe?

Saludos!
__________________
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
  #6 (permalink)  
Antiguo 01/02/2012, 14:59
 
Fecha de Ingreso: diciembre-2011
Ubicación: Castellón
Mensajes: 39
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Permitir salida antes de header

Porque la web no la mantengo yo. Es de un cliente y yo le hago la migración a mi servidor, por lo que aunque yo modifique el archivo, como es el cliente el que tiene la web en su pc en local, la próxima vez que suba un cambio, machacará los cambios que yo haga.

Y como quiero evitar siempre que sea posible entrometerme en el código de los clientes si puedo subsanar errores mediante php.ini, por eso lo preguntaba. Si no hubiese otra opción, entonces sí que hablaría con él, pero pudiendo cambiar esa directiva de php, es suficiente. Y de paso, ya lo se para otros clientes.

Etiquetas: header, html, permitir, salida
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 23:40.