Double compte...

Eléphant du PHP | 80 Messages

09 oct. 2005, 16:04

Bonjour à tous,

je voudrais savoir s'il est possible d'empêcher le double compte (par vérification d'ip) sans passer par la base de donnée. Les Ip des personnes connectées s'ajouteraient sur un fichier texte, et avec impossibilité d'avoir deux fois la même IP.

Et avec cela, permettre de faire un calcul du nombre de membres connectés.

Mais si cela n'est pas possible par fichier texte, on le fait sur la base de donnée, mais c'était pour ne pas l'encombrer. Mais je ne vois pas non plus comment faire...

Merci de votre aide !
XaV...
Webmaster des Larmes du Chaos

Mammouth du PHP | 1776 Messages

09 oct. 2005, 16:08

Bonjour à tous,

je voudrais savoir s'il est possible d'empêcher le double compte (par vérification d'ip) sans passer par la base de donnée. Les Ip des personnes connectées s'ajouteraient sur un fichier texte, et avec impossibilité d'avoir deux fois la même IP.

Et avec cela, permettre de faire un calcul du nombre de membres connectés.

Mais si cela n'est pas possible par fichier texte, on le fait sur la base de donnée, mais c'était pour ne pas l'encombrer. Mais je ne vois pas non plus comment faire...

Merci de votre aide !
:shock: Idem que Cyrano le smiley...
Je ne vois pas en quoi ca encombrerait la bdd, elle est faite pour ca non? Sinon on mettrais tout en fichier texte, pseudo, mdp, mail, etc...
Pour créer ton script, il suffit d'un peu de logique de base...quelques if et ptetre un while et ca tourne :wink:
Il ne faut pas oublier qu'il existe encore des ip dynamiques, ce qui limite l'uitilisation d'un tel script :roll:

Dux
Eléphant du PHP | 127 Messages

09 oct. 2005, 19:00

salut

plus simple qu'un fichier texte, crée un dossier ou chaque nom de fichier est une IP
Donc si tu as 10 fichiers dont la date est inférieure à par exemple 10mn, ca veut dire que tu as eu 10 visiteurs différents ces 10 dernières minutes.
Pour ce genre d'opération, les fichiers textes sont préférables à une BDD plus "technique" car c'est très rapide et on n'a pas besoin de fonctions compliquées de tri et recherche.

Eléphant du PHP | 80 Messages

09 oct. 2005, 21:12

Oki, je vais voir tout ça :D

Je précise que je veux économiser de la place par tous les moyens sur ma bdd. On arrive fréquemment à 20 à 30 personnes en même temps sur le site, j'ai pas envie que ça prenne trop de place.

Enfin, je veux bien aussi savoir comment on fait par la base de donnée...

Merci
XaV...
Webmaster des Larmes du Chaos

Mammouth du PHP | 1776 Messages

10 oct. 2005, 01:04

Oki, je vais voir tout ça :D

Je précise que je veux économiser de la place par tous les moyens sur ma bdd. On arrive fréquemment à 20 à 30 personnes en même temps sur le site, j'ai pas envie que ça prenne trop de place.

Enfin, je veux bien aussi savoir comment on fait par la base de donnée...

Merci
j'ai déjà vu des forums avec 400000 messages et 40000 membres avec 400 connectés en permanence...ba la base de données ne faisait que 150 meg, c'est très peu. Ensuite, créer des fichiers sur le serveur va occuper...l'espace disque :roll: Je ne vois pas la super utilité...

Si tu le fais en base de données, tu as plus de possibilités...
Il te faut pour cela l'heure de derniere connexion, l'adresse ip de derniere connexion et une variable true ou false. Le principe est simple:
premiere connexion: tu envoie ladresse ip, le timestamp et la valeur false en bdd.
seconde connexion: tu compares ladresse ip et le timestamp ==>

si + de 24 heures se sont ecoulés depuis la derniere connexion, on compare les ips...si elle sont identiques, on met le champ de tout a lheure en true.
Cela voudra dire que le mec a une ip fixe, si a la connexion dun membre on retrouve cette ip sur un autre compte, on aura donc un double compte.

si - de 24 heures ou ip différente, on compare si cette ip n'a pas été utilisé les 2 dernières heures sr un autre compte. SI ce n'est pas le cas, on garde false en bdd, on met le nouveau timestamp et on met la nouvelle ip.

j'allais oublier... il faut également tester si on se connecte à un compte avec une adresse ip fixe (TRUE en bdd de tout a l'heure). si c'est le cas que l'on retrouve l'ip en bdd sur un compte de type true, on cherche meme pas ==> c un double compte

Après, tu peux doubler ce test avec les cookies qui peuvent egalement te donner des infos... :wink:

ViPHP
pjl
ViPHP | 2119 Messages

10 oct. 2005, 12:16

je voudrais savoir s'il est possible d'empêcher le double compte (par vérification d'ip)
Ou as tu vu que derrière une IP, il ne peut y avoir qu'une et une seule personne ?

Eléphant du PHP | 80 Messages

15 oct. 2005, 00:50

Bonsoir,

Je sais bien qu'il peut y avoir plusieurs personnes, quand même lol, je sais au moins ça :wink: mais tant pis, je souhaite tout du moins que lorsque moi, à lecture d'un fichier texte par exemple, je retrouve deux fois la même IP, que au moins je le sache...

Merci
XaV...
Webmaster des Larmes du Chaos

Dux
Eléphant du PHP | 127 Messages

15 oct. 2005, 01:10

si tu veux le faire en texte, essaye cette méthode:
-crée un dossier ip/ que tu protèges du dir listening avec un htaccess

dans tes pages, inclue un script:
$ip=$_SERVER['REMOTE_ADDR'];
$fp= fopen("ip/".$ip, "w"); fclose($fp);

$dir=opendir('ip');
while ( ($ip = readdir($dir)) !== false ) 
if ($ip{0} != '.') 
if ( date("U") - date("U", filemtime("ip/".$ip)) > 600 ) unlink("ip/".$ip);
else $live++;
closedir($dir);
echo $live." connecté(s)";
tout simplement
Modifié en dernier par Dux le 15 oct. 2005, 02:03, modifié 1 fois.

Eléphant du PHP | 80 Messages

15 oct. 2005, 01:14

Euh, mais juste sinon, c'est quoi la ligne unique servant à avoir l'ip, serait-ce :

Code : Tout sélectionner

$ip=$_SERVER['REMOTE_ADDR'];
?

Merci
XaV...
Webmaster des Larmes du Chaos

Dux
Eléphant du PHP | 127 Messages

15 oct. 2005, 01:19

oui, tout à fait, regarde le tuto de phpfrance
http://www.phpfrance.com/tutoriaux/inde ... ironnement

Eléphant du PHP | 80 Messages

15 oct. 2005, 01:23

Ahhhh, pas mal le lien, je note, merci beaucoup :wink:
XaV...
Webmaster des Larmes du Chaos

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 oct. 2005, 01:30

petite précision pour ajouter dans un fichier il faut l'ouvrir en mode "a" (append)
$fp= fopen("ip/".$ip, "a"); fclose($fp);

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Dux
Eléphant du PHP | 127 Messages

15 oct. 2005, 01:43

oui mais la "w" est parfait car on écrit rien dans le fichier :) donc il n'y a rien à ajouter en fin de contenu

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 oct. 2005, 02:00

c'est vrai aussi (pas vu au 1er coup d'oeil :wink: ), création d'un fichier par IP => "w" OK

mais manque un / quant meme :)
unlink("ip/".$ip);  
pour le fun

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Dux
Eléphant du PHP | 127 Messages

15 oct. 2005, 02:03

Correct !
je modifie ;)