Tema: FAQ's de PHP
Ver Mensaje Individual
  #120 (permalink)  
Antiguo 07/11/2004, 17:29
Avatar de Nefertiter
Nefertiter
 
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 10 meses
Puntos: 9
aqui un pequeña contribucion que tenia hace muuuucho guardada por ahi...

Pregunta:Que es y para que sirve el Control de Salida?

Respuesta: Las funciones de Control de Salida nos permiten controlar las salidas producidas por el script.
Esto puede resultar util por ejemplo para trabajar para trabajar con con funciones que deben ser ejecutadas utilizando datos que se han "salido", pero deben ser ejecutadas sin que se halla enviado ninguna como setcookie() o header().
Acontinuacion haremos un script para tratar de explicar como el control de salida puede servirnos. Lo que el script hace es tomar unas variables definidas por nosotros, o por que no, proveninentes de algun formulario; realizar una salida determinada utilizando estos datos, transformar esa salida es una variable y enviarla como mensaje en un mail.

.mandar.php
Código PHP:
<?php 
ob_start
();
/*
La Funcion "ob_start()" hace que todos los datos que se empizan a emitir
queden guardados en un "buffer" y mientras este este "on" so se envian salidas del script
Declaremos algunas variables para el ejemplo
*/
$nombre="Pepito";
$apellido="Comilon";
$edad=48;
$para="[email protected]";
echo 
'<html>
<head>
<title>Vulcar with Output Control and Mail() function</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>Nombre:</td>
<td>'
.$nombre.'&nbsp;</td>
</tr>
<tr>
<td>Apellido:</td>
<td>'
.$apellido .'&nbsp;</td>
</tr>
<tr>
<td>Edad:</td>
<td>'
.$edad .'&nbsp;</td>
</tr>
<tr>
<td colspan="2">Se le ah enviado un mail a su correo electronico: '
.$para.' con el contenido de esta pagina</td> 
</tr>
</table>
</body>
</html>'
;
$todo=ob_get_contents();
ob_end_clean();
echo 
$todo;
/*
la funcion "ob_get_contents()" devuelve todo salida provocada por el script.
La funcion "ob_end_clean()" da por terminado el almacenamiento ("off") de datos y los elimina.
Si no se especifica como debe finalizar el buffer del script por defecto se "agrega" "ob_end_flush()"
Fijense que curioso lo que pasa cuando el "echo $todo" se coloca antes que el ob_end_clean()
y que sucede cuando este no esta.
Podriamos no realizar el echo y usar la funcion mail, luego ob_end_clean() y luego un header("Location:algo.php")
pero esto es solo un ejemplo :P

Ahora mandamos el mail
Definamos algunas variables:*/
$de="[email protected]";
$tema="Tengo Tus Datos Aqui";
$mensaje=$todo;
$headers="From:".$de."\nReply-To:".$de."\n Mime-Version: 1.0\n Content-Type: text/html\n";
@
mail($para,$tema,$mensaje,$headers);
?>
Para el ejemplo anterior utilizamos un funcion escencial para el funcionamiento del script "ob_get_contents()" pero esa no es la unica funcion que veremos, en el ejemplo siguiente usaremos "ob_get_length()" que nos devuelve la longitud de contenidos almacenados dentro del buffer.
.peso.php
Código PHP:
<?php 
ob_start
();
?>
<html>
<head>
<title>Ejemplo de ob_get_length()</title>
</head>
<body>
ALGUN TEXTO PARA HACER PESO NUMAS :P<br>
<?php 
$peso
=(ob_get_length()/1024);
printf ("La pagina pesa: %01.2f Kbytes aproximadamente "$peso);
/*Notece que ob_end_flush es obviado pero pero el escript funciona igual*/
?>
</body>
</html>
Acabamos de ver como utilizar una funcion de control de salida para calcular el peso de la pagina, este no es exacto porque no se tiene en cuenta el peso de los caracteres posteriores a "ob_get_length" y si usamos este codigo al final, de la pagina a la cual le queremos medir, es peso estos ultimos caracteres es casi despreciable.

Espero les haya gustado, cualquier duda me pueden contactar a traves de mi emailo mejor posteen aqui