| |||
| Usuarios en línea PHP Un saludo antes que nada, estoy realizando un contador de usuarios en línea, mi idea es guardar en la base de datos la información del usuario y comparar despues si la ip del usuario ya ha sido registrada, comparar el nombre de la pc por si es una red local y si el tiempo del ultimo click fue 10 minutos o menos por ejemplo. No se si alguien haya realizado algo similar. pongo mi ejemplo: <?php //usuario que visita la pagina, esta función me devuelve el id del usuario si es que se loggeo si no devuelve blanco, y dado que ya puede existir un registro con su nombre de usuario pero despues al llamar otra vez el script cerro sesion y la variabla esta en blanco conservo el contenido actual del campo idcli. $Us_Vis=(Id_Usuario()!="")?"'".Id_Usuario()."'":"i dcli"; //obtengo el nombre de su pc de acuerdo a la ip dado que pudiera existir la posibilidad que visiten varias personas al mismo tiempo desde una lan $Pc_Vis=gethostbyaddr($_SERVER['REMOTE_ADDR']); //fecha de actualizacion $fecha=date("Y-m-d H:i:s",time()); //consulta para actualizar si es que ya existe la ip, nombre de pc, y no han transcurrido mas de 10 minutos desde su ultima visita $strSql="UPDATE visitas SET idcli=$Us_Vis,fechasalida='$fecha' WHERE ip='".$_SERVER['REMOTE_ADDR']."'and pc='".$Pc_Vis."' and (TIMESTAMPDIFF(MINUTE , fechasalida,'$fecha' ))<=10;"; if (mysql_query($strSql)) { //si no afecto una fila entonces agrega un nuevo registro if (mysql_affected_rows()<>1) { //verifica si el usuario es idcli que es el nombre de mi campo para usuario usado en update, si es idcli lo cambio por blanco $Us_Vis=$Us_Vis=="idcli"?"''":$Us_Vis; //consulta para agregar el registro $strSql2="INSERT INTO visitas(idcli,ip,pc,navegador,fechasalida) VALUES($Us_Vis,'" . $_SERVER['REMOTE_ADDR'] . "','" .$Pc_Vis . "','" . $_SERVER['HTTP_USER_AGENT'] . "','$fecha')"; mysql_query($strSql2); } } ?> No supe como agregarle espacios por eso aparece desordenado el código :(. Espero alguien me de una ide de como mejorar mi código. De antemano gracias. |