Faire un compteur de connectés via IP

Statut
N'est pas ouverte pour d'autres réponses.

Jak Chirak

Membre
Inscription
21 Avril 2014
Messages
939
Réactions
371
Points
1 820
RGCoins
0
Bonjour à tous et à tous, aujourd’hui je vous présente un petit code en PHP qui vous permet de faire un compteur de connectés via IP sur votre site web.

I - Programmation de votre base de donnée
Faites une table à deux entrées, comme ceci :
6713.png


II - Script PHP
Placez se script sur votre site web :
Code:
<?php
// Connexion à MySQL
mysql_connect("Localhost", "NOM_DE_LA_DB", "MOT_DE_PASSE");
mysql_select_db("NOM_DE_LA_DB");

// -------
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// Nombre de co's
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs.</p>';
?>

Une fois ce code placé sur votre site web, cela vous affichera le nombre de connectés par IP.
Avantage : Une IP = 1 connecté donc même si une personne ouvre 10 fois la même page, si il ne change pas d'IP le compteur restera toujours à 1 connecté.

Source :

Bonne journée,
Spy.exe
 
Source ?
 
Bon tuto :p
 
Bonjour à tous et à tous, aujourd’hui je vous présente un petit code en PHP qui vous permet de faire un compteur de connectés via IP sur votre site web.

I - Programmation de votre base de donnée
Faites une table à deux entrées, comme ceci :
6713.png


II - Script PHP
Placez se script sur votre site web :
Code:
<?php
// Connexion à MySQL
mysql_connect("Localhost", "NOM_DE_LA_DB", "MOT_DE_PASSE");
mysql_select_db("NOM_DE_LA_DB");

// -------
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// Nombre de co's
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs.</p>';
?>

Une fois ce code placé sur votre site web, cela vous affichera le nombre de connectés par IP.
Avantage : Une IP = 1 connecté donc même si une personne ouvre 10 fois la même page, si il ne change pas d'IP le compteur restera toujours à 1 connecté.

Bonne journée,
Spy.exe
Bonjour à tous et à tous, aujourd’hui je vous présente un petit code en PHP qui vous permet de faire un compteur de connectés via IP sur votre site web.

I - Programmation de votre base de donnée
Faites une table à deux entrées, comme ceci :
6713.png


II - Script PHP
Placez se script sur votre site web :
Code:
<?php
// Connexion à MySQL
mysql_connect("Localhost", "NOM_DE_LA_DB", "MOT_DE_PASSE");
mysql_select_db("NOM_DE_LA_DB");

// -------
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// Nombre de co's
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs.</p>';
?>

Une fois ce code placé sur votre site web, cela vous affichera le nombre de connectés par IP.
Avantage : Une IP = 1 connecté donc même si une personne ouvre 10 fois la même page, si il ne change pas d'IP le compteur restera toujours à 1 connecté.

Bonne journée,
Spy.exe

Bon tuto, par contre ton code n'est pas à jour, on utilise PDO() maintenant pour se connecter à la base de données et faire les requêtes.
 
Bon tuto, par contre ton code n'est pas à jour, on utilise PDO() maintenant pour se connecter à la base de données et faire les requêtes.
Oui il faut passé ta configuration PHP en 5.2.
 
Useless la connection comme la dis Maxence passe en PDO sinon gg le tuto :)
 
Mdrrr toute facon Spy c'est rien faire il a choper une source avec une failles j'avais sont FTP rien été de lui je te laisse signaler le topic pour les credits ;)
 
Mdrrr toute facon Spy c'est rien faire il a choper une source avec une failles j'avais sont FTP rien été de lui je te laisse signaler le topic pour les credits ;)
Alors déjà :
1- Apprends à écrire.
2- Pourquoi tu fais genre le le mec qui avait ma FTP alors que tu ne la jamais trouvé?

Corriger:
Mdrrr toute façon Spy c'est rien faire il a choper une source avec une faille j'avais son FTP rien été de lui je te laisse signaler le topic pour les crédit.
 
chopper* crédits* il ne sait rien* rien n'était*.

Quand on est pas mieux, on évite de faire des remarques. :)
 
Bon tuto, par contre ton code n'est pas à jour, on utilise PDO() maintenant pour se connecter à la base de données et faire les requêtes.
Met la version PDO dans ce cas ; )
 
chopper* crédits* il ne sait rien* rien n'était*.

Quand on est pas mieux, on évite de faire des remarques. :)
Alors toi je t'aime :love: :rofl:
 
Alors déjà :
1- Apprends à écrire.
2- Pourquoi tu fais genre le le mec qui avait ma FTP alors que tu ne la jamais trouvé?

Corriger:
Mdrrr toute façon Spy c'est rien faire il a choper une source avec une faille j'avais son FTP rien été de lui je te laisse signaler le topic pour les crédit.
Tu veut que je release ta source ? ou comment ça se passe ?
 
Bon tuto mais bon.. c'est un peu inutile , un compteur de vue sur un site connu est inutile.. :/
 
Je me permets de réponse à ton tutoriel, qui est pas mal mais qui n'est pas du tout à jour.

