Que tal, tengo una funcion cuyo objetivo es incremetnar los hits de una "grupo o artista", la idea es cada que un usuario visite la pagina del artista, los hits del mismo sumen en uno, pero si lo visita otra ves el mismo dia no lo incremente o si visita otra seccion del mismo tampoco lo incremente, si lo visita el dia siguiente si lo incrementaria. Para ello guardo el ip, la fecha de visita, el codigo de artista y un id general en la base de datos. En estos momentos he notado un comportamiento extraño, ya que apenas se registraron 3 ips diferentes y ya el contador esta en 11, ¿cual es el problema? pienso que puede ser por el lado de las consultas a la bdd.
Código PHP:
function incrementarHits()
{
global $conn, $grupoid;
$ip_user = getenv("REMOTE_ADDR");
$sql = "SELECT *
FROM ips
WHERE ip LIKE '".$ip_user."' AND aid = $grupoid";
$resultado = $conn->Execute($sql);
$numResultado = $resultado->NumRows();
if($numResultado<=0)
{
$sql = "INSERT INTO ips (id, ip, fecha, aid)
VALUES ('', '".$ip_user."', CURDATE(), $grupoid)";
$conn->Execute($sql);
$sql = "UPDATE artista
SET hits = (hits + 1)
WHERE id = $grupoid
LIMIT 1";
$conn->Execute($sql);
}
else
{
list($ih_id, $ih_ip, $ih_fecha, $ih_aid) = $resultado->fields;
$resultado->Close();
$sql = "SELECT *
FROM ips
WHERE ip LIKE '" . $ip_user . "' AND CURDATE() > fecha";
$resultado=$conn->Execute($sql);
$numResultado2 = $resultado->NumRows();
if($numResultado2 > 0)
{
$resultado->Close();
$sql = "UPDATE ips
SET ip = '". $ip_user ."', fecha = CURDATE()
WHERE id = $ih_id
LIMIT 1";
$conn->Execute($sql);
$sql = "UPDATE artista
SET hits = (hits + 1)
WHERE id = $grupoid
LIMIT 1";
$conn->Execute($sql);
}
}
}
tambien no se si sea lo mas conveniente almacenar las ips en una bdd o mejor usar cookies, que me recomiendan.
Saludos