Foros del Web » Programando para Internet » PHP »

encuesta session error?????

Estas en el tema de encuesta session error????? en el foro de PHP en Foros del Web. cuando lo ejecuto por primera vez esta todo bien pasa al resultado.php pero cuando cargo de nuevo encuesta.php me da el siguiente error Has pasado ...
  #1 (permalink)  
Antiguo 26/12/2005, 22:41
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
encuesta session error?????

cuando lo ejecuto por primera vez esta todo bien
pasa al resultado.php

pero cuando cargo de nuevo encuesta.php
me da el siguiente error

Has pasado por pagina1.php
Warning: Cannot modify header information - headers already sent by (output started at /home/ju000393/public_html/zzz/encuesta.php:6) in /home/ju000393/public_html/zzz/encuesta.php on line 7

encuesta.php
Código PHP:
<?php
//Retomamos la sesión
session_start();
//Chequeamos si la variable de sesión existe
if($_SESSION[id]) {
echo 
'Has pasado por pagina1.php';
header("Location: resultado.php");
}

    
//cargo el numero de respuestas de un fichero de texto
    
$f=fopen("encuesta.txt","r");
    
$todas=fread($f,filesize("encuesta.txt"));
    
$respuestas=explode(",",$todas);
    
fclose($f);

    if (
$respuesta) {
        
//incremento la respuesta y la guardo en el fichero
           
$respuestas[$respuesta-1]++;
        
$f=fopen("encuesta.txt","w");
        
$todas=$respuestas[0].",".$respuestas[1].",".$respuestas[2].",".$respuestas[3];
        
fwrite($f,$todas,strlen($todas));
        
fclose($f);    
    }       
?>
<body bgcolor="#394984" text="#FAFFFF" topmargin="10" leftmargin="10">
<form name="encuesta" action="resultado.php" method="post""><FONT style="FONT-SIZE: 9pt"><b>
 Que Preferis:</font></b><br><FONT style="FONT-SIZE: 7pt" color=#ffffff><BR>
 <input type=radio name="respuesta" Value="1"> Dance <br>
 <input type=radio name="respuesta" Value="2"> Latin <br>
 <input type=radio name="respuesta" Value="3"> Pop <br>
 <input type=radio name="respuesta" Value="4"> Rock <br><BR>
 <input type="submit" value="Votar">
</form>
---------------------------------------------------------------

resultado php


Código PHP:
<?php


//Inicializamos la sesión para comenzar
session_start();
//Registramos dos variables de sesión
$_SESSION[id] = session_id();


    
//cargo el numero de respuestas de un fichero de texto
    
$f=fopen("encuesta.txt","r");
    
$todas=fread($f,filesize("encuesta.txt"));
    
$respuestas=explode(",",$todas);
    
fclose($f);

    if (
$respuesta) {
        
//incremento la respuesta y la guardo en el fichero
           
$respuestas[$respuesta-1]++;
        
$f=fopen("encuesta.txt","w");
        
$todas=$respuestas[0].",".$respuestas[1].",".$respuestas[2].",".$respuestas[3];
        
fwrite($f,$todas,strlen($todas));
        
fclose($f);    
    }       

    
$total=$respuestas[0]+$respuestas[1]+$respuestas[2]+$respuestas[3];
    if(
$total==0) {
        
$porcentaje[0]=0;
        
$porcentaje[1]=0;
        
$porcentaje[2]=0;
        
$porcentaje[3]=0;
    } else {
        
$porcentaje[0]=sprintf("%1.2f",(($respuestas[0]/$total)*100));
        
$porcentaje[1]=sprintf("%1.2f",(($respuestas[1]/$total)*100));
        
$porcentaje[2]=sprintf("%1.2f",(($respuestas[2]/$total)*100));
        
$porcentaje[3]=sprintf("%1.2f",(($respuestas[3]/$total)*100));
}
?>
<body bgcolor="#394984" text="#FFFFFF" topmargin="10" leftmargin="10">
<table border="0"><FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
 <tr>
  <td colspan="3" align="center"><FONT style="FONT-SIZE: 9pt"><b>
   Que Preferis<br></font></b><br>
  </td>
 </tr>
 <tr>
  <td align="left">
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
Dance
</font></b>
  </td>
  <td align="left">
 <img src="red.png" height="15" width="<?php echo "$porcentaje[0]"?>">
  </td>
  <td>
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
<?php echo "$porcentaje[0]%"?>
</font></b>
  </td>
 </tr>
 <tr>
  <td align="left">
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
Latin
</font></b>
  </td>
  <td align="left">
   <img src="blue.png" height="15" width="<?php echo "$porcentaje[1]"?>">
  </td>
  <td>
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
   <?php echo "$porcentaje[1]%"?>
