Foros del Web » Programando para Internet » PHP »

Dejar sesion abierta despues de hacer login mediante checkbox

Estas en el tema de Dejar sesion abierta despues de hacer login mediante checkbox en el foro de PHP en Foros del Web. Hola amigos/as, miren mi intencion es en el codigo que tengo para hacer login un usuario. Me gustaria añadirle una opcion para dejar la sesion ...
  #1 (permalink)  
Antiguo 03/04/2015, 06:25
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Dejar sesion abierta despues de hacer login mediante checkbox

Hola amigos/as, miren mi intencion es en el codigo que tengo para hacer login un usuario.

Me gustaria añadirle una opcion para dejar la sesion abierta mediante un checkox.

Loguear lo hacer bien.

Pero el dejar la sesion abierta es algo que nunca lo he hecho y la verdad no se por donde empezar a implementarle lo que supongo son pocas lineas de codigo para ello.


Ando un poco perdido.

He estado navegando por internet y finalmente he encontrado un codigo que deja la sesion abierta.

Pero no se como implementarlo en mi codigo.

Si pudieran ayudarme les estaria muy agradecido por ello.


Miren este es mi codigo:


Código PHP:
Ver original
  1.  
  2.     include("../conex_bbdd/conexion.php");     
  3.  
  4.            
  5.     class ClaseLoginUsuario
  6.    
  7.         {  
  8.  
  9.             public function LoginUsuario($email, $password)
  10.            
  11.                 {  
  12.                     //CONECTAMOS A LA BBDD............................................................................ 
  13.                     $con = new Conectar();             
  14.                     $link=$con->ConectarBbdd();
  15.                      
  16.  
  17.                     $query = "SELECT * FROM usuarios
  18.                     WHERE email='".strip_tags($email)."' AND password='".strip_tags($password)."';";
  19.  
  20.  
  21.  
  22.                       if ($resultado=mysqli_query($link, $query) or die ('No se inserta en BBDD' . mysqli_error($link)))
  23.                            
  24.                             {
  25.                          
  26.                                 if($reg=mysqli_num_rows($resultado) == 0)
  27.                                
  28.                                     {
  29.                                         header("Location:../index.php?tipo_error_login=no_existe_usuario");    
  30.                                     }
  31.                                
  32.                                     else
  33.                            
  34.                                 //SI ENCUENTRA EL USUARIO MUESTRA SU NICK............................................
  35.                                              
  36.                                 if($reg=mysqli_fetch_array($resultado))
  37.                                
  38.                                     {  
  39.                                         $_SESSION['nick'] = $reg['nick'];  
  40.                                         header("Location:../opcs/opc_logueado/logueado.php");      
  41.                                     }
  42.                  
  43.                       }
  44.        
  45.    
  46.                 } //fin de function Sesion
  47.                
  48.                
  49.  
  50.             //MÉTODO PARA CERRAR SESIÓN.............................................................................
  51.                
  52.             public function CerrarSesion()             
  53.  
  54.                 {              
  55.                     session_destroy();
  56.                    
  57.                     header("Location:../../index.php");
  58.  
  59.                 } //fin de function CerrarSesion               
  60.            
  61.                
  62.            
  63.         } //fin de class LoginUsuario
  64.        
  65.        
  66.        
  67.  
  68. //SI EXISTEN LOS DATOS DE LOGIN LOS PROCESAMOS PARA VER SI SON VALIDOS..............................................
  69.  
  70.         $loginUsuario = new ClaseLoginUsuario();           
  71.  
  72.            
  73.             if ($_POST)
  74.            
  75.                 {
  76.                     $email = $_POST['email'];
  77.                     $password = $_POST['password'];
  78.                    
  79.                     $loginUsuario->LoginUsuario($email, $password);            
  80.                 }


Y el codigo que he encontrado para dejar la sesion abierta y no se como implementarlo es este:

Código PHP:
Ver original
  1. if($_POST['alargar_session'] == true) {
  2.        
  3.         $_SESSION['login'] = $usuario_log;
  4.         setcookie("PHPSESSID", $_COOKIE[session_name()], time()+31622400);
  5.    
  6.     } else {
  7.        
  8.         $_SESSION['login'] = $usuario_log;
  9.         setcookie("PHPSESSID", $_COOKIE[session_name()]);
  10.     }


Y mi formulario esta asi:

Código HTML:
Ver original
  1. <form name="form" action="clases/clase_login.php" method="post">
  2.  
  3.                 Nombre de usuario<input type="email" name="email"
  4.                value="<?php if(isset($imprimir['email'])){echo $imprimir['email'];} else { echo '';}?>" />
  5.                
  6.                 </br></br>
  7.                
  8.                 Password<input type="text" name="password"
  9.                value="<?php if(isset($imprimir['password'])){echo $imprimir['password'];} else { echo '';}?>" />
  10.  
  11.                 </br></br>
  12.                
  13.                 <input type="checkbox" name="sesion_abierta" value="sesion_abierta">Sesión abierta
  14.  
  15.                 </br></br>
  16.                
  17.                 <input type="submit" value="Entrar">
  18.              
  19.         </form>



gracias de antemano.
  #2 (permalink)  
Antiguo 03/04/2015, 11:04
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 1 mes
Puntos: 74
Respuesta: Dejar sesion abierta despues de hacer login mediante checkbox

aquí está explicado

http://www.downwithdesign.com/web-development-tutorials/adding-remember-feature-php-login-script/
  #3 (permalink)  