Je te propose ici une version de ton code utilisant le PDO pour les requêtes SQL.

Enjoy!

PHP:
<?php

    // Connexion à MySQL
    $db = new PDO("mysql:host=localhost;dbname=dbname", "root", "");

    // -------
    // ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
    // Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
    $SQL = $db->prepare("SELECT ip FROM connectes WHERE ip = ':ip'");
    $SQL->execute([
        "ip" => $_SERVER['REMOTE_ADDR']
    ]);
    $SQLCount = $SQL->rowCount();

    if ($SQLCount == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
    {
        $SQL = $db->prepare("INSERT INTO connectes VALUES(':ip', :time)");
        $SQL->execute([
            "ip" => $_SERVER['REMOTE_ADDR'],
            "time" => time()
        ]);
    }
    else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
    {
        $SQL = $db->prepare("UPDATE connectes SET timestamp = :time WHERE ip = ':ip'");
        $SQL->execute([
            "ip" => $_SERVER['REMOTE_ADDR'],
            "time" => time()
        ]);
    }

    // -------
    // ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

    // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
    $timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes

    $SQL = $db->prepare("DELETE FROM connectes WHERE timestamp < :time");
    $SQL->execute([
        "time" => $timestamp_5min
    ]);

    // -------
    // ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.

    $SQL = $db->prepare("SELECT COUNT(*) AS nbre_connectes FROM connectes");
    $SQL->execute();
    $SQLResult = $SQL->fetch();

    // Nombre de co's
    echo '<p>Il y a actuellement ' . $SQLResult['nbre_connectes'] . ' visiteurs.</p>';
   
?>
 
Je me permets de réponse à ton tutoriel, qui est pas mal mais qui n'est pas du tout à jour.

Je te propose ici une version de ton code utilisant le PDO pour les requêtes SQL.

Enjoy!

PHP:
<?php

    // Connexion à MySQL
    $db = new PDO("mysql:host=localhost;dbname=dbname", "root", "");

    // -------
    // ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
    // Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
    $SQL = $db->prepare("SELECT ip FROM connectes WHERE ip = ':ip'");
    $SQL->execute([
        "ip" => $_SERVER['REMOTE_ADDR']
    ]);
    $SQLCount = $SQL->rowCount();

    if ($SQLCount == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
    {
        $SQL = $db->prepare("INSERT INTO connectes VALUES(':ip', :time)");
        $SQL->execute([
            "ip" => $_SERVER['REMOTE_ADDR'],
            "time" => time()
        ]);
    }
    else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
    {
        $SQL = $db->prepare("UPDATE connectes SET timestamp = :time WHERE ip = ':ip'");
        $SQL->execute([
            "ip" => $_SERVER['REMOTE_ADDR'],
            "time" => time()
        ]);
    }

    // -------
    // ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

    // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
    $timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes

    $SQL = $db->prepare("DELETE FROM connectes WHERE timestamp < :time");
    $SQL->execute([
        "time" => $timestamp_5min
    ]);

    // -------
    // ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.

    $SQL = $db->prepare("SELECT COUNT(*) AS nbre_connectes FROM connectes");
    $SQL->execute();
    $SQLResult = $SQL->fetch();

    // Nombre de co's
    echo '<p>Il y a actuellement ' . $SQLResult['nbre_connectes'] . ' visiteurs.</p>';
  
?>

Merci et GG ;)
 
Je me permets de réponse à ton tutoriel, qui est pas mal mais qui n'est pas du tout à jour.

Je te propose ici une version de ton code utilisant le PDO pour les requêtes SQL.

Enjoy!

PHP:
<?php

    // Connexion à MySQL
    $db = new PDO("mysql:host=localhost;dbname=dbname", "root", "");

    // -------
    // ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
    // Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
    $SQL = $db->prepare("SELECT ip FROM connectes WHERE ip = ':ip'");
    $SQL->execute([
        "ip" => $_SERVER['REMOTE_ADDR']
    ]);
    $SQLCount = $SQL->rowCount();

    if ($SQLCount == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
    {
        $SQL = $db->prepare("INSERT INTO connectes VALUES(':ip', :time)");
        $SQL->execute([
            "ip" => $_SERVER['REMOTE_ADDR'],
            "time" => time()
        ]);
    }
    else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
    {
        $SQL = $db->prepare("UPDATE connectes SET timestamp = :time WHERE ip = ':ip'");
        $SQL->execute([
            "ip" => $_SERVER['REMOTE_ADDR'],
            "time" => time()
        ]);
    }

    // -------
    // ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.

    // On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
    $timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes

    $SQL = $db->prepare("DELETE FROM connectes WHERE timestamp < :time");
    $SQL->execute([
        "time" => $timestamp_5min
    ]);

    // -------
    // ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.

    $SQL = $db->prepare("SELECT COUNT(*) AS nbre_connectes FROM connectes");
    $SQL->execute();
    $SQLResult = $SQL->fetch();

    // Nombre de co's
    echo '<p>Il y a actuellement ' . $SQLResult['nbre_connectes'] . ' visiteurs.</p>';
   
?>
Voila un code compréhensible avec les commentaire, propre et pas C/C ;)
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut