Foros del Web » Programando para Internet » PHP »

Saber cuando son Usuarios & Visitantes

Estas en el tema de Saber cuando son Usuarios & Visitantes en el foro de PHP en Foros del Web. Hola Amigos/as En la session de FAQ encontré un Código que es el Siguiente: Código PHP: <? $archivo = "usuarios.txt" ;  //archivo donde almacenarán los usuarios activos  $inactivo = 600 ;  ...

  #1 (permalink)  
Antiguo 24/03/2005, 22:55
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Saber cuando son Usuarios & Visitantes

Hola Amigos/as

En la session de FAQ encontré un Código que es el Siguiente:

Código PHP:
<? $archivo="usuarios.txt"//archivo donde almacenarán los usuarios activos 
$inactivo=600//tiempo en segundos en que un usuario estará inactivo 
$contar=0
$fp=fopen($archivo,"r"); 
$tiempo=time(); 
$contenido=fread($fp,filesize($archivo)); 
fclose($fp); 
$lineas=split("\n",$contenido); 
$filas=file($archivo); 
for (
$a=0$a sizeof($filas); $a++) { 
$datos=split(':',$lineas[$a]); 
$descontar=$tiempo-$inactivo
if (
$datos[0] != $REMOTE_ADDR && $datos[1] > ($descontar)) { 
$res.= $datos[0].":".$datos[1]."\n"
$contar++; 
}} 
$res.="$REMOTE_ADDR:$tiempo\n"
$contar++; // Ya tenemos el total de usuarios activos 
$fp=fopen($archivo,"w"); 
fwrite ($fp,$res); 
fclose($fp); 
//Ahora damos formato a la salida, modifica esto a tu gusto 
//Ten en cuenta que la variable $contar contiene el nº de usuarios activos 
if ($contar==1){$contar="1";}else{$contar="$contar";} 
echo 
$contar//Lo mostramos por pantalla 
?>
Pero tambien necesito saber cuando son Usuarios y cuando son Visitantes. Realmente no se como funciona eso.

Otra cosa sería saber los Usuarios que se registran en el día y los usuarios que se le registraron el día anterior eso sería en No. es decir:

Nuevos Hoy: 0
Nuevos Ayer: 0

Como puedo hacer tambien esto ??

Estoy trabajando con MySQL

Saludos
  #2 (permalink)  
Antiguo 25/03/2005, 01:20
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
Mira lo que puedes hacer es que si esta logueado les grabas una cookie y si tienen la cookie incluyes un contador diferentes al que le incluiria a una persona que no tenga la cookie no se si me explike
__________________
El que teme preguntar, se averguenza de aprender.

Última edición por kez0; 25/03/2005 a las 01:25
  #3 (permalink)  
Antiguo 25/03/2005, 01:22
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Realmente no te entendí de J

Sería mejor que me ayudaras con el Código.

Estoy rabajando con Sessiones temporales.

Saludos
  #4 (permalink)  
Antiguo 25/03/2005, 01:26
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
Bueno yo con sesiones no se trabajar veras

imagina que al loguearse tus usuarios les krea una cookie llamada USUARIO