Antiguo 06/04/2015, 08:57
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: Dejar sesion abierta despues de hacer login mediante checkbox

Hola superweb360, gracias por el link donde lo explica.

He seguido las instrucciones pero me sale el 50% , te explico:

Cuando hago click en el checkbox, me mantiene la sesion abierta, si , al menos eso creo yo, ya que solo dandole en el boton enviar, sin rellenar nada en los campos inputs, me manda a la pagina

donde se muestra el mensaje de :"logueado!!!"

INcluso cerrando el navegador y volviendolo ha abrir , simplemente haciendo click en el boton entrar, me deja entrar.


Pero el problema es que no encuentro la forma de cerrar la sesion cuando ya no quiero que siga manteniendo la sesion abierta.

Para cerrar sesion utilizo este codigo que a continuacion muestro, lo pongo todo para que se vea mas claro.

Una ayudita final para esto seria de agradecer, un saludo:

archivo 1 llamado, formulario.php:

Código PHP:
Ver original
  1. <form action = "procesador.php" Method = "post">
  2.  
  3.      Email:    
  4.      <input type= "text" name="email" maxlength="40" value="<?php echo $_COOKIE['email']; ?>"/>
  5.      </br></br>
  6.      
  7.      Password:
  8.      <input type = nombre de "password" = maxlength "pase" = "50"/>
  9.      </br></br>    
  10.      
  11.      <input type="checkbox" name="remember"
  12.      
  13.      value="
  14.      
  15.          <?php if(isset($_COOKIE['email']))
  16.          
  17.             {
  18.                 echo 'checked="checked"';
  19.             }
  20.            
  21.             else
  22.            
  23.             {
  24.                 echo '';
  25.             }
  26.             ?>
  27.        
  28.         " >Remember Me
  29.        
  30.       </br></br>    
  31.      
  32.       <input type = "submit" name = "submit" value = "Entrar"/>
  33.      
  34.  </form>


archivo 2 llamado, procesador.php:

Código PHP:
Ver original
  1. $year = time() + 31536000;
  2.     setcookie('email', $_POST['email'], $year);
  3.    
  4.     echo "logueado!!!";
  5.  
  6.    
  7.     // Luego les redirigirá a la zona de miembros
  8.     //header ("Location: zona_miembros.php");

Código HTML:
Ver original
  1. <form action="cerrar_sesion.php" Method = "post">
  2.  
  3.       <input type = "submit" name = "submit" value = "Cerrar_sesion"/>
  4.      
  5.  </form>


archivo 3 llamado, cerrar_sesion.php:

Código PHP:
Ver original
  1. unset($_SESSION["email"]);
  2.  
  3. header ("Location: formulario.php");
  #4 (permalink)  
Antiguo 06/04/2015, 09:24
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 1 mes
Puntos: 74
Respuesta: Dejar sesion abierta despues de hacer login mediante checkbox

prueba de cerrar la sesión de esta manera:


Código PHP:
Ver original
  1. <?php
  2. // Initialize the session.
  3. // If you are using session_name("something"), don't forget it now!
  4.  
  5. // Unset all of the session variables.
  6. $_SESSION = array();
  7.  
  8. // If it's desired to kill the session, also delete the session cookie.
  9. // Note: This will destroy the session, and not just the session data!
  10. if (ini_get("session.use_cookies")) {
  11.     $params = session_get_cookie_params();
  12.     setcookie(session_name(), '', time() - 42000,
  13.         $params["path"], $params["domain"],
  14.         $params["secure"], $params["httponly"]
  15.     );
  16. }
  17.  
  18. // Finally, destroy the session.
  19. ?>
  #5 (permalink)  
Antiguo 06/04/2015, 09:48
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: Dejar sesion abierta despues de hacer login mediante checkbox

No termino de entender muy bien el codigo que me pones:

Lo he implementado de esta manera pero sigue sin funcionar:

Código PHP:
Ver original
  1. // Initialize the session.
  2. // If you are using session_name("something"), don't forget it now!
  3.  
  4. // Unset all of the session variables.
  5. $_SESSION = array();
  6.  
  7. // If it's desired to kill the session, also delete the session cookie.
  8. // Note: This will destroy the session, and not just the session data!
  9. if (ini_get("session.use_cookies")) {
  10.     $params = session_get_cookie_params();
  11.     setcookie(session_name(), '', time() - 31536000,
  12.         $params["email"]
  13.     );
  14. }
  15.  
  16. // Finally, destroy the session.
  17.  
  18. header ("Location: formulario.php");


entiendo que $_SESSION =array(); lo que hace es meter en el array todos los valores de las variables.

despues el contenido del if se me hace dificil entenderlo y aplicarlo.

sobre todo esta linea

"if (ini_get("session.use_cookies")) {"


y para variar no me funciona, estoy a las puertas de conseguir hacer la gracia completa pero se resiste
  #6 (permalink)  
Antiguo 06/04/2015, 10:51
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años, 1 mes
Puntos: 74
Respuesta: Dejar sesion abierta despues de hacer login mediante checkbox

Cita:
Iniciado por mensajeescrito Ver Mensaje
No termino de entender muy bien el codigo que me pones:
El código que he puesto lo he encontrado aquí

http://php.net/manual/en/function.session-destroy.php

Etiquetas: abierta, checkbox, dejar, formulario, login, mediante, mysql, select, sql, usuarios
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 11:46.