Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: spysecurityca en 11 Octubre 2014, 07:27 am



Título: ¿Que tan normal es la perdida de Sesiones?
Publicado por: spysecurityca en 11 Octubre 2014, 07:27 am
Si pues tengo unas paginas que intercambian variables de sesion entre ellas y cuando en una pagina en especifico le doy al boton que me redirecciona a otro lugar la session se pierde (ando poniendo session_start() en todos los inicios de las paginas).

Hablé con un amigo y me dijo que suele pasar que es maña de las sesiones ya que son muy volatiles.

Que recomiendan en estos casos?


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: MinusFour en 11 Octubre 2014, 09:02 am
Las sesiones no desaparecen así porque sí. Hay una razón para todo...


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: JorgeEMX en 11 Octubre 2014, 23:41 pm
Depende, quizá sea el tiempo para expirar.

Como sea, qué tipo de redirección estás tratando de hacer?


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: spysecurityca en 12 Octubre 2014, 00:39 am
Por href de un obj. Html me envía a una página en el mismo directorio.

Lo puedo solucionar solo hago la pregunta para saber el porque de estas cosas.

He visto que dicen en otros foros que aveces no es error de código sino de configuración del archivo PHP con algo respecto a las cookies.


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: gAb1 en 12 Octubre 2014, 01:03 am
A mí actualmente me esta pasando esto y es muy extraño. Recién inicio sesión, le doy a cualquier link del menu de usuario (perfil por ejemplo) y me sale el mensaje diciendo que necesito estar logueado. La sesión se pierde misteriosamente. Pero si vuelvo a iniciar sesión y le doy al mismo link, ya no se pierde...

Solo tengo el session_start en index.php, pero porque nunca cambio de pagina, en mi caso se incluyen las paginas de contenido en index.php. Debería ser lo mismo...


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: spysecurityca en 12 Octubre 2014, 02:13 am
gAb1 casualmente lo mio es con un login.

Eso se puede resolver pasando las variables de sesión del usuario a una cookie normal de de X duración (no la puedes hacer con la duración predeterminada ya que como estas perdiendo la sesión la cookie con tiempo estándar se pierde cuando se pierde la sesión).

Y le agregas un destroy de cookie al botón de cerrar sesión de tu página.

Obviamente esa es una forma de corregir el error.

Pero yo lo que quiero es seguir seguir con la variable de sesión sin pasarla a una de cookie.


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: engel lex en 12 Octubre 2014, 02:17 am
Pero yo lo que quiero es seguir seguir con la variable de sesión sin pasarla a una de cookie.

necesitas que el navegador guarde la variable de sesion en algún lado o lo haces en una cookie que se manda como cabecera, o lo haces en un datastorage (o alguna de esas cosas de html5) y al cargarse la pagina esperas que el jscript mande los datos y respondes en base a eso (esto puede ser lento)


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: spysecurityca en 12 Octubre 2014, 02:27 am
Epale chamo lo había resuelto con variable por cabecera ósea mi problema no es resolver sino de funcionamiento si no se puede con la variable session por defecto pues resuelvo con los métodos que tengo a la mano  :D


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: gAb1 en 12 Octubre 2014, 04:43 am
No estoy muy seguro de eso, pero asi es como crea la sesión mi funcion login:

Código
  1. if ($db_password == $password) {
  2. // Password is correct!
  3. // Get the user-agent string of the user.
  4. $user_browser = $_SERVER['HTTP_USER_AGENT'];
  5. // XSS protection as we might print this value
  6. $user_id = preg_replace("/[^0-9]+/", "", $user_id);
  7. $_SESSION['user_id'] = $user_id;
  8. // XSS protection as we might print this value
  9. $username = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username);
  10. $_SESSION['username'] = $username;
  11. // XSS protection as we might print this value
  12. $acc_type = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $acc_type);
  13. $_SESSION['acc_type'] = $acc_type;
  14. $_SESSION['pwd_changed'] = $pwd_changed;
  15. $_SESSION['login_string'] = hash('sha512',
  16.  $password . $user_browser);
  17. // Login successful.
  18. $last_ip = get_ip_address();
  19. $mysqli->query("UPDATE members SET last_ip='{$last_ip}' WHERE id='{$user_id}'");
  20. return true;
  21. }

Asi es como empiezo las sesiones:

Código
  1. function sec_session_start() {
  2.    $session_name = 'sec_session_id';   // Set a custom session name
  3.    $secure = SECURE;
  4.    // This stops javascript being able to access the session id.
  5.    $httponly = true;
  6.    // Forces sessions to only use cookies.
  7.    if (ini_set('session.use_only_cookies', 1) === FALSE) {
  8.        header("Location: /error?err=No se pudo iniciar una sesión segura (ini_set)");
  9.        exit();
  10.    }
  11.    // Gets current cookies params.
  12.    $cookieParams = session_get_cookie_params();
  13.    session_set_cookie_params($cookieParams["lifetime"],
  14.        $cookieParams["path"],
  15.        $cookieParams["domain"],
  16.        $secure,
  17.        $httponly);
  18.    // Sets the session name to the one set above.
  19.    session_name($session_name);
  20.    session_start();            // Start the PHP session
  21.    session_regenerate_id();    // regenerated the session, delete the old one.
  22. }

Y este es el logout.php

Código
  1. // Unset all session values
  2. $_SESSION = array();
  3.  
  4. // get session parameters
  5.  
  6. // Delete the actual cookie.
  7. '', time() - 42000,
  8. $params["path"],
  9. $params["domain"],
  10. $params["secure"],
  11. $params["httponly"]);
  12.  
  13. // Destroy session
  14. header('Location: /home');

Creo que el problema esta en la función sec_session_start() .... Pero no estoy seguro, si alguien pudiese confirmarmelo :)

Gracias!


Título: Re: ¿Que tan normal es la perdida de Sesiones?
Publicado por: spysecurityca en 13 Octubre 2014, 02:02 am
Bueno mi gente he resuelto el problema como lo tenia pensado y como me dijeron por aquí, pasando la variable que conservo en la session por header a la otra página o por cookie.

Si desean pueden cerrar el tema o pueden dejarlo abierto para seguir ayudando al pana gAb1

Saludos.