Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #20  
Antiguo 16-08-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Efectivamente, no puede enviarse nada al cliente/navegador, antes de haber enviado las correspondientes cabeceras HTTP en la respuesta. Dicho de otro modo, no pueden enviarse cabeceras HTTP una vez se enviara algo al cliente/navegador. Por nada y por algo entendamos texto o cualquier otra cosa que tenga su destino en la salida estándar en estos casos: el cliente o navegador Web.

Para redireccionar con PHP podemos valernos de cabeceras HTTP (como para no pocas cosas, en realidad el protocolo HTTP, las cabeceras disponibles, sobrepasa a PHP y convendría que le echáramos un vistazo porque nos servirá para no pocos asuntos más además) y podría hacerse más o menos así:

Código PHP:
<?php
header
("HTTP/1.1 301 Moved Permanently"); 
header("Status 301 Moved Permanently");
header('Location: http://www.clubdelphi.com/');
die;
?>
Vamos ahora a provocar el conocido error mencionado anteriormente:


Código PHP:
 <?php
echo "Salida al cliente, o sea, se enviarán ciertas cabeceras HTTP y luego esta cadena";
 
header("HTTP/1.1 301 Moved Permanently"); // Error, ya se enviaron las cabeceras HTTP y cierta salida
 
header("Status 301 Moved Permanently");
 
header('Location: http://www.clubdelphi.com/');
 die;
 
?>
Sin embargo, lo contrario sí es correcto:

Código PHP:
 <?php
 header
("HTTP/1.1 301 Moved Permanently");
 
header("Status 301 Moved Permanently");
 
header('Location: http://www.clubdelphi.com/');
echo 
"Salida al cliente, o sea, se enviarán ciertas cabeceras HTTP y luego esta cadena";
die;
 
?>
Es correcto, pero, en este caso la salida del "echo" no se produciría, porque antes nos "vamos" a otra página, redireccionamos al cliente al ClubDelphi, como puede verse.

Pero, como hemos dicho, las cabeceras HTTP no sólo sirven para redireccionar, sino que, pueden servir y lo hacen para muchas otras cosas. En el siguiente ejemplo se envía una cabecera HTTP que indica que la salida ha de tratarse (por el cliente) como un archivo XML y además con cierta codificación de caracteres, lo que se diría indicar al cliente el "Content/Type" de la salida/respuesta que le pensamos hacer llegar, y a continuación de la correspondiente cabecera se imprimiría el contenido, la salida:

Código PHP:
  header('Content-type: text/xml; charset="utf-8"');
  echo 
"
   <loturak version=\""
APP_VERSION ."\">
    <enlace>
     <id>
$enlace->id</id> 
     <titulo>
$enlace->titulo</titulo>
     <url>
$enlace->url</url>
     <fecha>
$enlace->fecha</fecha>
     <descripcion>
$enlace->descripcion</descripcion>     
     <etiquetas>
$enlace->etiquetas</etiquetas>          
    </enlace>
   </loturak>
  "
;
  die; 
Y, bueno... dicho esto... ¿dónde ves tú en el código de Emilio que has referido que haga uso de la función "header"? Yo no lo veo. No veo que añada ninguna cabecera HTTP a la salida , pero, a lo mejor es que no te entendí bien o se me escapa algo en todo caso.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 16-08-2006 a las 15:06:57.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como Creo una Consulta SQL esimon SQL 4 08-02-2006 17:33:52
vista parametrizada tgsistemas SQL 4 30-11-2005 18:06:57
¿Como realizo una consulta? majosf Conexión con bases de datos 4 17-06-2005 20:55:41
como consulta a 3 tablas? Ryu SQL 4 26-04-2005 15:15:14
consulta parametrizada rebollo75 SQL 2 18-11-2004 17:53:52


La franja horaria es GMT +2. Ahora son las 00:09:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi