Problème compteur de connectés
Résolu
corentin.bc
Messages postés
383
Date d'inscription
Statut
Membre
Dernière intervention
-
corentin.bc Messages postés 383 Date d'inscription Statut Membre Dernière intervention -
corentin.bc Messages postés 383 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
j'avais jusqu'à aujourd'hui un compteur de connectés en temps réel.
Il fonctionnait parfaitement bien donc jusqu'à aujourd'hui.
Tout à l'heure j'ai réclamé une migration de PHP à mon hébergeur.
Je suis donc passé de la 5.5.9 à la 7.0.12.
Mais là, le compteur ne fonctionne plus et je ne sais pas quoi faire.
Voici le code :
que dois-je faire pour qu'il refonctionne sous PHP7 ?
Merci.
Édit de la modération: Merci d'utiliser le langage approprié dans les balises de code afin d'obtenir la coloration syntaxique correspondante.
Amicalement! Corentin.
j'avais jusqu'à aujourd'hui un compteur de connectés en temps réel.
Il fonctionnait parfaitement bien donc jusqu'à aujourd'hui.
Tout à l'heure j'ai réclamé une migration de PHP à mon hébergeur.
Je suis donc passé de la 5.5.9 à la 7.0.12.
Mais là, le compteur ne fonctionne plus et je ne sais pas quoi faire.
Voici le code :
<?php // Connexion à MySQL mysql_connect("localhost:3306", "miklhcos", "pecheur430"); mysql_select_db("oignon"); // ------- // É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); // Ouf ! On n'a plus qu'à afficher le nombre de connectés ! echo ("Il y a actuellement " . $donnees["nbre_entrees"] . " visiteurs connectés sur " . "$nomdusite" . " !"); ?>
que dois-je faire pour qu'il refonctionne sous PHP7 ?
Merci.
Édit de la modération: Merci d'utiliser le langage approprié dans les balises de code afin d'obtenir la coloration syntaxique correspondante.
Amicalement! Corentin.
A voir également:
- Problème compteur de connectés
- Compteur électrique - Guide
- Compteur de contractions - Télécharger - Santé & Bien-être
- Voir les appareils connectés facebook - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Liste des appareils connectés - Guide
5 réponses
Salut,
je crois que j'ai pas tout bien fais :)
Voici mon nouveau code :
mais, ça n'affiche rien.
Où me suis-je replanté ?
Merci.
Amicalement! Corentin.
je crois que j'ai pas tout bien fais :)
Voici mon nouveau code :
<?php if($bdd = mysqli_connect('localhost', 'miklhcos', 'pecheur430', 'oignon')) { } else { echo 'Erreur'; } $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); // Ouf ! On n'a plus qu'à afficher le nombre de connectés ! echo ("Il y a actuellement " . $donnees["nbre_entrees"] . " visiteurs connectés sur " . "$nomdusite" . " !"); ?>
mais, ça n'affiche rien.
Où me suis-je replanté ?
Merci.
Amicalement! Corentin.
Re,
bon, j'ai essayé de suivre ce tuto :
https://www.linuxtricks.fr/wiki/php-passer-de-mysql-a-mysqli-requetes-de-base#paragraph_connexion-a-la-base
mais j'y comprends rien.
Je dois remplacer quoi par quoi, ajouter/supprimer quoi, bref faire quelles modifs ?
Merci.
bon, j'ai essayé de suivre ce tuto :
https://www.linuxtricks.fr/wiki/php-passer-de-mysql-a-mysqli-requetes-de-base#paragraph_connexion-a-la-base
mais j'y comprends rien.
Je dois remplacer quoi par quoi, ajouter/supprimer quoi, bref faire quelles modifs ?
Merci.
Je connais rien a php, mais essaye sa. J'ai pas tester
<?php if($bdd = mysqli_connect('localhost', 'miklhcos', 'pecheur430', 'oignon')) { } else { echo 'Erreur'; } $donnees = $bdd->query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'')->fetch_array(); if ($donnees['nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter. { $bdd->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. { $bdd->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 $bdd->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. $donnees = $bdd->query('SELECT COUNT(*) AS nbre_entrees FROM connectes')->fetch_array(); // Ouf ! On n'a plus qu'à afficher le nombre de connectés ! echo ("Il y a actuellement " . $donnees["nbre_entrees"] . " visiteurs connectés sur " . "$nomdusite" . " !"); ?>
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question