Foros del Web » Programando para Internet » PHP »

Sesiones en PHP

Estas en el tema de Sesiones en PHP en el foro de PHP en Foros del Web. Hola: No tengo mucha experiencia programando en PHP y ahora tengo enormes problemas con las sesiones en php. Al parecer las sesiones no se guardan ...
  #1 (permalink)  
Antiguo 01/02/2010, 00:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Sesiones en PHP

Hola:
No tengo mucha experiencia programando en PHP y ahora tengo enormes problemas con las sesiones en php.
Al parecer las sesiones no se guardan y por esta razón no puedo acceder a la página donde verifiqué que el usuario estuviera autenticado para entrar.

Aquí les envío el código:

//Este es el formulario que envía los datos a la página control.php
<form id='form1' name='form1' method='post' action='control.php' class='form-autenticar'>
<p>
<label>Usuario
<input type='text' name='user' id='user' />
</label>
</p>
<p>
<label>Contraseña
<input type='password' name='pass' id='pass' />
</label>
</p>


<input name='opcion' name='id' type='submit' value='Autenticar'>
</form>


//Esta es la página control que guarda los datos del usuario autenticado y crea la //sesión

<?php
session_start();
include_once("conexion.php");
$opcion=$_POST['opcion'];
$conex=new Conexion();
switch ($opcion)
{
case "Autenticar":
{
//obtengo los datos enviados desde el formulario
$usuario=$_POST['user'];
$pass=$_POST['pass'];

//guardo en variables de sessiones los datos que necesito

$_SESSION['usuario']=$usuario;
$_SESSION['pass']=$pass;

if(($usuario=='')|| ($pass==''))
{
echo"<script language='javascript'>alert('Entre usuario y contraseña');</script>";
echo"<script language='javascript'>window.location='index.php'</script>";

return -1;
}
else
{
try
{

if((($conex->Usuario_Existe($usuario))==true) && (($conex->Contrasenna_Correcta($usuario, $pass ))==true))
{
if(($conex->Devolver_Rol($usuario, $pass))=='instructor')
{echo"<script language='javascript'>window.location='CI_usuario_ instructor.php'</script>"; }

else if (($conex->Devolver_Rol($usuario, $pass))=='residente')
{echo"<script language='javascript'>window.location='CI_usuario_ residente.php'</script>"; }
}
else
{
echo"<script language='javascript'>alert('El usuario no existe o la contraseña es incorrecta');</script>";
echo"<script language='javascript'>window.location='index.php'</script>";
}

}
catch(Exception $e )
{
echo $e->getMessage();
}
}
break;
}

//Aquí es donde valido que el usuario esté autenticado para poder entrar
<?php
session_start();
if(isset($_SESSION['usuario']))
{
echo"<script language='javascript'>alert('No está autenticado');</script>";
echo"<script language='javascript'>window.location='index.php'</script>";
}
else
{
include_once("class_pagina.php");
$pagina=new Pagina();

$pagina->Mostrar_Cabezera();
$pagina->Mostrar_Contenido();
$pagina->Mostrar_Form_Insertar_Producto();
$pagina->FinContenido();
$pagina->Cerrar();
}
?>


Please...espero que me respondan pronto....
saludos
Elizabeth
  #2 (permalink)  
Antiguo 01/02/2010, 00:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sesiones en PHP

yo veo todo bien, excepto una problema lógico... justo en el script donde compruebas la sesión haces la comparación al revés...

Código PHP:
if(isset($_SESSION['usuario']))
{
echo
"<script language='javascript'>alert('No está autenticado');</script>";
echo
"<script language='javascript'>window.location='index.php'</script>";

ahí, dice algo así: si existe la variable de sesión usuario, entonces no está autenticado... piensa esa parte, pues en ese sentido esta mal...

simplemente puedes negar la función isset() resultado algo así como: si no existe... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/02/2010, 01:17
 
Fecha de Ingreso: febrero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Sesiones en PHP

muchas gracias por la rapidez de tu respuesta...ahora sí me deja a la página CI_insertar_producto.php, pero ahora entra incluso si no hay ningñun usuario autenticado, copio la URL en el navegador y puedo entrar fácilmente sin pasar por el form de autenticación.
tal vez deba destruir la sesión, pero no sé cómo hacer esto en un vínculo-no en un botón-, además pensaba que cuando se cerraba el navegador, el servidor automáticamente destruía la sesión...
agradecería mucho otra respuesta...
mis saludos
  #4 (permalink)  
Antiguo 01/02/2010, 09:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Sesiones en PHP

Depende mucho de la configuración de tu php.ini el tiempo de caducidad de las sesiones, lo mejor es que tengas una pagina logout que tenga el siguiente código:
Código PHP:
Ver original 

Saludos.
  #5 (permalink)  
Antiguo 01/02/2010, 09:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Sesiones en PHP

@GatorV, ¿por qué le indicas que la sesión sea un array?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 01/02/2010, 10:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Sesiones en PHP

Para borrar los datos, de la sesión y no dejar nada de "garbage" en el array de sesión, si te fijas en el mismo Manual lo usan: http://mx2.php.net/session_destroy

Saludos.
  #7 (permalink)  
Antiguo 01/02/2010, 10:33
 
Fecha de Ingreso: febrero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Sesiones en PHP

Gracias a ustedes he resuelto el problema con las sesiones...!!!!!!!
les agradezco nuevamente...
nos vemos
bye

Etiquetas: sesiones
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 03:44.