Foros del Web » Programando para Internet » PHP »

Pierdo la sesion

Estas en el tema de Pierdo la sesion en el foro de PHP en Foros del Web. Hola a todos/as!! Soy nuevo en el foro, y espero poder participar y que me ayuden durante mucho tiempo. Bueno, ahora les presento mi problema: ...
  #1 (permalink)  
Antiguo 28/03/2007, 04:40
 
Fecha de Ingreso: marzo-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Pregunta Pierdo la sesion

Hola a todos/as!! Soy nuevo en el foro, y espero poder participar y que me ayuden durante mucho tiempo. Bueno, ahora les presento mi problema:
La semana pasada, tome de Internet un manual de "Autentificación de usuarios en PHP con sesiones". Este es el que les muestro a continuación:

Fichero index.html

Código HTML:
<html>
<head>
<title>Autentificación PHP</title>
</head>
<body>
<h1>Autentificación PHP</h1>
<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center">
<?php  if ($_GET["errorusuario"]=="SI"){?>
<p>Datos incorrectos</p>
<?php }else{  ?>
<p>Introduce tu clave de acceso</p>
<?}?></td>
</tr>
<tr>
<td align="right">USER:</td>
<td><input type="Text" name="usuario" size="8" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWD:</td>
<td><input type="password" name="contrasena" size="8" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>
</form>
</body>
</html> 
Fichero control.php

Código PHP:
<?php

//vemos si el usuario y contraseña es váildo
ini_set("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
if (
$_POST["usuario"]=="amedio" && $_POST["contrasena"]=="entrar")
{
    
//usuario y contraseña válidos
    
session_start();
    
$_SESSION['ok']="ok";
    
//defino la sesion que demuestra que está autentificado
    
$_SESSION['ultimoAcceso']=date("Y-n-j H:i:s");
    
//defino la fecha y hora de inicio de sesión en formato aaaa-mm-dd hh:mm:ss<br>
    
session_write_close();
    
header ("Location: aplicacion.php");

}else 
{
    
//si no existe le mando otra vez a la portada
    
    
header("Location: index.php?errorusuario=SI");
}
?>
Fichero seguridad.php

Código PHP:
<?php
ini_set
("session.use_only_cookies","1");
ini_set("session.use_trans_sid","0");
//Inicio la sesión
session_set_cookie_params(0"/"$HTTP_SERVER_VARS["HTTP_HOST"], 0);
//cambiamos la duración a la cookie de la sesión será destruida cuando finalice el script
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO

if ($_SESSION['ok'] != "ok") {
    
    
header("Location: index.php");
    
//ademas salgo de este script
    
session_destroy();
    exit();
}
else{
    
//calculamos el tiempo transcurrido
    
$fechag=$_SESSION['ultimoAcceso'];
    
$ahora=date("Y-n-j H:i:s");
    
$tiempo_trans=(strtotime($ahora)-strtotime($fechag));
    
//strtotime es para convertir las fechas en segundos
    
if($tiempo_trans>=300){
    
//si pasaron 5 min o más
        
session_destroy();
        
header("Location:index.php");
        
//enviamos al usuario al site de autentificación
    
}else{
    
//actualizamos la fecha
      
$_SESSION['ultimoAcceso']=$ahora;
    }
}
?>
Fichero aplicación.php:

Código HTML:
<?php 
include("seguridad.php");?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<h1>Si estás aquí es que te has autentificado</h1>
<br>
----
<br>
Aplicación segura
<br>
----
<br>
<br>
<a href="salir.php">Salir</a>
</body>
</html> 
Pues bien, llevo días mirando en internet, perdiendo mañanas completas porque consigo llegar al fichero de seguridad.php, pero aquí no encuentro la sesion en la que $_SESSION['ok'] tiene el valor que me permitiría comprobar que está en una sesion segura. Esto no funciona ni en mi servidor local (Apache2) ni en un servidor remoto (el cual he probado para comprobar que no era problema de configuración de mi servidor). He leído casi todos los mensajes del foro, y las faq´s, y he probado también en forzar antes del header que la sesión se mantenga. Tambien he comprobado las cookies: desactive el zonealarm, he probado en internet explorer y en Opera.
En serio, me tiene parado, esto es para presentar un proyecto para la facultad y estoy con tres lineas absurdas desde hace una semana. Lo único que consigo es que siempre me muestre el index.html.
Gracias a todos/as, y espero sus respuestas
  #2 (permalink)  
Antiguo 28/03/2007, 07:33
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: Pierdo la sesion

Hola,

a botepronto y sin profundizar demasiado en tu codigo, observo que no ejecutas, al inicio de cada script , la sentencia session_start() necesaria para la creacion de sesiones ...

comprueba a ver si es tu problema ...

saludos
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #3 (permalink)  
Antiguo 29/03/2007, 02:21
 
Fecha de Ingreso: marzo-2007
Mensajes: 11
Antigüedad: 17 años
Puntos: 0
Re: Pierdo la sesion

Quillo puhitol, eres un genio, jejjej. No verás te explico, esto es el problema que tiene el copy-paste que es muy útil pero a veces da estos dolores de cabeza. En el de control.php lo tengo, en el que faltaba era en el de seguridad.php, pero como he estado comentando lineas, para ir buscando el fallo, poniendo print para saber por donde iba el codigo (no uso debugger, me gusta buscar el error de forma directa), pues seguramente tuve que borrarlo. Y como estaba convencido de que estaba, porque estaba pues buscaba el error en otro lugar. Lo que yo digo, la vida a veces es más simple de lo que uno piensa!! jejeje, gracias de nuevo tío!
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 14:15.