para comprobar si existe seria
Código PHP:
if(isset($_COOKIE["usuario"]) {
include(
"contador_usuarios.php");
} else {
include(
"contador_visitantes.php");

__________________
El que teme preguntar, se averguenza de aprender.
  #5 (permalink)  
Antiguo 25/03/2005, 01:30
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
me puedes decir como creo la COOKIES

Saludos
  #6 (permalink)  
Antiguo 25/03/2005, 01:31
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
Ok para los usuarios de Hoy y Ayer lo que debes hacer es guardar la fecha de registro y comprobar solo si fue hoy o ayer
__________________
El que teme preguntar, se averguenza de aprender.
  #7 (permalink)  
Antiguo 25/03/2005, 01:31
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
http://php.net/manual/es/function.setcookie.php
__________________
El que teme preguntar, se averguenza de aprender.
  #8 (permalink)  
Antiguo 25/03/2005, 01:32
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
sobre el ayer o hoy, sabes como puedo hacerlo, pues no tengo idea

Saludos
  #9 (permalink)  
Antiguo 25/03/2005, 01:35
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 2 meses
Puntos: 6
Cita:
Iniciado por kez0
para los usuarios de Hoy y Ayer lo que debes hacer es guardar la fecha de registro y comprobar solo si fue hoy o ayer
utiliza la funcion DATE


http://www.php.net/manual/es/function.date.php
__________________
El que teme preguntar, se averguenza de aprender.
  #10 (permalink)  
Antiguo 25/03/2005, 01:47
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Mira en la Base de Datos tengo un campo que se llama registrado el cual almacena la fecha de registro

28-12-2005

Lo que necesito hacer es hacer un código que le quite un día y compare con la actual y si es en el caso

Registrado
28-12-2005

Actual
25-03-2005

En el caso anterior iría en Nuevo Ayer

Y lo mismo con Nuevo Hoy si la fecha coinciden va en Nuevos Hoy. Lo que no se hacer eso.

Saludos
  #11 (permalink)  
Antiguo 25/03/2005, 01:59
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Busca un post iniciado por "mom" ... con tema "aumentar un dia" ó algo así...
Lo que se hizo en ese post es desde la base de datos consultar registros de un "tiempo atrás" justamente para lo que quieres hacer... un sistema de "usuarios activos"... El resultado fue un este enlace: --- sorry, caducado ---

La FAQ te puede servir como base.. para que entiendas el sistema, pero si usas Base de Datos ocupa ésta... el uso de cookies no lo recomiendo y podrás ahorratelo si ocupas la misma BD...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 05/01/2006 a las 05:02
  #12 (permalink)  
Antiguo 25/03/2005, 02:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
http://www.forosdelweb.com/f18/insertar-bd-hora-1-a-272449/
... Sí lees el post mon estaba haciendo un sistema bastante interezante.. he leido algunos post en donde continua con el tema... quizá podrias "seguirle lo pasos" .. Suerte! .. claro, cualquier duda con el cósdigo que planteo hazmela saber y con gusto..
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #13 (permalink)  
Antiguo 25/03/2005, 08:44
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola Amigo, gracias por tu respuesta como siempre, es muy bueno el código pero solo se parece a lo busco. Mira, yo estaba viendo que puedo crear un campo en la base de datos llamado online el cual va a tener como prodeterminado inactivo. Este se va a poner activo cuando el usuario entre a su cuenta. Una vez esto. Hago un conteo de la Base de Datos para ver cuantos Usuarios tienes el campo online activo y ese va a hacer la Suma de usuarios en línea.

Lo que no lo he hecho ya que como sabes no tengo muy buenos conocimientos en el Tema. Ví que en una línea:

Código PHP:
$resultadomysql_query("SELECT *, COUNT(*) AS total, MAX(hora) AS hora FROM visitas GROUP BY ip ORDER BY total DESC"$conexion) or die ("<b>ERROR:</b><br>".mysql_error()); 
Cuenta cuantas veces has entrado. Pero esto necesito pasarlo que solo me cuente cuantos estado hay activos.

Nota: Lo que no se como puedo hacer para los Vicitantes

Saludos
  #14 (permalink)  
Antiguo 25/03/2005, 09:06
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... Bueno.. lo de crear un nuevo campo creo solo seria gastar recursos.... además de que te complicarias.. Supón.. ok.. tiene el esado inactivo que cambia cuando entro a la página... ¿cómo vaz a saber cuando salgo para regresarme a inactivo???... yo seguiria trabajando así y solo imprimiria los resultados cuya diferencia de fecha esta dentro der rango para considerarlo como "usuario activo"....

Lo de saber si son usuarios registrados... (sus). Bueno actualmente el código busca a alguien por ip... esto no será necesario si tu usuario esta registrado... y pero sí cuando es visitante... Pues una simple lògica sin entrar en mayor detalles seria:
Código PHP:
if(es_usuario?) { 
// ya discutimos esto una vez...consultas y si la consulta agrega resultados...
     
if (esta activo?) {
          
Actualizo la nueva hora
     
} else {
          
Lo identifico como usuario activo
     
}
} else {
     
buscamos su ip
     
if (ip activa?) {
          
Actualizamos
     
} else {
          
Registranos
     
}

He ahí una simple lógica... para no variar mucho a lo que se tiene.. pero tu mismo establece tu flujo de datos... a como lo requieras. Las funciones ahí están... más que problemas de funciones es problema de imaginación y que le pienses...

Ojo... y lo comenté en aquel post... Esta consulta te genera una nueva fila por cada "nueva visita" ... algo que se puede optimizar manejando en su lugar un campo "visitas totales"

... Bueno.. pruebale... intentalo... Mucha suerte!

Edito: Errores... ando muy idiota... :-p
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 25/03/2005 a las 09:53
  #15 (permalink)  
Antiguo 25/03/2005, 09:21
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Amigo, que sentencia cuenta la cantidad de registros que tengan en el Campo online 'activo' ?? y que me de el Total en No.

Saludos
  #16 (permalink)  
Antiguo 25/03/2005, 09:39
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Amigos, ya eché a funcionar lo de los Usuarios auer y Hoy pero tengo problemas para sacar la Fecha de Ayer, necesito que salga así:

Código PHP:
$date1 date("d")."-".date("m")."-".date("Y"); 
Y en el Tutorial que me pasó kez0 me dice que puedo cojer la fecha anterior así:

Código PHP:
$date2 mktime(0,0,0,date("d")-1,date("m"),  date("Y")); 
Pero esta me la dá : 1109304000 Y así no está en mi Base de Datos.

Espero que me Ayuden.
  #17 (permalink)  
Antiguo 25/03/2005, 14:49
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Listo, quedó así:

Código PHP:
$date2 date"d-m-Y"mktime($day 1$month$year) ) ; 
Eso te dá un Resultado: 24-03-2005. de 25-03-2005

Saludos

PD: Vamos a ver si logro hacer lo de los Usuarios y Visitantes.
  #18 (permalink)  
Antiguo 25/03/2005, 15:18
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola jam1138, si que jodo, pero bueno todo es por el bien del aprendizaje, dime una cosa, yo tengo pensado verificar si el Visitante tiene la Sesión abierta si no la tiene es que es Invitado lo cual quedaría así:

Código PHP:
<?php
if(!empty($_SESSION['usuario_login'])){ 
     if (
esta activo?) { 
          
Actualizo la nueva hora 
     
} else { 
          
Lo identifico como usuario activo 
     

} else { 
     
$ip $REMOTE_ADDR;
     if (
ip activa?) { 
          
Actualizamos 
     
} else { 
          
Registranos 
     


?>
Solo que no sé que mas hacer, no me imagino como estás pensado hacer esto.

Espero que em tires una Ayudita mas.

Nos vemos

Última edición por 2Fast To You; 25/03/2005 a las 15:21
  #19 (permalink)  
Antiguo 25/03/2005, 15:37
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Es algo así lo que estou haciendo.



Saludos
  #20 (permalink)  
Antiguo 26/03/2005, 19:56
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
...

Esque precisamente de eso se trata.. no es lo que yo este pensando hacer... es lo que tú estés pensando hacer. la estructura que te dí es la más básica...
Primero ves si es usuario o no y luego haces lo que haces (lo que ya haces) para cada respectivo caso... Ahora bien, esa no es la única manera... esto depende ya de cada cabeza... esa es la verdadera programación...

Pero bueno... Sábado de gloria ( y no me he mojado!) y el día estubo un tanto flojo... así quise experimentar con algo.. y ví que podia matar dos pájaros de un tiro si lo aplicaba a esto que pretendes... pués bien, resultó esto:
Código PHP:
<?
session_start
();
$usuario=$_SESSION['usuario'];

if(isset(
$usuario)){ // Busco una sesion
    
$visita=$usuario// para la busqueda
    
$tipo=1// donde tipo 1 = usuario registrado
} else {
    
$visita$REMOTE_ADDR// lo hubicamos por IP... Existen funciones para el caso de proxis y demás... no es el tema.
    
$tipo=0// donde 0 = visitante
}
$lapso=5// tiempo en minutos 
include("conexion.php"); // conecto

 // primero borro todos los registros que hayan expirado... para mantener la BD ligera.. puedes dejarlos para darle otro uso...
mysql_query("DELETE FROM visitas WHERE hora<DATE_SUB(NOW(), INTERVAL $lapso MINUTE)"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// Como ya se borraron todos los registros que no estan dentro del plazo... puedo buscar al usuario sin complicaciones
$buscamysql_query("SELECT * FROM visitas WHERE visitante='$visita' LIMIT 0,1"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// lo encontré?
if(mysql_num_rows($busca)>0){
// si esta en la BD es usuario activo.. actualizo la nueva hora
    
mysql_query("UPDATE visitas SET hora=NOW() WHERE visitante='$visita'"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());
} else {
// Si no esta.. lo registro
    
mysql_query("INSERT INTO visitas VALUES ('$visita', NOW(), '$tipo')"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());
}

// Entonces, ahora todos en la BD están en línea
$en_lineamysql_query("SELECT tipo FROM visitas"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// Puedo aplicar una query directamente del tipo COUN(tipo) FROM visitas GROUP BY tipo para evitar este bucle... pero creo así te quedará más claro
$registrados=0$visitantes=0;
while(
$row=mysql_fetch_assoc($en_linea)) {
    if(
$row['tipo']==1$registrados++; // no hago mas que contar cuantos hay registrados y cuantos visitantes
    
elseif($row['tipo']==0$visitantes++;
}
    
// Ahora recupero los registros de ayer y hoy...
$ultimosmysql_query("SELECT usuario, DATE_FORMAT(fecha,'%d') AS dia, DATE_FORMAT(CURDATE(), '%d') AS hoy FROM usuarios WHERE fecha>=DATE_SUB(CURDATE(), INTERVAL 1 DAY) ORDER BY fecha ASC"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// lo mismo.. pude ocupar una query alternativa del tipo COUNT() y GROUP BY()... 
$hoy=0$ayer=0;
while(
$row=mysql_fetch_assoc($ultimos)) {
    
$ultimo=$row['usuario']; // como ordenamos en ascendente, el último bucle nos dará el último usuario registrado
    
if($row['dia']==$row['hoy']) $hoy++;
    elseif(
$row['dia']<$row['hoy']) $ayer++;
}

//y... es todo.. tienes $registrados, $visitante, $hoy, $ayer y $ultimo
?>
Espero quede claro... cualquier comentario hazmelo saber..

Suerte! ... y ponle más empeño...

EDITO:
Aclaro que trabajo con 2 Tablas:
Tabla: usuarios
- id
- usuario
- password
- fecha

Tabla: visitas

- visitante
- hora
- tipo
(no necesito id para este "mi" caso)

y puedes verlo... --- caducado --- . Aunque posiblemente necesites 2 pc's para verlo funcionar
Saludos! ... NO TIENE FORMATO LA PÁGINA A PROPÓSITO, ASÍ QUE NO ME CRITIQUEN
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 05/01/2006 a las 05:03
  #21 (permalink)  
Antiguo 26/03/2005, 20:21
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
De acuerdo

Simple, tal vez deberias poner algo asi...

Aqui te pongo un ejemplo...

Código PHP:
//Al poner SI, es como si dijeras que los usuarios que estan activos
//les insertas en la tabla en la fila de activo si y a los que no estan
//activos les pones No, algo simple y ke identifica todo mas facil

$sql mysql_query("SELECT * FROM visitas WHERE activo='si'");

//Aqui ya hemos sacado cuantos estan activos
$total mysql_num_rows($sql);


//Aqui ya tenemos cuantos no estan activos
$query mysql_query("SELECT * FROM visitas WHERE activo='no'");
$to mysql_num_rows($query);


//Ya nadamas imprimimos...

echo "Activos: $total <br>Inactivos: $to"
Saludoss
  #22 (permalink)  
Antiguo 26/03/2005, 21:41
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola ricardo17

Mira, eso fué lo primero que hice y resultó de maravilla, es lo mejor que pude hacer, pero el problema resulto a la horade volver a poner el campo activo en NO, pues como tu logras saber que el usuario ya cerró la venta.

Sobre los Inactivos, no lo necesito sino solo necesito los usuarios que están en línea right now es decir ahora mismo, y lo visitantes que no son usuarios que tambien están right now.

Espero haberle explicado.

Sobre jam1138, amigo si que jodo, pero bueno jeje, voy a probar tu código cualquier cosa lo digo.

Saludos
  #23 (permalink)  
Antiguo 26/03/2005, 22:01
 
Fecha de Ingreso: marzo-2005
Ubicación: cd. victoria, tamps, mexico
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
si, si te entendi, por ahi tengo un tutorial de eso ke me dijiste, dejame encontrarlo y te expliko....

saludos
  #24 (permalink)  
Antiguo 26/03/2005, 22:04
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Una cosa jam1138, como le pongo al que está en línea el tipo es decir 0 o 1 ??

Talvez no entendí esa parte del código, disculpame

Saludos
  #25 (permalink)  
Antiguo 26/03/2005, 22:07
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
A ok, el tema funciona que si tiene Sessión el le pone 1.

Perfecto

Saludos

Mil Gracias.

Despues le paso la Web para que la vean..
  #26 (permalink)  
Antiguo 27/03/2005, 08:27
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
jam1138 tube que hacerle alguna modificación para que funcionara mejor con el Tema de las Sessiones y séa mas rápido actualizando la Base de Datos.

Código PHP:
<?
// usamos la sesion de nombre definido.
     
session_name(autentificator);
// Iniciamos el uso de sesiones
     
session_start();
     
$usuario=$_SESSION['usuario_login'];

if(isset(
$usuario)){ // Busco una sesion
    
$visita=$usuario// para la busqueda
    
$tipo=1// donde tipo 1 = usuario registrado
} else {
    
$visita$REMOTE_ADDR// lo hubicamos por IP... Existen funciones para el caso de proxis y demás... no es el tema.
    
$tipo=0// donde 0 = visitante
}
$lapso=0// tiempo en minutos
include("conex.php"); // conecto
$conexion=Conectarse();

// primero borro todos los registros que hayan expirado... para mantener la BD ligera.. puedes dejarlos para darle otro uso...
mysql_query("DELETE FROM visitas WHERE hora<DATE_SUB(NOW(), INTERVAL $lapso MINUTE)"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// Como ya se borraron todos los registros que no estan dentro del plazo... puedo buscar al usuario sin complicaciones
$buscamysql_query("SELECT * FROM visitas WHERE visitante='$visita' LIMIT 0,1"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// lo encontré?
if(mysql_num_rows($busca)>0){
// si esta en la BD es usuario activo.. actualizo la nueva hora
    
mysql_query("UPDATE visitas SET hora=NOW() WHERE visitante='$visita'"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());
} else {
// Si no esta.. lo registro
    
mysql_query("INSERT INTO visitas VALUES ('$visita', NOW(), '$tipo')"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());
}

// Entonces, ahora todos en la BD están en línea
$en_lineamysql_query("SELECT tipo FROM visitas"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// Puedo aplicar una query directamente del tipo COUN(tipo) FROM visitas GROUP BY tipo para evitar este bucle... pero creo así te quedará más claro
$registrados=0$visitantes=0;
while(
$row=mysql_fetch_assoc($en_linea)) {
    if(
$row['tipo']==1$registrados++; // no hago mas que contar cuantos hay registrados y cuantos visitantes
    
elseif($row['tipo']==0$visitantes++;
}
    
// Ahora recupero los registros de ayer y hoy...
$ultimosmysql_query("SELECT usuario, DATE_FORMAT(fecha,'%d') AS dia, DATE_FORMAT(CURDATE(), '%d') AS hoy FROM usuarios WHERE fecha>=DATE_SUB(CURDATE(), INTERVAL 1 DAY) ORDER BY fecha ASC"$conexion) or die ("<b>ERROR:</b><br>".mysql_error());

// lo mismo.. pude ocupar una query alternativa del tipo COUNT() y GROUP BY()...
$hoy=0$ayer=0;
while(
$row=mysql_fetch_assoc($ultimos)) {
    
$ultimo=$row['usuario']; // como ordenamos en ascendente, el último bucle nos dará el último usuario registrado
    
if($row['dia']==$row['hoy']) $hoy++;
    elseif(
$row['dia']<$row['hoy']) $ayer++;
}

//y... es todo.. tienes $registrados, $visitante, $hoy, $ayer y $ultimo
?>
Así identifica mejor la Sessión que necesito.
Código PHP:
// usamos la sesion de nombre definido.
     
session_name(autentificator);
// Iniciamos el uso de sesiones
     
session_start(); 
Luego le baje a 0 el valor de $lapso ya que se demoraba5 minutos para decirle a la Base de Datos que ya el Usuario no estaba y que el Visitante ya era Usuario. Jeje pero bueno ya todo anda bien. Una cosa que variable usastes para la Fecha ya que yo le estaba poniendo:

Código PHP:
 $date1 date("d")."-".date("m")."-".date("Y"); 
Saludos
  #27 (permalink)  
Antiguo 27/03/2005, 08:45
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
jam1138, estoy viendo y el Código que tienes en tu Web hace el Total, de registrado y en línea, este no lo hace no ?

Espero Respuesta.

Saludos

PD: Está muy bueno el Código
  #28 (permalink)  
Antiguo 27/03/2005, 13:01
 
Fecha de Ingreso: septiembre-2003
Ubicación: Santo Domingo - R. Dominicana
Mensajes: 606
Antigüedad: 20 años, 7 meses
Puntos: 0
Amigo jam1138, ya he resuelto todo lo que necesitaba pero estoy viendo que el Código tiene un Error y es el Siguiente:

Entro a la Web, y el código me agrega a la Base de Datos:
192.168.0.2 2005-03-27 15:00:33 0

Entonces el me marca
Visitantes: 1
Miembros: 0
Total: 1

Hasta ahí vamos perfecto, pero el problema viene cuando entro como usuario que el Sistema de Login agrega la Sessión $usuario=$_SESSION['usuario_login']; entonces ahora en la Base de Datos somos dos,
nombredeusuario 2005-03-27 14:59:47 1
192.168.0.2 2005-03-27 15:00:33 0

Y me muestre el Código:
Visitantes: 1
Miembros: 1
Total: 2

Y realmente soy yo mismo, solo que el Código tiene un plazo de 5 minutos supuestamente para Actualizar la Base de Datos, pero el otro inconveniente es que si le pongo 0 minutos en el plazo no me muestra los que están Online General es decir solo te muestra a tí, ejemplo:

Hay 5 usuarios en la Web, entonces solo muestra 1, realmente no entiendo el arroz con poyo ese. JEJE

Realmente, debería de mostrar lo que pasa en el Momento, si hay 1000 visitantes que muestre 1000 Visitantes pero si uno de los 1000 entra entonces debería de mostrar

Visitantes 999
Usuarios 1
Total 1000

Y no

Visitantes 1000
Usuarios 1
Total 1001

Saludos

Última edición por 2Fast To You; 27/03/2005 a las 13:03
  #29 (permalink)  
Antiguo 27/03/2005, 16:12
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
jam1138, estoy viendo y el Código que tienes en tu Web hace el Total, de registrado y en línea, este no lo hace no ?
... tienes $visitantes y $ registrados... Obviamente el total en línea será $visitantes+$registrados... puedes mandar a imprimir la suma directamente

Cita:
(...) el problema viene cuando entro como usuario que el Sistema de Login agrega la Sessión $usuario=$_SESSION['usuario_login']; entonces ahora en la Base de Datos somos dos (...) Y realmente soy yo mismo, solo que el Código tiene un plazo de 5 minutos supuestamente para Actualizar la Base de Datos, pero el otro inconveniente es que si le pongo 0 minutos en el plazo no me muestra los que están Online (...)
Evidentemenete es un error ponerle 0 como plazo... nadie cumpliria esa plazo... El tema de que te muestre a ti mismo 2 veces... está fuera de esta parte del código. Por lógica.. para solucionar eso debes de eliminarte como visitante al mismo tiempo que te logueas... sin mayor ciencia.

Saludos y en verdad disculpa
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 05/01/2006 a las 05:03
  #30 (permalink)  
Antiguo 28/03/2005, 10:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ojo con esto:
// usamos la sesion de nombre definido.
session_name(autentificator);

en tal caso sería:
// usamos la sesion de nombre definido.
session_name("autentificator");

Si es que le van a dar un nombre a la sesión .. lo cual no es obligatorio ... Le faltan las comillas .. sino se asume que es una "constante" lo cual no es cierto .. En su defecto pueden usar una $variable si lo desean ..

Un saludo,
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 15:04.