[PHP] visitas unicas a un perfil

djHaL

if( isset($SERVER['HTTP_X_FORWARDED_FOR']) && $SERVER['HTTP_X_FORWARDED_FOR'] != '' ){
$ip = $SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip = $
SERVER['REMOTE_ADDR'];
}

	$consulta4 = mysql_query("SELECT * FROM visitas WHERE id_ficha = $idficha"); 
	$ip1 = mysql_fetch_row($consulta4);
			
## si la ip actual no se encuentra en toda la db visitas con la id $idficha introducela
if ( $ip != $ip1['ip']){
	mysql_query("INSERT INTO visitas (id_ficha, id_sesion, ip) VALUES ('$idficha', '', '$ip')");
	mysql_query("UPDATE fichas SET visitas = visitas+1 WHERE id=$idficha");
}

Este es el codigo que tengo echo, y siempre me suma uno... no lo entiendo :(

cabron

2 cosas:

  1. Es imposible calcular las visitas únicas a una página basandose en la IP, debido a las ips dinámicas y la gente que se conecta desde diferentes máquinas con la misma ip al estar en una red local con la misma salida a Internet.

  2. Si se supone que quieres controlar si alguien ya ha visitado el perfil comparando la ip, ¿no deberías hacer un bucle comparando la ip con todas las que ya haya en la tabla? por que veo que el if no está en un bucle, así que solo te lo va a comparar con una de ellas, la primera que devuelva la query. Necesitas algo en plan:

ipEncontrada = falso;

comparar ip con todas las que ya hay <--- Bucle
Si existe la ip ipEncontrada = verdadero;

Si ipEncontrada = falso añadir una visita más

W

Yo lo que hacia era crear una tabla en una base de datos que tenia estos campos

ID
IP
DATA

En ID era autoincrement en la IP metia la ip del tio y en data la fecha (solo fecha).

Luego en el PHP le decia que primero comprovara que esa IP con el dia de hoy no estuvieran ya en la database, si lo estaban pues no hacia nada, si no estaban pues la insertaba.

De esta forma era un poco mas real, asi no me pasaba como tu dices, que te suma 1 cada vez.

$cons="SELECT * FROM visitas WHERE (dia='".date("Y-m-d")."') AND (ip='".$_SERVER['REMOTE_ADDR']."')";

$nvia=mysql_query($cons,$conexion);

if($registro=mysql_fetch_assoc($nvia)) {

} else {

$cons2="INSERT INTO `visitas` (dia,ip) VALUES ('".date("Y-m-d")."','".$_SERVER['REMOTE_ADDR']."')";

mysql_query($cons2,$conexion);

}

Usuarios habituales

  • willy__chaos
  • cabron
  • djHaL