Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2006, 19h32   #1
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut [SQL] Qui est en ligne

Bonsoir,

J'éssaye d'apliquer un scripte qui compte le nombre de visiteur sur le site, le problème est que il prand l'ip de mon serveur, donc quand on surf avec 3 pc du réseaux sur le site il indique 1 utilisateur et pas 3.

Voici mon code....

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
function nb_visiteurs_connecte($time,$filename="data.dat")
{
$ip = getenv("REMOTE_ADDR");
$date=time();
$i=0;
$ii=0;
$bool=0;
if(file_exists($filename))
{
if($fichier=fopen($filename,"r"))
{
while(!feof($fichier))
{
$ligne=fgets($fichier,4096);
$tab=explode("|",$ligne);
if($tab[1]>0)
{
$tab_de_tab[$i][0]=$tab[0];
$tab_de_tab[$i][1]=$tab[1];
$i++;
}
}
fclose($fichier);
}
}
for($j=0;$j<$i;$j++)
{
if(($date-chop($tab_de_tab[$j][1]))>$time)
{
}
else
{
$tab_de_tab_actualise[$ii][0]=$tab_de_tab[$j][0];
$tab_de_tab_actualise[$ii][1]=chop($tab_de_tab[$j][1]);
$ii++;
}
}
for($j=0;$j<$ii;$j++)
{
if($tab_de_tab_actualise[$j][0]==$ip)
{
$bool=1;
}
}
if($bool==0)
{
$tab_de_tab_actualise[$ii][0]=$ip;
$tab_de_tab_actualise[$ii][1]=$date;
$ii++;
}
if($fichier=fopen($filename,"w"))
{
for($j=0;$j<$ii;$j++)
{
fputs($fichier,chop($tab_de_tab_actualise[$j][0]));
fputs($fichier,"|");
fputs($fichier,chop($tab_de_tab_actualise[$j][1]));
fputs($fichier,"\n");
}
fclose($fichier);
}
echo "<b>",$ii,"</b> visiteurs connectés";
}
nb_visiteurs_connecte(300,"data.dat");
?>
Merci pour votre aide.

Dernière modification par HwRZxLc4 ; 30/04/2006 à 21h09. Motif: Résolu
  Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 19h35   #2
Membre expérimenté
 
Développeur Web
Inscription : avril 2006
Messages : 430
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 430
Points : 538
Points : 538
Salut,

si le test se fait sur un serveur qui se trouve à l'extérieur du réseau où se trouvent les 3 PC en question, et si les 3 PC se trouvent sur le meme réseau local, qui accèdent par la même ligne vers Internet, alors c'est normal car il n'y a qu'une seule IP commune pour les 3 machines.
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 19h54   #3
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Je sais, mai j'ai déjà vu un script qui tennais compte des pc interne au réseaux, mai je remet pas la main dessus....
  Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h00   #4
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Je ne trouve pas que ce soit la metthode la plus simple.
Ce que je fait pour faire ce genre de chose c'est que je crée une table qui enregistre toute les sessions (et qui les effacent si la personne n'a pas raffraichi de page pendant un certain temps).

Comme ca j'ai le nombre de visiteur en "temps réel" et en plus je me sert de cette table pour les session (j'attribu le nom du membre a chaque session si il sont connecté).
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h04   #5
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Oui mais sa fais des requètes en plus....

J'ai rajouté sa au début et la sa fonctionne.

Code :
1
2
3
4
5
6
7
[FONT=Verdana]if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  
    elseif(isset($_SERVER['HTTP_CLIENT_IP']))    
    $ip = $_SERVER['HTTP_CLIENT_IP'];    
    else 
    $ip = $_SERVER['REMOTE_ADDR'];   [/FONT]

et enlevé cette ligne
Code :
$ip = getenv("REMOTE_ADDR");
  Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h07   #6
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Citation:
Envoyé par cobra-expert
Oui mais sa fais des requètes en plus....
Ca fait 2 requettes enplus. Et tu peut faire la meme chose avec ton .dat de toute manière.
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h21   #7
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
a bon comment ?

Ps: je début donc faus m'excuser...
  Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h23   #8
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
De quoi les requettes ou le .dat?
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h32   #9
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Le .dat, car avec les requète c'est trop complex pour tou sécrire pour moi...
  Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h42   #10
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Citation:
Envoyé par cobra-expert
Le .dat, car avec les requète c'est trop complex pour tou sécrire pour moi...
Je trouve que c'est beaucoup plus simple de faire des requette SQL que de faire de lecture et lecture de fichier. Et en plus je suis sur que ca solicite beaucoup plus le serveur de trvailler sur des fichier .dat (ce n'est que mon avis). Sinon les bases de donné n'aurait pas été inventées.
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 20h57   #11
Membre expérimenté
 
Développeur Web
Inscription : avril 2006
Messages : 430
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 430
Points : 538
Points : 538
Citation:
Envoyé par Death83
Et en plus je suis sur que ca solicite beaucoup plus le serveur de trvailler sur des fichier .dat (ce n'est que mon avis). Sinon les bases de donné n'aurait pas été inventées.
Hmm, là, ca dépend Les accès filesystem sont plus rapides qu'un accès à une DB, mais évidemment, t'as beaucoup plus de choses à gérer dans le cas d'accès directs à des fichiers (l'une des pires: les accès concurrents). Les DB n'ont pas été inventées parce que ca allait plus vite, mais surtout pour avoir une gestion et une structure correcte des données, et un langage 'universel' d'accès à celles-ci. (Ca n'engage que moi, mais je dois pas être trop trop loin de la vérité j'pense )
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2006, 21h10   #12
HwRZxLc4
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Merci beaucoup, comme je sais pas comment le faire avec dase de donnée, je vais toujours rester avec ce que j'ai....

encore merci.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Enlever Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h20.


 
 
 
 
Partenaires

Hébergement Web