Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Diseño web | Promoción web | Ganar dinero
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Control de la salida en PHP


PHP dispone de funciones para controlar en la salida de datos hacia el cliente. Se puede almacenar la salida en un buffer, para enviarla al cliente cuando se desee.


13/2/07 - Como sabemos, PHP realiza un procesamiento de la página y envía al ordenador del usuario el resultado de procesar el código PHP. Por regla general, a medida que va procesando la página, se envía el código HTML resultante al cliente, pero esta configuración se puede cambiar, incluso en tiempo de ejecución.

Con PHP podemos almacenar la salida, a medida que se va generando, en un buffer. De modo que no se envíe ningún dato al cliente hasta que se indique expresamente. Existen una serie de funciones que se utilizan para conseguir este comportamiento, que son las funciones de control de salida.

Este comportamiento es muy útil cuando se tiene que enviar información en la cabecera de la página, después de haber empezado a procesar el código PHP y haber empezado a generar la salida.

Nota:Como debemos saber, existen funciones como header() o setcookie() que deben ejecutarse antes de haber enviado ningún texto de la página al cliente. En caso contrario se producirá un error "Cannot modify header information - headers already sent by…"

En este artículo veremos un pequeño ejemplo de código PHP que realiza el buffering de la salida, para enviarla una vez se ha terminado de procesar todo el código.

Utilizaremos dos funciones que posiblemente no conozcamos, para el control de la salida: ob_start() y ob_end_flush().

La función ob_start() sirve para indicarle a PHP que se ha de iniciar el buffering de la salida, es decir, que debe empezar a guardar la salida en un bufer interno, en vez de enviarla al cliente. De modo que, aunque se escriba código HTML con echo o directamente fuera del código PHP, no se enviará al navegador hasta que se ordene explícitamente. O eventualmente, hasta que se acabe el procesamiento de todo el archivo PHP.

La función ob_end_flush() sirve para indicar a PHP que se desea realizar el volcado de todo el bufer en la salida, con lo que se enviará al cliente que ha solicitado la página.

Veamos este código:

<?
ob_start();
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"
?>
<html>
<head>
<title>Página procesada con buffer de salida</title>
</head>
<body>
Esta es mi página!!!
</body>
</html>
<?
setcookie("nombre", "pepe");
ob_end_flush();
?>


Nada más comenzar se ejecuta ob_start(). Con esto se guardará toda la salida en un buffer. Ahora, cuando se escribe en la página, en la siguiente línea con el echo, y en las otras, fuera del código PHP, lo único que ocurre es que se va llenando el mencionado buffer.

Antes de terminar la página, en el siguiente bloque de código PHP, se envía una cookie al navegador del usuario. Esa cookie llega sin problemas y no genera ningún error, a pesar que se ha escrito código de la página, dado que el código no se había enviado al navegador, sino que se había almacenado en el buffer.

Por último, se ejecuta ob_end_flush() para enviar el buffer a la salida.

Podemos probar a comentar las líneas que ejecutan las funciones ob_start() y ob_end_flush(). Entonces veríamos como la función setcookie() provocaría un error, porque esta función no se puede ejecutar si ya se ha escrito texto en la página y por tanto se han enviado ya las cabeceras del http al cliente.

Es un ejemplo muy sencillo del control de la salida en PHP. Pero a partir de aquí se puede complicar todo lo que se necesite. Esperamos que este artículo sea una interesante introducción para continuar investigando temas relacionados con esta funcionalidad básica de PHP.

Puede resultarte interesante seguir con este tema, por lo que te recomiendo que leas el artículo Control de salilda en PHP II .

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Taller de PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP


 Comentarios de los visitantes
Aun no hemos recibido comentarios de este artículo.
Puedes ser el primero en enviar tu comentario.



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Taller de PHP
Categorías
+Scripts en PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia