Foros del Web » Programando para Internet » PHP »

con ob_start no visualizo las varibles $_POST

Estas en el tema de con ob_start no visualizo las varibles $_POST en el foro de PHP en Foros del Web. Tengo un script con el sgte código: ob_start(); require("procesa_hoja_presupuesto.php"); $mensaje = ob_get_contents(); ob_end_clean(); mail("[email protected]","presupuesto", $mensaje,"Content-Type: text/html\n"); donde "procesa_hoja_presupuesto.php" recoge unas variables de un formulario, lógicamente ...
  #1 (permalink)  
Antiguo 09/10/2003, 05:35
 
Fecha de Ingreso: mayo-2002
Mensajes: 88
Antigüedad: 15 años, 6 meses
Puntos: 0
con ob_start no visualizo las varibles $_POST

Tengo un script con el sgte código:

ob_start();
require("procesa_hoja_presupuesto.php");
$mensaje = ob_get_contents();
ob_end_clean();
mail("[email protected]","presupuesto", $mensaje,"Content-Type: text/html\n");

donde "procesa_hoja_presupuesto.php" recoge unas variables de un formulario, lógicamente con el método $_POST, pero aunque en la propia página se recogen perfectamente, no hay forma de que esas variables se visulicen en el contenido del mail, que se supone que es el resultado de enviar al buffer de salida el html generado por "procesa_hoja_presupuesto.php". Todo el resto de la página no me da ningún problema y se ve de maravilla.

¿alguien sabe que puede estar pasando???. Mil gracias.

Última edición por 3pMaria; 09/10/2003 a las 05:56
  #2 (permalink)  
Antiguo 09/10/2003, 06:36
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
en vez de hacer require metele un include()
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 09/10/2003, 08:46
 
Fecha de Ingreso: mayo-2002
Mensajes: 88
Antigüedad: 15 años, 6 meses
Puntos: 0
Hola epplestun, gracias por contestar, pero antes ya lo tenía con include y no iba, le puse require porsiacaso pero nada, ¿alguna otra idea???
  #4 (permalink)  
Antiguo 09/10/2003, 08:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

En principio include e require son iguales, excepto que require da un error si el fichero no existe.

Con este codigo no capturas el HTML generado por el fichero incluido, sino que capturas el HTML generado por ejecutar el codigo del fichero en el lugar donde esta el require(). Es casi lo mismo, pero totalmente diferente.

Haz la prueba de quitar el ob_start() y el ob_end_clean() para ver que HTML se genera con el require(). Si siguen sin verse los valores, es un problema del codigo del fichero incluido (porque dices que si llegan valores).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 09/10/2003, 08:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
podrías poner el código de:

require("procesa_hoja_presupuesto.php");

Usas alguna función? ..o es simple HTML con PHP (variables) incrustadas?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 09/10/2003, 09:27
 
Fecha de Ingreso: mayo-2002
Mensajes: 88
Antigüedad: 15 años, 6 meses
Puntos: 0
Ahí va el codigo:

<?session_start();
include("verifica_sesiones.php");
if ($permiso)
{//PUEDO EJECUTAR EL SCRIPT
if($nivel==0)
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Mendive & Corral S.L.</title>
<script language="JavaScript" type="text/javascript">
<!--
function procesa_impresion()
{
window.print();
document.getElementById('formImp').action="mail.ph p";
document.getElementById('formImp').submit;
return true;
}
//-->
</script>
</head>
<body><?
$array_precios=$_SESSION['array_precios'];
$array_uds=$_SESSION['array_uds'];
$array_ambitos=$_SESSION['array_ambitos'];

//Calculo el mes y el año:
$fecha=getdate();
$mes=$fecha["mon"];
$anio=$fecha["year"];
$dia=$fecha["mday"];
$obra=$_POST['obra']; //ESTA ES LA VBLE QUE NO SE VE LUEGO
}
?>
<form id="formImp" action="procesa_hoja_presupuesto.php" method="POST">
<table align="center" width="600">
<tr>
<td colspan="4" align="center" style="background-color: #e2e2e2;">&nbsp;</td>
</tr>
<tr>
<td colspan="4" align="center" style="background-color: #e2e2e2;" ><b>PRESUPUESTO</b></td>
</tr>
<tr>
<td colspan="4" align="center" style="background-color: #e2e2e2;">&nbsp;</td>
</tr>
<tr>
<td colspan="4"><b>A nombre de:&nbsp;</B><?echo $_SESSION['nombreUser'];?></td>
</tr>
<tr>
<td colspan="2"><b>Obra:</b></td>
<td colspan="2" align="center"><b>Fecha:</b></td>
</tr>
<tr>
<td colspan="2"><?echo $obra?></td>
<td colspan="2" align="center"><?echo $dia." - ".$mes." - ".$anio;?></td>
</tr>

