JeuWeb - Crée ton jeu par navigateur
Qui est en ligne - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Qui est en ligne (/showthread.php?tid=3129)

Pages : 1 2


RE: Qui est en ligne - Ekilio - 04-10-2008

Thedeejay a écrit :Voila le code final que j'ai créé si vous en avez besoin

Code PHP :
<?php 
session_start
();
if (!isset(
$_SESSION['login'])) { //si le membre n'est pas connecté
// on insert 'inconnu123123'
mysql_query('INSERT INTO enligne (login, heure) VALUES ($_REQUEST['REMOTE_ADDR'], ' . time() . ') ON DUPLICATE KEY UPDATE heure = ' . time());
mysql_query('DELETE FROM enligne WHERE heure < ' . time() - 300);
else
//sinon bah il est connecté
// qui est en ligne
//on schtroupf la variable du nom
$login = $_SESSION['login']
mysql_query('INSERT INTO enligne (login, heure) VALUES (' . $login . ', ' . time() . ') ON DUPLICATE KEY UPDATE heure = ' . time());
mysql_query('DELETE FROM enligne WHERE heure < ' . time() - 300);

?>
le mysql
Code PHP :
<?php 
CREATE TABLE enligne
(
heure text NOT NULL,
login text NOT NULL,
PRIMARY KEY(login)
)
TYPE=MyISAM;
et le code d'affichage
Code PHP :
<?php
mysql_connect
("localhost", "user", "pass");
mysql_select_db("bdd");

$requete = mysql_query("SELECT * FROM enligne");


// On fait une boucle pour lister tout ce que contient la table :

while ($enligne = mysql_fetch_array($requete) )
{
?>
<?php
if (ereg("/^((25[0-5]|2[0-4]\d|1?\d?\d).){3}(25[0-5]|2[0-4]\d|1?\d?\d)$/", $donnees['login']) !== false)
{
$inconnu = $inconnu + 1
$total
= $total + 1
}
else
{
$total = $total + 1
?>

<a href='liste_membres.php?membre=<?php echo $donnees['login']; ?>"><?php echo $donnees['login']; ?></a> ,
<?php
}
}

mysql_close(); // Déconnexion de MySQL
?>
et <?php
if $inconnu = 0
echo 'aucun'
else
echo
$inconnu
?>
inconnu<?php if $inconnu = >2 echo 's'//si il y a plus d'un inconnu ?> visite<?php if $total = >2 echo 'nt'//si il y a plus d'un visiteur au total ?>

J'ai pas testé l'expression régulière, mais en théorie c'est ça. Test comme ça, ça devrait marcher.


RE: Qui est en ligne - Cartman34 - 04-10-2008

Pour les sessions, je crois que le seul moyen est de connaitre le dernier ID de la dernière session des users et de voir si le fichier est toujours dans le dossier des sessions...c'est un peu à l'arrache mais ca doit fonctionner. Sauf si le temps des cookies est plus court mais vous pouvez aussi le deviner.
Au passage le temps de durée des sessions est 24minutes, y'a pas moyen d'augmenter ce temps car en modifiant le gx_maxlifetime (ou un truc du genre) ca change que dalle.


RE: Qui est en ligne - Ekilio - 04-10-2008

Mouais... Le résultat ne serait pas forcément très précis, AMHA...