2012-09-06 10 views
2

Je suis à la recherche d'un bon moyen de montrer combien de personnes accèdent à mon site actuellement (en direct). J'ai compris, que ce serait probablement le moyen le plus simple, lorsque j'enregistrer l'adresse IP de la personne, d'accéder à mon serveur/site, dans une table mysql.enregistrer les adresses IP actuelles dans la table mysql

donc ce que j'ai à faire est probablement:

créer une table mysql bien configuré

ajout de la fonctionnalité (je suppose en php) d'enregistrer l'adresse IP

ajout de la fonctionnalité de suppression l'adresse IP, si elle n'est pas nécessaire plus longtemps

rendant le temps réel de processus ou à proximité en temps réel

peut-som quelqu'un m'aider?

+1

Nous serons heureux de vous aider. Quel est le problème avec le code que vous avez écrit? – andrewsi

+1

Le moyen le plus simple est d'intégrer une balise d'analyse Google et de les laisser faire le comptage. L'adresse IP est très peu pour obtenir des données fiables. Vous aurez également besoin d'au moins un suivi des cookies. –

+0

Jetez un coup d'œil sur [Piwik] (http://piwik.org/) - cela vous permettra de suivre vos statistiques. – Bojangles

Répondre

1

Tout d'abord, puis-je suggérer que cette question ne s'intitule pas très bien? C'est une erreur typique pour les gens de deviner quelle est la solution à un problème en demandant de l'aide - je le vois tout le temps dans les entreprises actuelles/précédentes, j'ai travaillé lorsque le personnel soumet des rapports de bugs. La solution que vous essayez d'atteindre consiste à implémenter une forme d'analyse afin de déterminer le nombre de visiteurs de votre site, le nombre de visiteurs uniques et la possibilité de voir en temps réel qui est utilise actuellement le site. Donc, un meilleur titre serait quelque chose comme "Comment puis-je obtenir des informations sur qui visite mon site?".

Le stockage d'adresses IP dans un tableau est un moyen valable d'y parvenir, mais il est loin d'être idéal.Je suggère fortement d'utiliser Google Analytics (ou quelque chose dans ce sens) car cela vous permettra de voir toutes ces informations et plus encore, et cela ne demandera pas beaucoup d'efforts de votre part. Vous n'avez même pas besoin d'être un codeur - il vous suffit de copier et coller l'extrait qu'ils fournissent dans votre tag HEAD. Il y a beaucoup d'informations sur la façon de faire cela, donc je ne vais pas entrer dans les détails, mais n'hésitez pas à demander si vous rencontrez des problèmes.

+0

Merci! Je suis vraiment heureux, que vous m'expliquiez, comment je devrais travailler sur ce problème. Je dois regarder si Google Analytics est un bon outil à utiliser. Le seul problème que j'ai, c'est que je ne veux pas avoir de statistiques "à long terme" sur qui visite mon site, ce que je veux réellement, c'est un outil qui montre, combien les gens sont "en ce moment" sur mon site web/serveur. Donc, il va être un texte comme celui-ci: "8" personnes sont actuellement disponibles La valeur de la quantité de personnes disponibles doit toujours être à jour. Je suis désolé de ne pas avoir rendu mon problème aussi clair. – user1644622

+0

Vous avez de la chance, Google Analytics fournit maintenant exactement cela! Après avoir configuré un "code de suivi" et avoir intégré l'extrait de code sur chaque page de votre site (normalement une seule fois dans le modèle), vous pouvez vous connecter à votre compte, cliquez sur "Accueil" dans la barre de navigation supérieure. , puis "Real-Time" dans la barre de navigation de gauche. Ceci est actuellement en version bêta, mais cela fonctionne très bien pour moi. En prime, non seulement vous pouvez voir «X visiteurs actifs sur le site», mais vous pouvez également voir sur quelle page ils se trouvent et comment ils ont trouvé votre site. – RobMasters

+0

Cool, ça sonne comme c'est exactement ce dont j'ai besoin. :) Merci beaucoup. – user1644622

4

Voici un exemple rapide de la façon dont vous pourriez prendre pour obtenir l'adresse IP réelle d'un client, puis le stockage et la récupération de la valeur à partir de la base de données mysql

//Test if it is a shared client 
if (!empty($_SERVER['HTTP_CLIENT_IP'])){ 
    $ip=$_SERVER['HTTP_CLIENT_IP']; 
//Is it a proxy address 
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
}else{ 
    $ip=$_SERVER['REMOTE_ADDR']; 
} 
//The value of $ip at this point would look something like: "192.0.34.166" 
$ip = ip2long($ip); 
//The $ip would now look something like: 1073732954 

Maintenant que vous avez l'adresse IP réelle de le client converti au format INT, vous pouvez l'écrire dans la base de données comme vous le feriez normalement

$sql = "INSERT INTO user(ip) VALUES('$ip')"; 
$dbQuery = mysql_query($sql,$dbLink); 

Plus sur ce lien: Best way to store IP addresses in MySQL

informations supplémentaires: pour vous rendre le code à partir de SQL Injection. Utilisez PDO ou MYSQLI

Exemple d'utilisation extension PDO:

<?php 

    $stmt = $dbh->prepare("INSERT INTO user(ip) VALUES(?)"); 
    $stmt->bindParam(1, $ip); 

    $stmt->execute(); 
?> 
+0

merci. Je dois voir si cela m'aide (je ne suis pas un gros codeur, il me faudra donc du temps pour essayer le code). – user1644622

+0

@ user1644622 essayez également d'utiliser l'extension PDO. –

0

Everytime une page est demandée, vous pouvez appuyer sur l'adresse IP à la base de données MySQL, de sorte qu'il serait unique.

<?php 
    $ipaddress = $_SERVER["REMOTE_ADDR"]; 
    mysql_connect(); 
    mysql_select_db("visitors"); 
    mysql_query("INSERT INTO `visitors` (`ipaddress`) VALUES ('$ipaddress')"); 
    mysql_close(); 
?> 
1

Cette fonctionnalité est déjà construite avec Google Analytics, IP adresses ne sont pas la meilleure façon de garder une trace de nombre de visiteurs.

2

Stockez vos visiteurs dans la base de données (comme les autres réponses). Utilisez un champ datetime qui contient la date de la dernière requête du visiteur (vous devez mettre à jour la ligne chaque page vue).

Maintenant, vous pouvez calculer les "visiteurs en ligne" en utilisant l'intervalle MySQL.

Par exemple:

SELECT 
COUNT(1) AS `online_visitors` 
FROM `visitors` 
WHERE `datetime` > NOW() - INTERVAL 30 SECONDS 
Questions connexes