Foros del Web » Programando para Internet » PHP »

Como contar las veces de un usuario incia una sesion

Estas en el tema de Como contar las veces de un usuario incia una sesion en el foro de PHP en Foros del Web. Hola gente: Algo tiene idea donde puede ver algo de como en mi actual sistema de usuarios (con cookies) poner por ej. un item mas ...
  #1 (permalink)  
Antiguo 12/07/2006, 09:29
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años, 5 meses
Puntos: 0
Como contar las veces de un usuario incia una sesion

Hola gente:
Algo tiene idea donde puede ver algo de como en mi actual sistema de usuarios (con cookies) poner por ej. un item mas que me grabe de forma acumulativa las veces que inicia sesión, si fuera ademas fecha mejor....por ejemplo "accesos" 25......ultimo acceso tal dia....
Bueno espero haber sido claro asi me orientan.
Gracias desde ya.
  #2 (permalink)  
Antiguo 12/07/2006, 10:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 16 años, 4 meses
Puntos: 126
Tu registras tus usuarios ya en alguna BB.DD.?

Si es así tendras que crear un campo para cada usuario extra (o "columna" en tu tabla de usuarios) para que te sirva de contador y otro más para la fecha del último ingreso.

Al "autentificar" a tu usuario (hacer su lógin) ingresarías esa fecha (o la actualizas) y lo mismo con el contador (lo incrementas).

Si dices usar cookies .. el "login" lo haras pocas veces supongo (los usuarios) así que ese mismo proceso tendrías que hacerlo en -cada iteracción- de tu usuario con tus scripts y si existe dicha cookie.

Es decir .. en todos tus scripts deberías añadir una consulta SQL a tu BBDD de "Update" para ese usuario. Una vez añadidos esos dos campos extra a tu BBDD (definiendo el de fecha_ultimo_ingreso como un DATETIME) .. podría ser algo así:

Código PHP:
$sql="UPDATE usuarios SET contador=contador+1, fecha_ultimo_ingreso=NOW() WHERE id_usuario='".$_COOKIE['id_usuario']."'";
mysql_query($sql) ....... 
Como veras esto "machaca" la BBDD .. Con cookies no es posible saber si el usuario está recargando la página .. o está en una misma "sesión" (pasando de una página a otra) .. o si entró denuevo .. En tal caso una combinación de sesiones y cookies te podría servir (por lo menos para eviar que al recargar la pagina se contabilice un nuevo conteo y se actualize la fecha de último ingreso).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 12/07/2006, 12:34
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años, 5 meses
Puntos: 0
Hola Cluster, gracias por responder.
Voy a ponder los archivos que me parecen que deberian ser modificados:
1) La estructura de la bd
2) El archivo que siempre pasa un usuario para acceder a su cuenta. En este ultimo punto me parece que deberia haber algo de lo que me decis.

Código:
CREATE TABLE `usuarios` (
  `id` smallint(5) unsigned NOT NULL auto_increment,
  `fecha` int(10) unsigned NOT NULL default '0',
  `nick` varchar(20) NOT NULL default '',
  `contrasena` varchar(32) NOT NULL default '',
  `email` varchar(40) NOT NULL default '',
  `registro` varchar(5) default NULL,
  `apellido` varchar(30) default NULL,
  `nombre` varchar(30) default NULL,
  `descripcion` text,
  `ip` varchar(15) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `nick` (`nick`,`contrasena`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Código:
<?
require 'config.php' ;
if($_POST[enviar]) {
	function quitar($texto) {
		$texto = trim($texto) ;
		$texto = htmlspecialchars($texto) ;
		# --> Elimina espacios que no pueden ser borrados por trim()
		$texto = str_replace(chr(160),'',$texto) ;
		return $texto ;
	}
	$nick = quitar($_POST[nick]) ;
	$contrasena = quitar($_POST[contrasena]) ;
	$con = mysql_query("select id,contrasena from usuarios where nick='$nick'") ;
	$datos = mysql_fetch_assoc($con) ;
	if(mysql_num_rows($con)) {
		if($datos[contrasena] == $contrasena) {
			setcookie('uid',$datos[id],time()+604800) ;
			setcookie('unick',$nick,time()+604800) ;
			setcookie('ucontrasena',$contrasena,time()+604800) ;
			header("location: home.php?seccion=uacceso") ;
		}
		else {
			header('location: 404.php') ;
		}
	}
	else {
			header('location: 404.php') ;
	}
}
?>
En este sentido mi primera idea seria que en solo este archivo bastaria que desque aqui el contador (cada vez que un usuario ingrese al sitio) grabara en su registro de la base de datos 1,2...30...40 etc en el campo "accesos" (obvio para cada usuario lo mismo). Alguna idea?, esta bien el planteo?, y de ser asi....que aplicar en la bd y en el script?.
Gracias.
  #4 (permalink)  
Antiguo 12/07/2006, 12:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 16 años, 4 meses
Puntos: 126
Realmente no aclaras como quieres que funcione tu sistema en base a lo que te he explicado.

Puedes registrar la última vez que se "autentificó". Sería registrar ese dato en la parte del código que presentas cuando crea las cookies: setcookie() .. en ese proceso ...

Pero también puedes hacer lo otro que mencioné (que implica "machacar" la BBDD).

El tema está en que diferencies entre "autentificación" e ingresar al sitio .. o que definas que es para tí "ingresar al sitio" (para mi es diferente a si se autentificó por un formulario de login o se hizo automáticamente por qué usé cookies para "recordarme" en próximos ingresos ...).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 12/07/2006, 12:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 103
Antigüedad: 13 años, 5 meses
Puntos: 0
Cluster:
Los usuarios se registran y acceden por medio de un formulario (nick y pass), lo que buscaba es que en el proceso de logeo (ingreso de cada usuario a su cuenta) me registre 1, 2, 3...20 etc (que serian las veces NO que visitan el sitio) sino que ingresan a su cuenta.
El objetivo es que este dato quede en la base de datos y lo vea el administrador y/o el mismo usuario las veces que ingreso a su cuenta.
Espero haber aclarado un poquito mas mi necesidad.
Gracias y saludos.
  #6 (permalink)  
Antiguo 12/07/2006, 13:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 16 años, 4 meses
Puntos: 126
Bueno . .pues ya te indiqué antes donde debes ejecutar el tipo de consulta SQL que también te dejé como ejemplo. Empieza por alterar tu estructura de tu tabla de usuarios para añadir esos dos campos que te mencioné.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 00:44.