Foros del Web » Programando para Internet » PHP »

Sesiones

Estas en el tema de Sesiones en el foro de PHP en Foros del Web. Hola tengo una pregunta... tengo un session_start abierta en mi formulario por la cual yo paso variables de los datos personales de una persona que ...
  #1 (permalink)  
Antiguo 22/03/2011, 10:01
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Sesiones

Hola

tengo una pregunta... tengo un session_start abierta en mi formulario por la cual yo paso variables de los datos personales de una persona que se ha logueado... la persona contesta el primer formulario y pasa a otro formulario... y finaliza con un reporte...

la duda que tengo es que al momento de cerrar la pagina.. y vuelvo a entrar directamente al formulario.... me deja entrar sin loguin y me muestra los datos de la sesion que cerre. en cambio si abro otra ventana y limpio historial,temporales,cookies,etc. ahi si me pide loguin...

Que puede estar pasando?? que codigo puedo utilizar?

Código PHP:
<?
session_start
();

if (!isset(
$_SESSION['cedula']))
{ echo 
' No se ha registrado correctamente, ingrese nuevamente'; } 
else
{.................
formulario
esto es lo que tengo en el inicio de mi formulario
  #2 (permalink)  
Antiguo 22/03/2011, 10:03
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Sesiones

adapta este codigo :

Código PHP:
Ver original
  1. class session   {
  2.     public $usuario;
  3.    
  4.     function __construct($usuario)  {
  5.         $this->usuario = $usuario;
  6.     }
  7.     public function __validar($url)     {
  8.         session_start();
  9.         if (!isset( $_SESSION['usuario'])) {
  10.             echo '<script>
  11.                 alert("Su session ha caducado o no ha iniciado sesion. Presione aceptar para iniciar sesion nuevamente.");
  12.                 parent.location.href="../index.php";</script>';
  13.         }
  14.     }
  15.     public function __cerrar()  {
  16.         session_destroy();
  17.         unset($_SESSION['usuario']);
  18.         echo '<script language=javascript>parent.location.href="../index.php";</script>';
  19.     }
  20. }

saludos

Edit: lo puedes dejar en un archivo y luego realizar include del archivo, por lo menos de esa forma lo utilizo yo
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #3 (permalink)  
Antiguo 22/03/2011, 10:11
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Sesiones

te falta terminar la session
Código PHP:
Ver original
  1. unset($_SESSION['cedula']);//elimina la variable
  2. //tambien puedes hacer $_SESSION['cedula']=''; y si tuvieras mas de un contenido en el array
  3. //puedes usar $_SESSION = array();
  4. session_destroy();//destruye la session
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #4 (permalink)  
Antiguo 22/03/2011, 10:16
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

no me esta haciendo nada pues me deja entrar sin loguearme.... alguna otra solucion con la que me puedan ayudar?
  #5 (permalink)  
Antiguo 22/03/2011, 10:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
adapta este codigo :

Código PHP:
Ver original
  1. class session   {
  2.     public $usuario;
  3.    
  4.     function __construct($usuario)  {
  5.         $this->usuario = $usuario;
  6.     }
  7.     public function __validar($url)     {
  8.         session_start();
  9.         if (!isset( $_SESSION['usuario'])) {
  10.             echo '<script>
  11.                 alert("Su session ha caducado o no ha iniciado sesion. Presione aceptar para iniciar sesion nuevamente.");
  12.                 parent.location.href="../index.php";</script>';
  13.         }
  14.     }
  15.     public function __cerrar()  {
  16.         session_destroy();
  17.         unset($_SESSION['usuario']);
  18.         echo '<script language=javascript>parent.location.href="../index.php";</script>';
  19.     }
  20. }

saludos

Edit: lo puedes dejar en un archivo y luego realizar include del archivo, por lo menos de esa forma lo utilizo yo
no me esta haciendo nada pues me deja entrar sin loguearme.... alguna otra solucion con la que me puedan ayudar?
  #6 (permalink)  
Antiguo 22/03/2011, 10:20
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

Cita:
Iniciado por eits Ver Mensaje
te falta terminar la session
Código PHP:
Ver original
  1. unset($_SESSION['cedula']);//elimina la variable
  2. //tambien puedes hacer $_SESSION['cedula']=''; y si tuvieras mas de un contenido en el array
  3. //puedes usar $_SESSION = array();
  4. session_destroy();//destruye la session
saludos.
podrias explicarme como lo manejo... en donde lo coloco?... y "y si tuvieras mas de un contenido en el array".. como se haria eso?

gracias por sus respuestas!!
  #7 (permalink)  
Antiguo 22/03/2011, 10:21
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Sesiones

lo que te escribi funciona correctamente, cual es tu nivel en cuanto a programacion??? donde colocaste el codigo? como lo ejecutaste?? , compadre te daria lo demas del code, pero cuando uno se esfuerza aprende y creo que el code que te deje esta super facil de implementar, saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #8 (permalink)  
Antiguo 22/03/2011, 10:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
lo que te escribi funciona correctamente, cual es tu nivel en cuanto a programacion??? donde colocaste el codigo? como lo ejecutaste?? , compadre te daria lo demas del code, pero cuando uno se esfuerza aprende y creo que el code que te deje esta super facil de implementar, saludos
realmente estoy aprendiendo.. x lo que recurro a este foro... pero lo modifique de acuerdo a mi formulario pero no me sale error solo que me deja pasar sin loguearme??

Gracias por tu respuesta y comprension... apenas estoy empezando
  #9 (permalink)  
Antiguo 22/03/2011, 10:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Sesiones

Lo que te ocurre es normal. Dependiendo de la configuración del servidor, las sesiones duran x minutos, o bien hasta que se cierra el navegador. Por tanto, si cierras la página, pero no el navegador, y vuelves a cargar la página, la sesión seguirá activa.

Si no quieres que esto te suceda, debes cerrar la sesión, como te han comentado en mensajes anteriores.
  #10 (permalink)  
Antiguo 22/03/2011, 10:27
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: Sesiones

mira , ahora tan solo te falta el paso final , que creo que lo podrias lograr

Código PHP:
Ver original
  1. $session = new session($_SESSION['usuario']);
  2. $session->__validar('validasesion.php');//llamas al archivo que te deje arriba
  3. $editFormAction = $_SERVER['PHP_SELF'];
  4. if (isset($_SERVER['QUERY_STRING'])) {
  5.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  6. }
  7. if ((isset($_POST["MM_session"])) && ($_POST["MM_session"] == "form2")) {
  8.         $session = new session($_SESSION['usuario']);
  9.         $session->__cerrar();
  10. }

saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #11 (permalink)  
Antiguo 22/03/2011, 10:27
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

hay alguna forma de que en el momento que yo muestre el reporte de lo que la persona ha contestado.. me borre sesion y me devuelva al index??... y lo otro he estado leyendo sobre lo que tu dices de las sesiones x tiempo.. pero sinceramente.. no me arriesgo pues no se como manejar esos codigos algo complejos...
  #12 (permalink)  
Antiguo 22/03/2011, 10:27
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Sesiones

el destroy y el unset(o cualquiera de los otros métodos de limpiar variables) deben de ir al final de tu proceso, en tu caso si no me equivoco debes de hacerlo después de crear el reporte.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #13 (permalink)  
Antiguo 22/03/2011, 10:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
mira , ahora tan solo te falta el paso final , que creo que lo podrias lograr

Código PHP:
Ver original
  1. $session = new session($_SESSION['usuario']);
  2. $session->__validar('validasesion.php');//llamas al archivo que te deje arriba
  3. $editFormAction = $_SERVER['PHP_SELF'];
  4. if (isset($_SERVER['QUERY_STRING'])) {
  5.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  6. }
  7. if ((isset($_POST["MM_session"])) && ($_POST["MM_session"] == "form2")) {
  8.         $session = new session($_SESSION['usuario']);
  9.         $session->__cerrar();
  10. }



este codigo va despues de abrir session_start ???

saludos
  #14 (permalink)  
Antiguo 22/03/2011, 10:39
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Sesiones

Hola Nathe,
deberias analizar bien cada ayuda que te ofrecen.
cada aporte que hacen los amigos es para que vos la adaptes a tu sistema
y no es magico por que solo vos conoces tu sistema.
  #15 (permalink)  
Antiguo 22/03/2011, 10:42
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
mira , ahora tan solo te falta el paso final , que creo que lo podrias lograr

Código PHP:
Ver original
  1. $session = new session($_SESSION['usuario']);
  2. $session->__validar('validasesion.php');//llamas al archivo que te deje arriba
  3. $editFormAction = $_SERVER['PHP_SELF'];
  4. if (isset($_SERVER['QUERY_STRING'])) {
  5.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  6. }
  7. if ((isset($_POST["MM_session"])) && ($_POST["MM_session"] == "form2")) {
  8.         $session = new session($_SESSION['usuario']);
  9.         $session->__cerrar();
  10. }


Código PHP:
if ((isset($_POST["MM_session"])) && ($_POST["MM_session"

en esta parte MM_session es igual a por ejemplo... cedula y nombre??



saludos
  #16 (permalink)  
Antiguo 22/03/2011, 10:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 30
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Sesiones

ya lo acomode.... muchas gracias!! bUllan9ebrio
  #17 (permalink)  
Antiguo 22/03/2011, 10:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Sesiones

Es que no es solo eso, el cada vez que realice la prueba debe destruir todas la sesiones... puede que este haciendo la prueba con la sesión abierta... adicional a eso no sabemos como crea la sesión cuando el usuario se loguea...

Mi consejo es que le haga un echo a $_SESSION['cedula'] para ver si la sesión esta o no esta...

Adicional a mi me parece que debería verificar así:

if (isset($_SESSION['cedula']) && $_SESSION['cedula'] != "")

así verifica:

1. La variable existe ?
2. La variable no esta vacía ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: Ninguno
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 01:08.