Foros del Web » Programando para Internet » PHP »

Como guardar en BD la ultima conexion de un usuario?

Estas en el tema de Como guardar en BD la ultima conexion de un usuario? en el foro de PHP en Foros del Web. Hola a todos: Tengo en mi web la un sistema de login de usuarios. Me gustaría poder poner la opción de que en la base ...
  #1 (permalink)  
Antiguo 28/05/2015, 16:13
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 9 años
Puntos: 0
Pregunta Como guardar en BD la ultima conexion de un usuario?

Hola a todos:
Tengo en mi web la un sistema de login de usuarios. Me gustaría poder poner la opción de que en la base de datos se guardara la fecha y hora de la ultima conexión realizada por un usuario, pero no se como hacerlo.
En la tabla de la base de datos (MySQL5) donde se guardan los datos de los usuarios registrados tengo creada dos columnas con las siguientes características:
Nombre: n_conex
Tipo: int(255)
Nulo: No
Predeterminado: 0
Nombre: Ultima_conex
Tipo: timestamp
Atributos: on update CURRENT_TIMESTAMP
Nulo: No
Predeterminado: CURRENT_TIMESTAMP
Extra: ON UPDATE CURRENT_TIMESTAMP
Tengo un formulario para iniciar sesión con el siguiente código:
Código HTML:
<form name="finicio" method="post" action="">
        
        	<p class="lineas">
            <span class="crotulos">Usuario:</span>
            <span class="ccampos"><input type="text" name="usuario" class="campos-reg"></span>
            </p>
                
            <p class="lineas">
            <span class="crotulos">Contraseña:</span>
            <span class="ccampos"><input type="password" name="pas" class="campos-reg"></span>
            </p>
            
            <p class="lineas">
            <span class="crotulos">&nbsp;</span>
            <span class="ccampos"><input type="button" name="boton" value="Iniciar sesión" class="boton" onClick="javascript:Validar();"></span>
            </p>  
            
            <input type="hidden" name="proceso"> 
El javascript:Validar() es así:
Código:
<script>
	function Validar(){
		document.finicio.action="validar-usuarios.php";		
		if(document.finicio.usuario.value==""){
			alert("El campo usuario es necesario");
			document.finicio.usuario.focus();
			return;
		}			
		if(document.finicio.pas.value==""){
			alert("El campo contraseña es necesario");
			document.finicio.pas.focus();
			return;
		}		
		document.finicio.proceso.value="Iniciar sesión";
		document.finicio.submit();	
		}
</script>
El archivo validar-usuarios.php:
Código PHP:
<?php
//Recepcionamos el campo proceso
$proceso = isset($_POST['proceso']) ? $_POST['proceso']:"";

if(
$proceso=="Iniciar sesión"){
    
$usuario     $_POST['usuario'];
    
$clave         $_POST['pas'];
    
    
//Realizamos la consulta
    
$consultaUsuario "SELECT * FROM nombre_tabla_BD WHERE usuario='$usuario' AND pas='$clave'";
    
$resultadoUsuario mysql_query($consultaUsuario);
    
$filaUsuario mysql_fetch_array($resultadoUsuario);
    
$xCodigo         $filaUsuario['id'];
    
$xAlias         $filaUsuario['nombre'];
    
$xEmail         $filaUsuario['email'];
    
$xUsuario         $filaUsuario['usuario'];
    
    
//Verificamos si por lo menos encontro una coincidencia para generar
    //Las variables de sesion
    
$numUsuarios mysql_num_rows($resultadoUsuario);
    if(
$numUsuarios>=1){
        
//generamos las variables globales de sesion
        
session_start();
        
$_SESSION['xCodigo']     = $xCodigo;
        
$_SESSION['xAlias']        = $xAlias;
        
$_SESSION['xEmail']        = $xEmail;
        
$_SESSION['xUsuario']    = $xUsuario;
        
        
header ("Location: index.php");
    }else{
        
header ("Location: seguridad.php");
    }
}