</font></b>
  </td>
 </tr>
 <tr>
  <td align="left">
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
Pop
</font></b>
  </td>
  <td align="left">
   <img src="yellow.png" height="15" width="<?php echo "$porcentaje[2]"?>">
  </td>
  <td>
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
   <?php echo "$porcentaje[2]%"?>
</font></b>
  </td>
 </tr>
 <tr>
  <td align="left">
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
Rock
</font></b>
  </td>
  <td align="left">
   <img src="green1.png" height="15" width="<?php echo "$porcentaje[3]"?>">
  </td>
  <td>
<FONT style="FONT-SIZE: 9pt" color=#ffffff><b>
   <?php echo "$porcentaje[3]%"?>   
</font></b>
  </td>
 </tr>
</table>
<br><br>

alguien puede ayudarme y decirme que estoy haciendo mallll???

gracias

Última edición por Cluster; 27/12/2005 a las 09:42
  #2 (permalink)  
Antiguo 26/12/2005, 23:09
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
De acuerdo me parece haberlo solucionado

el problema radica en la parte del codigo

encuesta php

<?php
//Retomamos la sesión
session_start();
//Chequeamos si la variable de sesión existe
if($_SESSION[id]) {
echo 'Has pasado por pagina1.php'; **********
header("Location: resultado.php");
}

no puede ir antes de header un codigo htm
habiendo dos soluciones una borrar el codigo htm
o
redireccionandola con
echo "<script>location.href = 'resultado.php'</script>";



saludos y felices fiestasss
  #3 (permalink)  
Antiguo 26/12/2005, 23:13
 
Fecha de Ingreso: octubre-2005
Mensajes: 407
Antigüedad: 18 años, 6 meses
Puntos: 2
cerrar session en cierto tiempo trasnscurrido

ahora lo que no se, es como hacer para que despues de 10 minutos me deje votar de nuevo cerrando la seccion
no se si me explico.

que codigo devo poner y adonde????

alguien puede ayudarme????

thx feliz año
  #4 (permalink)  
Antiguo 27/12/2005, 07:19
 
Fecha de Ingreso: abril-2005
Ubicación: 34°35'49.20"S | 58°24'06.
Mensajes: 158
Antigüedad: 19 años
Puntos: 3
hmm
a ver, CREO que seria asi
primero, tenes que tomar la hora (funcion time() ) de la votacion y guardarla. (cookie, session, whatever)

la siguiente vez q el usuario quiera hacer la votacion, comparar la hora guardada con la actual, y si surge una diferencia menor a 10 minutos (600 segundos) denegar la entrada.

Donde ponerlo? despues de

Código PHP:
<?php
//Retomamos la sesión
session_start();
//Chequeamos si la variable de sesión existe
if($_SESSION[id]) {
echo 
'Has pasado por pagina1.php';
header("Location: resultado.php");
}

exitos!
  #5 (permalink)  
Antiguo 27/12/2005, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
PHP y su uso por defecto de sesiones no gestiona tiempos de expiración para sesiones individuales (si para toda sesión creada en el servidor).

Ese dato lo tendrás que gestionar a parte .. sobre una Base de datos/archivos de texto plano .. etc o incluso sobre una cookie .. pero no en la misma sesión que pueda expirar simplemente por qué el usuario cerró tu aplicación y volvió a entrar al instante (generandose otra sesión para esa nueva entrada).

Realmente el uso de sesiones para un sistema de votaciones no es lo ideal. En tal caso cookies .. ahí puedes fácilmente establecer un tiempo de expiración para la cookie y olvidarte del tema. Si quieres votaciones/encuestas seguras es necesario implementar una gestión de usuairos .. justamente para tener identificado al usuario, cuando votó (fecha/hora) y así poder determinar si votó en tanto tiempo .. podrá hacerlo nuevamente pasado un tiempo o cuando la encuesta cambie.

Un saludo,
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:58.