<tr>
<td colspan="4" align="center" style="background-color: #e2e2e2;"><b>ARTÍCULOS</b></td>
</tr>
<tr>
<td><b>Artículo</b></td><td align="center"><b>Cantidad</b></td><td align="center"><b>Precio</b></td><td align="center"><b>SubTotal</b></td>
</tr>
<?
$total=0;
if (isset($array_uds))
{
foreach ($array_uds as $codigo => $ambito)
{
//imprimo los productos:
$sql="SELECT descripcion FROM productos WHERE cod_producto=$codigo";
$result2=mysql_query($sql,$link);
$row2=mysql_fetch_array($result2);
$desc=$row2["descripcion"];?>
<tr>
<td>
<?echo $desc; ?>
</td>
<td align="center">
<?$num=$array_uds[$codigo];echo $num;?>
</td>
<td align="center">
<?$num=number_format ($array_precios[$codigo],2,',','.');
echo $num;?>
</td>
<td align="center">
<?$mult=$array_uds[$codigo]*$array_precios[$codigo];
$total+=$mult;
$mult=number_format ($mult,2,',','.');echo $mult;?>
</td>
</tr>
<?
}
}

?>
<tr><td>&nbsp;</td></tr>
<tr>
<td colspan="4" align="right"><b>TOTAL:&nbsp;</b><? $total=number_format ($total,2,',','.'); echo $total; ?>&nbsp;Euros</td>
</tr>
<?
}
else
die ("Error cod.: 1 - Nivel de acceso incorrecto!");
}
else //ACCESO PIRATA
die ("Error cod.: 2 - Acceso incorrecto!");
?>
<tr>
<td colspan="4" align="center"><br /><input type="submit" id="finalizar" value="Finalizar" onclick="procesa_impresion()"/></td>
</tr>
</table>
</form>
</body>
</html>

En la propia página todo se ve bien, es luego cuando llamo a 'mail.php', y envía el mail, que falta el dato $obra capturado con $_POST.

Y por más q busco no encuentro nada..., muchas gracias por el interés

Última edición por 3pMaria; 09/10/2003 a las 09:32
  #7 (permalink)  
Antiguo 09/10/2003, 09:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Es que no veo ningun campo en el formulario donde pases esa variable. Añade un campo hiden llamado obra con el valor de $_POST['obra']:

<input type="hiden" name="obra" value="<?php echo $_POST['obra']; ?>">

El "problema" es que no propagas ese valor. Prueba esto y nos cuentas.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 09/10/2003, 09:38
 
Fecha de Ingreso: mayo-2002
Mensajes: 88
Antigüedad: 15 años, 6 meses
Puntos: 0
¡¡¡Gracias Josemi!!!, ya funciona!!!!!, la clave me la diste en el primer mensaje, pq era la primera vez q usaba el ob_start() y yo interpreté q con el include cogía el código generado, no q lo ejecutaba de nuevo, así que claro, la varible $obra la perdía en el último paso, necesitaba propagarla con un hidden como bien has dicho.

Lo dicho, muchísisisiismas gracias, que llevo toda la mañana con esta dichosa historia

Chao!!!!
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 11:30.