?>
y finalmente, mi archivo de inicio de sesión es:
Código PHP:
<?php
session_start
();
$xCodigo     $_SESSION['xCodigo'];
$xAlias     $_SESSION['xAlias'];
$xEmail     $_SESSION['xEmail'];
$xUsuario     $_SESSION['xUsuario'];
?>
Todo esto me funciona bien, pero como he dicho no se como hacer para que se me actualice la ultima conexión de un usuario en la base de datos.
Encontré buscando un código que creo que podría ser algo parecido a lo que necesito, pero no estoy seguro ni se como podría adaptarlo a mi código.
Código PHP:
$mysql="UPDATE nombre_tabla_BD SET n_conex='".($row[4]+1)."' WHERE id='".$row[5]."'"
Gracias.
  #2 (permalink)  
Antiguo 29/05/2015, 00:54
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Como guardar en BD la ultima conexion de un usuario?

En la tabla donde guardes la uñtima conexión tiene que estar también el usuario que la hace, o viceversa. Luego, tan solo tendrás que actualizar el valor de última conexión de ese usuario cuando haga login. Algo como:

Código PHP:
Ver original
  1. UPDATE nombre_tabla SET ultima_conexión='" . time() . "' WHERE id_cliente=" . $idDelCliente . "
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #3 (permalink)  
Antiguo 29/05/2015, 03:07
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 13 años, 7 meses
Puntos: 20
Respuesta: Como guardar en BD la ultima conexion de un usuario?

Se supone que debe ir dentro de este if
Código PHP:
Ver original
  1. if($numUsuarios>=1){
  2.         //generamos las variables globales de sesion
  3.         // AQUI TU CONSULTA UPDATE
  4.         session_start();
  5.         $_SESSION['xCodigo']     = $xCodigo;
  6.         $_SESSION['xAlias']        = $xAlias;
  7.         $_SESSION['xEmail']        = $xEmail;
  8.         $_SESSION['xUsuario']    = $xUsuario;
  9.          
  10.         header ("Location: index.php");
  11.     }
  #4 (permalink)  
Antiguo 29/05/2015, 03:28
 
Fecha de Ingreso: mayo-2015
Mensajes: 7
Antigüedad: 9 años
Puntos: 0
Respuesta: Como guardar en BD la ultima conexion de un usuario?

Ante todo agradeceros vuestra ayuda json y baldaweb.
Siguiendo vuestras recomendaciones he modificado el archivo validar-usuarios.php añadiendo la siguiente línea de código:
Código PHP:
$mysql="UPDATE nombre_tabla_BD SET Ultima_conex='" time() . "' WHERE id=" $xCodigo "'"
en el lugar que me indicabas baldaweb,
Código PHP:
if($numUsuarios>=1){
        
//generamos las variables globales de sesion
        
$mysql="UPDATE nombre_tabla_BD SET Ultima_conex='" time() . "' WHERE id=" $xCodigo "'";
        
session_start();
        
$_SESSION['xCodigo']     = $xCodigo;
        
$_SESSION['xAlias']        = $xAlias;
        
$_SESSION['xEmail']        = $xEmail;
        
$_SESSION['xUsuario']    = $xUsuario;
        
        
header ("Location: index.php"); 
Pero no me ha funcionado. Inicio la sesión perfectamente pero no se actualiza la columna Ultima_conex
  #5 (permalink)  
Antiguo 29/05/2015, 03:47
Avatar de baldaweb  
Fecha de Ingreso: septiembre-2010
Ubicación: Barco pirata
Mensajes: 244
Antigüedad: 13 años, 7 meses
Puntos: 20
Respuesta: Como guardar en BD la ultima conexion de un usuario?

¿nombre_tabla_DB es el nombre de tu tabla?

Revisa la consulta update, ejecútala en phpmyadmin a ver si te funciona.

Debes ir probando.

Etiquetas: sesiones_en_php, 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 17:30.