Foros del Web » Programando para Internet » PHP »

SOLUCIONADO: error: Warning: Cannot modify header information - headers already...

Estas en el tema de SOLUCIONADO: error: Warning: Cannot modify header information - headers already... en el foro de PHP en Foros del Web. Pues veran, estaba yo haciendo un curso de PHP a video, muy completito por cierto y despues de entender el funcionamiento de las cookies y ...
  #1 (permalink)  
Antiguo 07/07/2009, 15:19
Avatar de uriurifrank  
Fecha de Ingreso: abril-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 1
SOLUCIONADO: error: Warning: Cannot modify header information - headers already...

Pues veran, estaba yo haciendo un curso de PHP a video, muy completito por cierto y despues de entender el funcionamiento de las cookies y hacer varias practicas todas satisfactorias con ellas, me dispongo a crear un pequeño programa que hace divisiones automaticamente y manualmente guardando el numerador y divisor que uno quiere operar en una cookie, para que cuando uno acceda nuevamente a la pagina no aparezca todo desde 0, si no con la ultima operacion que hizo uno, pues bien, este es el codigo:
Código PHP:
<html>
<head>
<title> .:Division:. </title>
<?php
$i 
$_GET["num"];
$s $_GET["div"];
if (!(
$i == || $s == 0)) {
        
setcookie("num","$i"); 
        
setcookie("div","$s");
        }
?>
</head>

<Body>
<form action="division.php" method="GET">
Numerador: <input type="text" name="num" />
Divisor: <input type="text" name="div" />
<input type="submit">
</form>
<?php
if ($i == 0) {
            
$i $HTTP_COOKIE_VARS["num"];
            }
if (
$s == 0) {
            
$s $HTTP_COOKIE_VARS["div"];
            }
if (!(
$i == || $s == 0)){
$i2 $i;
$s2 $s;
$R 0;
$O 0;
echo 
"<br>$i dividido entre $s<br>";
echo 
"<br><b>Division Automatica:</b><br>";
echo 
"El resultado es: "$i/$s."<br>";
echo 
"El resto es: "$i%$s."<br>";

while (
$i>=0)
{
$i=$i-$s;
$R++;
}
echo 
"<br><br>El valor de i (Resto) es: "$i."<br>";
echo 
"El valor de R (Resultado) es: "$R."<br><br>";

if (
$i<0){
        
$i=$i+$s;
        
$R--;
        
$R=$R*10;
        }
while (
$i>=0){
      
$i=$i-$s;
      
$R++;
      }
echo 
"<br><br>El valor de i (Resto) es: "$i."<br>";
echo 
"El valor de R (Resultado) es: "$R."<br><br>";
echo 
"<br><b>Division MANUAL:</b><br>";


if (
$i<0){
      
$i=$i+$s;
      
$R--;
      }
echo 
"$i2 || $s2 -->$R <br>";
echo 
"..$i<br>";
echo 
"<br>";
echo 
"El valor de i (Resto) es: "$i."<br>";
echo 
"El valor de R (Resultado) es: "$R."<br><br>";
}
else echo 
"<br><br> Introduce cualquier numero excepto 0";
?>

</Body>
</html>
Pues bien, por mas que lo intento ya sea también poniendo los valores de la cookie con números y palabras diferentes siempre al enviar lo que quiero operar me salta un error diciendo
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\EJERCICIOS\division.php:4) in C:\xampp\htdocs\EJERCICIOS\division.php on line 8

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\EJERCICIOS\division.php:4) in C:\xampp\htdocs\EJERCICIOS\division.php on line 9


Las lineas que dice, son justo estas:
Código PHP:
        setcookie("num","$i"); 
        
setcookie("div","$s"); 
y esas he probado a cambiar los nombres y valores por otros y nada, vamos que siempre haga lo que haga me de ese error a excepción de que quite esas dos lineas ¬¬

Bueno, anticipadamente muchas gracias por la ayuda

Última edición por uriurifrank; 08/07/2009 a las 06:32 Razón: Solucionado !
  #2 (permalink)  
Antiguo 07/07/2009, 15:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: La cookie me da error incluso despues de seguir manuales paso a paso

No puedes imprimir NADA antes de setear una COOKIE.
  #3 (permalink)  
Antiguo 07/07/2009, 16:26
Avatar de uriurifrank  
Fecha de Ingreso: abril-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 1
Respuesta: La cookie me da error incluso despues de seguir manuales paso a paso

Pero... entonces como tendría que hacer para que se quedara almacenada la cookie con el valor que quisiera a la vez que doy el resultado ??
  #4 (permalink)  
Antiguo 07/07/2009, 19:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: ERROR: Warning: Cannot modify header information - headers already sent by

Lee lo siguiente: http://www.forosdelweb.com/wiki/PHP:...n_line_4%22%3F
  #5 (permalink)  
Antiguo 08/07/2009, 06:34
Avatar de uriurifrank  
Fecha de Ingreso: abril-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 1
Respuesta: SOLUCIONADO: error: Warning: Cannot modify header information - headers al

haaa gracias muchas gracias ya lo entendi

Simplemente tenia que dejar fuera de HTML el envio de cookies

Ahora que lo deje asi me funciona perfectamente ! Gracias !!

Código PHP:
<?php
$i 
$_GET["num"];
$s $_GET["div"];
if (!(
$i == || $s == 0)) {
        
setcookie("num","$i"); 
        
setcookie("div","$s");
        }
?>

<html>
<head>
<title> .:Division:. </title>
</head>

<Body>
<form action="division.php" method="GET">
Numerador: <input type="text" name="num" />
Divisor: <input type="text" name="div" />
<input type="submit">
</form>
<?php
if ($i == 0) {
            
$i $HTTP_COOKIE_VARS["num"];
            }
if (
$s == 0) {
            
$s $HTTP_COOKIE_VARS["div"];
            }
if (!(
$i == || $s == 0)){
$i2 $i;
$s2 $s;
$R 0;
$O 0;
echo 
"<br>$i dividido entre $s<br>";
echo 
"<br><b>Division Automatica:</b><br>";
echo 
"El resultado es: "$i/$s."<br>";
echo 
"El resto es: "$i%$s."<br>";

while (
$i>=0)
{
$i=$i-$s;
$R++;
}
echo 
"<br><br>El valor de i (Resto) es: "$i."<br>";
echo 
"El valor de R (Resultado) es: "$R."<br><br>";

if (
$i<0){
        
$i=$i+$s;
        
$R--;
        
$R=$R*10;
        }
while (
$i>=0){
      
$i=$i-$s;
      
$R++;
      }
echo 
"<br><br>El valor de i (Resto) es: "$i."<br>";
echo 
"El valor de R (Resultado) es: "$R."<br><br>";
echo 
"<br><b>Division MANUAL:</b><br>";


if (
$i<0){
      
$i=$i+$s;
      
$R--;
      }
echo 
"$i2 || $s2 -->$R <br>";
echo 
"..$i<br>";
echo 
"<br>";
echo 
"El valor de i (Resto) es: "$i."<br>";
echo 
"El valor de R (Resultado) es: "$R."<br><br>";
}
else echo 
"<br><br> Introduce cualquier numero excepto 0";
?>

</Body>
</html>
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 21:24.