Compter le nombre de personne connécté

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Compter le nombre de personne connécté

par pirquecha » 01 avr. 2005, 19:28

Peut tu partager le script du comptage, il m'interesse...
:) Ce serai sympa a toi,
MERCI

par aqua007 » 31 mars 2005, 15:09

Bon b'ah j'ai fait avec les sessions et ça fonctionne apparament :)

par aqua007 » 30 mars 2005, 22:22

Avec les ip c'est pas bon car :

$queryupd = "update csdz_connectes SET time='".$temps_actuel."' WHERE ip='".$_SERVER['REMOTE_ADDR']."'";

->Un mec met a jour toutes les ip pareil que lui, même si ces personnes ont quitté le site, donc si 20 pers viennent surfer, et que 1 seul d'entre eux reste, bin c'est comme si y'avais toujours les 20 pers non ?

par Xenon_54 » 30 mars 2005, 20:51

Je ne suis pas d'accord avec les ID de session puisque les ID de session sont basés sur les cookies. Donc autant prendre directement les cookies sans démarrer la machine à sessions.

:)

par Jerem' » 30 mars 2005, 14:47

Les IP n'ont rien à faire dans un script de connectés puisqu'elles donnent de faux résultats.

Il faut enregistrer les id de sessions qui sont uniques et tous différents pour chaque utilisateurs :wink:

par sadeq » 30 mars 2005, 14:24

Ok, on est d'accord d'après ce que tu viens de dire, mais la requête n'est correcte qu'à condition que ip n'est pas une clé primaire et d'enlever la clause GROUP BY.
$querycount = "SELECT count(ip) FROM csdz_connectes GROUP BY ip";
$resultcount = mysql_query($querycount);
$nbcon = mysql_num_rows($resultcount);
echo "Actuellement".$nbcon."connectés";
un GROUP BY (qui n'est utilisé que pour organiser les doublons) n'est pas obligatoire dans cette requête. sinon le compte se fera par ip.

Sans le GROUP BY et avec un ip non clé primaire de la table, si on a 15 personnes connectées en même temps avec la même IP la requête affiche le compte des ip's trouvées dans la table.

Exemple :
ip ....
x.x.x.x
x.x.x.x
x.x.x.x
y.y.y.y
z.z.z.z

La requête affiche : 5
Avec le group by elle affiche :
3
1
1

par Jerem' » 30 mars 2005, 13:40

Bah tu peux avoir 15 personnes connectées en même temps avec la même IP donc si t'en comptes qu'une ça sera faux... :roll:

Tandis qu'elle auront chacunes des sessions différentes...

par sadeq » 30 mars 2005, 13:10

Oue mais bon les résultats sont faux si plusieurs personnes ont la même IP
Je ne suis pas d'accord, puisque le script cible les utilisateurs actuellement connectés, qu'ils soient derrière un proxy (même IP) ou pas, une connexion est ouverte pour chacun, il faut la compter.

par aqua007 » 30 mars 2005, 12:52

ah wai pas bête, si des personnes sont derrière un proxy elles ont la même ip, j'avais pas pensé à ça!

par flitox » 30 mars 2005, 11:21

Le script est basique c'est sûr qu'il y a moyen d'améliorer ;)

par Jerem' » 30 mars 2005, 10:23

Oue mais bon les résultats sont faux si plusieurs personnes ont la même IP

par flitox » 30 mars 2005, 10:06

connectes.php :
<?php require ("config.inc.php");

@mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données");
@mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");

$tps_max_connex = 180;
$temps_actuel = date("U");

$querytest = "SELECT * FROM csdz_connectes WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
$resulttest = mysql_query($querytest);

if(mysql_num_rows($resulttest) == 0)
	{
		$queryins = "INSERT INTO csdz_connectes(ip,time) VALUES('".$_SERVER['REMOTE_ADDR']."', '".$temps_actuel."')";
		$resultins = mysql_query($queryins);
						
	}
else
	{	
		$queryupd = "update csdz_connectes SET time='".$temps_actuel."' WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
		$resultupd = mysql_query($queryupd);
	}

$heure_max = $temps_actuel - $tps_max_connex;
$querydel = "DELETE FROM csdz_connectes WHERE time < $heure_max";
$resultdel = mysql_query($querydel);
?>
Et dans chaque page un include("connectes.php");

Affichage :
<?php
	$querycount = "SELECT count(ip) FROM csdz_connectes GROUP BY ip";
	$resultcount = mysql_query($querycount);
	$nbcon = mysql_num_rows($resultcount);
        echo "Actuellement".$nbcon."connectés";
?>

par Jerem' » 30 mars 2005, 10:03

Tu mets quoi ?

par flitox » 30 mars 2005, 09:56

Personnellement je n'utilise même pas de sessions et ça marche aussi bien :)

par Jerem' » 30 mars 2005, 09:48

1° Tu verifie si l'ip est dans ta table :
Il vaut mieux enregistrer les sessions, l'IP n'est pas unique, la session par contre l'est :wink: