Ver Mensaje Individual
  #11 (permalink)  
Antiguo 07/02/2006, 06:41
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No, xyyy7 ..

No son fallos de PHP .. es así como funciona el protocolo HTTP.

No soy el más adecuado para explicar el protocolo HTTP .. pero conociendolo veras que muchos "misterios" tienen solución. ..

El protocolo HTTP siempre está ahí funcionando cuando hacemos alguna petición de un script PHP o página en general por http:// .. La petición (http://www.tal.tal/script.php) en sí ya tiene sus própias reglas (ya las conoceras y usaras cuando propagas variables en el URL para hacerselas llegar a un script PHP . .o usas un formulario HTML con sus "metodos" POST/GET .. etc). La respuesta que este devuelve (por eso se llama a todo esto "cliente-servidor"), no es la "pagina HTML" resultante que observamos y vemos ... hay más parte de la "comunicación" por "debajo" que se produce. Eso es lo que llaman "cabeceras" .. que no es más que un montón de códigos de control que dicen cosas como "respuesta OK, .. o falló con su código de error. Uno de esos "datos" que se envia con cada "petición" es el "tipo de datos que se envian como respuesta" .. puede ser texto plano/html .. pero también "binarios" como una imagen (image/pjpeg o image/png por ejemplo ...) Esto es para que el "cliente" (tu navegador en tu caso) identifique y así interprete el dato que se le envia.

El caso es que se ejectua una tipo de datos por petición .. por eso no se pueden mezclar. Y si los quieres mezclar para eso usas los tag's HTML que son del tipo "src" (Source) .. como el de imagen: <img src="algo.tal"> que está diseñado para aceptar formatos de datos (MIME) de imagen (image/xxxxx) .. o los <script src="....."> para llamar a "código externo" que ejecutar en el cliente ... Ese código externo que se llama debe incorporar como "petición" independiente que es sus própias definiciones de cabeceras .. sobre todo y mínimo la que indica el "tipo de datos" que se envian (content-type: .....)

Desde PHP podemos enviar estas cabeceras HTTP directamente al "cliente" por médio de la función header() .. y eso lo podemos hacer por qué PHP recordemos que se ejecutan "en el lado del servidor" -antes- de que el resto de código que enviamos se pueda ejecutase.

Para "colmo" el servidor HTTP (Apache o el que uses) por defecto anque un lenguaje del lado del servidor como PHP no lo haga explicitamente (como lenguaje o como código que uno desarrolla) .. crea automáticamente algunas cabeceras HTTP para generar alguna salida standar (suele ser texto/plano/HTML como tipo de dato .. y lo básico). Esto es así sobre todo cuando se usan estos lenguajes del lado del servidor como PHP en modo "módulo" donde PHP depende directamente del serivor HTTP y la "respuesta" del lenguaje se entiende que será preferentemente bajo este protocolo (por eso cuando tenemos que entregar otra "respuesta" o conectarse a otro "protocolo" se usan conexiones directas por "sockets" (fsockopen()). Por ejemplo otros lenguajes como "Perl" .. las cabecersa HTTP se componen "a mano" (o con ayuda de cierto modulo si mal no recuerdo que ayuda en la taréa ..) pero por defecto no lo hace por la orientación del lenguaje (no sólo para crear aplicaciones "HTTP" .. sino multiuso o más destinadas en algunos casos a ejecutarse como "línea de comandos".).

Lo más importe creo yo en todo esto es saber y tener bien claro dos cosas:

1) Las cabeceras HTTP se envian -antes- de cualquier otra salida que podamos generar: lease o entiendase como "salida" al "dato" en sí que enviamos .. un simple espacio .. un simple salto de línea .. un caracter .. algo de HTML directo .. de Javascript .. de echo "algo" ... etc.

2) PHP se ejecuta en el lado del servidor y con este componemos toda la "salida" que el cliente recibirá .. sea una pagina HTML completa, parte de ella, con javascript .. o un XML o cualquier tipo de "lenguaje" que el "cliente" entienda e interprete.

Si quieres ver más claro el tema . .usa google y busca todo lo referente al protocolo HTTP, "cliente-servidor" y temas afines.

Un saludo,