Foros del Web » Programando para Internet » PHP »

cabeceras

Estas en el tema de cabeceras en el foro de PHP en Foros del Web. Saludos a todos. Tengo un problema apparentemente sencillo pero no encuentro la solución, quiero agragar una cabecera para refrescar mi pagina y me da el ...
  #1 (permalink)  
Antiguo 17/07/2006, 07:14
 
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 7 meses
Puntos: 0
cabeceras

Saludos a todos. Tengo un problema apparentemente sencillo pero no encuentro la solución, quiero agragar una cabecera para refrescar mi pagina y me da el error siguiente:

Warning: Cannot modify header information - headers already sent by

He buscado en Google soluciones y he visto cosas como que no debe haber ningún espacio en blanco al final de mi php, que la salida de la cabecera debe ser lo primero y cosas asi, como pueden ver a continuación lo único que tiene mi codigo es el header, y aún así me da el error, que puede ser entonces?

<body>
<?
header( 'refresh: 5; url=http://localhost' );
?>
</body>
  #2 (permalink)  
Antiguo 17/07/2006, 07:20
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
bueno yo lo hago de la siguiente manera:

Código HTML:
<html>
<head>
<title>Untitled Document</title>
<META HTTP-EQUIV="refresh" CONTENT="60; URL=http://pagina.php" >
</head>

<body>

</body>
</html> 
__________________
.-._.-. [email protected]_.-.
  #3 (permalink)  
Antiguo 17/07/2006, 07:47
 
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 7 meses
Puntos: 0
si pero el problema es que yo estoy tratando de hacer algo diferente, de ese modo que digamos es el basico, estas haciendo una redirección a una pagina exacta, que... si tubieras que pasar parametros variables en la url...??e es mi caso, debo pasar en la url parametros que varian en cantidad y valor, de modo que mi refresh no debe ser una redirección sino simplemente un refres donde se puedan mantener todos aquellos parametros que hayan sido escritos en la url, en asp yo lo asia digamos que asi:

Response.AddHeader "Refresh", "5"

y es lo que estoy tratando de hacer en php, pero no encuentro el modo correcto.
  #4 (permalink)  
Antiguo 17/07/2006, 09:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por roilld
si pero el problema es que yo estoy tratando de hacer algo diferente, de ese modo que digamos es el basico, estas haciendo una redirección a una pagina exacta, que... si tubieras que pasar parametros variables en la url...??e es mi caso, debo pasar en la url parametros que varian en cantidad y valor, de modo que mi refresh no debe ser una redirección sino simplemente un refres donde se puedan mantener todos aquellos parametros que hayan sido escritos en la url, en asp yo lo asia digamos que asi:

Response.AddHeader "Refresh", "5"

y es lo que estoy tratando de hacer en php, pero no encuentro el modo correcto.
Tu no puedes enviar cabeceras HTTP antes que las que envias por header() . .es decir . .ese <body> y resto de HTML que pudieras haber enviado antes de header() NO es lógicamente permitido según el protocolo HTTP.

Cita:
estas haciendo una redirección a una pagina exacta, que... si tubieras que pasar parametros variables en la url...??
Pues se indican en el URL como en todo URL que define el standar CGI (Commond Gateway Interface):

Código PHP:
<META HTTP-EQUIV="refresh" CONTENT="60; URL=http://www.nosedonde.tal/pagina.php?variable=<? echo $variable ?>" >
Si vas a redireccionar sobre si mismo .. según HTML y su "META" de tipo refresh (que es lo mismo que usar las cabeceras HTTP directamente por header() o con el lenguaje que gustes ..), es lo mismo pero no indicas el parámetro URL:

Código PHP:
<META HTTP-EQUIV="refresh" CONTENT="60" 
Ahora .. si en PHP no hay función directa que tome el "Query string" y te haga una redirección .. lo haces a mano.

De hecho el "Query string" lo tienes en $_SERVER['QUERY_STRING'] por si quieres tomar las variables que por el URL entraron en la llamada al script en concreto y montar así tu URL a redirecionar o refrescar (para el caso es lo mismo .. si indicas el mismo URL u otro.

Te fijas que que tanto en ASP como en PHP no depende de estos lenguajes (ni de otros del lado del servidor) sino que es parte del protocolo HTTP (y de como lo indiques .. con HTML o con un lenguaje del lado del servidor puedes enviar cacbeceras HTTP al "cliente").

A diferencia de "ASP" .. PHP es un poco más "natural" trabajar por "protocolos" como el HTML en este caso donde el lenguaje te pone a tu disposición una función para "enviar" cabeceras: header() .. lo que pongas o envies en esa función es parte textual (sintax) del protocolo HTTP (en este caso). Por lo menos eso te hace "pensar" de que ese tipo de cosas NO depende del lenguaje y por ende .. todo "lenguaje" que pueda interactuar con el "cliente" podría de alguna forma (sintax y uso concreto) "lanzarlas".

Tal vez un lenguaje con ASP para ese caso te "facilita" usar -determinado- grupo de funciones habituales del protocolo HTTP .. pero lo que si que hace es "confundirte" (como te ha pasado) y no ver que lo mismo que hacías con "otro" lenguaje/sintax era igual en otro (en HTML natural).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 17/07/2006, 10:29
 
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 12 años, 7 meses
Puntos: 0
como siempre agradezco la ayuda. Cluster tienes razón al referirte a la manera natural... ene ste caso es la mas natural la que soluciona mi problema muy facilmente
<META HTTP-EQUIV="refresh" CONTENT="60" >
Aprovecho para agradeerte directamente toda la ayuda que estoy recibiendo de usted, hago una traduccion de un soft al php que nunca en mi vida habia visto y tengo un tiempo limite, prometo estudiar el lenguaje a penas me libere de esta preción. Una vez mas muchas gracias por la ayuda
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 19:55.