Ante todo comentar que estoy usando el Autentificator de Cluster y me funciona correctamente. He visto por el foro la propuesta de jpinedo y estoy practicando con ella. Él comenta que funciona correctamente con la aplicación de Cluster modificando las variables de sesion $_SESSION['usuario_nombre'] por $_SESSION['usuario_login']. Seguramente algo habré hecho mal ya que me parece que algo no me cuadra.
En primer lugar creé una tabla llamada sesiones con estos datos:
Cita:
Seguidamente la conexión a la base de datos con el archivo info.php:CREATE TABLE sesiones (
usuario_nombre varchar(25) NOT NULL,
tiempo varchar(14) NOT NULL,
invitado int(1) NOT NULL
);
usuario_nombre varchar(25) NOT NULL,
tiempo varchar(14) NOT NULL,
invitado int(1) NOT NULL
);
Código PHP:
<?php
$servidor="localhost";
$usuario="*********";
$password="********";
$base="*********";
$con = mysql_connect($servidor,$usuario,$password) or die ("Error en la conexión con BD ".mysql_error());
mysql_select_db($base,$con) or die ("Error al seleccionar BD ".mysql_error());
?>
Código PHP:
<?
function online(){
if (!isset($_SESSION['usuario_login'])){
$usuario_nombre = $_SERVER['REMOTE_ADDR'];
$invitado = 1;
}else{
$usuario_nombre = $_SESSION['usuario_login'];
$invitado = 0;
}
include ("info.php");
$pasado = time()-300;//900 segundos. Cambiar por el plazo que se quiera dar al usuario para realizar alguna acción (recargar por ejemplo).
$sql = "DELETE FROM sesiones WHERE tiempo < $pasado";
mysql_query($sql);
$sql = "SELECT tiempo FROM sesiones WHERE usuario_nombre='$usuario_nombre'";
$result = mysql_query($sql) or die ("Error en función online (leer) :".mysql_error());
$tiempo = time();
if (mysql_num_rows($result) == 1){
$sql = "UPDATE sesiones SET usuario_nombre='$usuario_nombre', tiempo='$tiempo', invitado='$invitado' WHERE usuario_nombre='$usuario_nombre'";
}else{
$sql = "INSERT INTO sesiones (usuario_nombre, tiempo, invitado) VALUES ('$usuario_nombre', '$tiempo', '$invitado')";
}
mysql_query($sql) or die("Error en función online (actualizar) :".mysql_error);
}
?>
Código PHP:
include ("online.php");
online()
Código PHP:
<?
include ("info.php");//conexión con BD
$sql = "SELECT usuario_nombre FROM sesiones WHERE invitado=0";
$result = mysql_query($sql);
$total_registrados = mysql_num_rows($result);
echo "En línea:<br />";
echo "Usuaris registrats: ".$total_registrados."<br />";
while ($row = mysql_fetch_array($result)){
echo $row['usuario_nombre']."<br />";
}
$sql = "SELECT * FROM sesiones WHERE invitado=1";
$result = mysql_query($sql);
$total_invitados = mysql_num_rows($result);
echo "Invitats: ".$total_invitados."<br />";
echo "Total usuaris en línea: ".($total_invitados + $total_registrados)."<br />";
?>
Saludos y gracias