• STATISTIQUES
  • Il y a eu un total de 2 membres et 9496 visiteurs sur le site dans les dernières 24h pour un total de 9 498 personnes!


    Membres: 2 434
    Discussions: 3 585
    Messages: 32 832
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    Programmation
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP] Qui est en ligne
12-12-2012, 20h22
Message : #1
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
[PHP] Qui est en ligne
salut salut !!
alors voila j'aimerais afficher la liste des utilisateur e ligne sur mon site .
Je pense savoir qu’il y a plusieurs manière de le faire mais je n'ai jamais trouvé une solution qui me convient vraiment .. :/
alors si quelques personnes pouvaient me donner leur réponse ici, ça serai hyper sympa ! Smile
+1 (0) -1 (0) Répondre
12-12-2012, 22h02 (Modification du message : 13-12-2012, 13h11 par CyberSee.)
Message : #2
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 158
Inscription : Jan 2012
RE: [PHP] Qui est en ligne
Enfaite c'est plutôt simple ... Il suffit de sauvegarder dans une table l'IP des visiteurs avec un Time stamps puis on choisit après combien de minutes d'inactivité un membre est considéré offline.

Créé une table 'session': id, ip, stamp
Créé une page session.php
Inclus-la une fois dans TOUTES les pages de ton site
Ajoute le code suivant:
Code PHP :
<?php

    
// Connexion à la DB requise

    
$myip $_SERVER['REMOTE_ADDR']; // Attention de protèger la variable
    
$ip mysql_fetch_array(mysql_query("SELECT * FROM session WHERE ip='$myip'"));
    
    
// Si la personne existe déjà
    
if ($ip['id']){
        
// Update du time stamp
        
$update mysql_query("UPDATE session SET stamp='".time()."' WHERE id='".$ip['id']."'");
    }else{
        
// Il est nouveau on l'ajoute
        
$insert mysql_query("INSERT INTO session (id, ip, stamp) VALUES ('', '$myip', '".time()."')");
    }

    
// On delete les vieux
    
$vieux_stamp strtotime('-30 minutes',time());
    
$delete mysql_query("DELETE FROM session WHERE stamp<='$vieux_stamp'");
    
    
// On affiche le nombre de visiteurs en ligne
    // A ajouté la ou tu veux le message
    
echo "Il y a actuellement ".count($ip)." membres sur le site!";
    
?>

Je tiens juste à dire que je n’ai pas testé mon code, je fais juste la balancer comme ça :-) Mais en théorie ça devrait marcher.
Code PHP :
<?php
$pape 
"pape"; echo $pape
// Le $pape en string!
?>
+1 (0) -1 (0) Répondre
12-12-2012, 23h45 (Modification du message : 13-12-2012, 00h27 par sakiir.)
Message : #3
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [PHP] Qui est en ligne
merci pour ta réponse ! je vais étudier le code ! et le mettre en œuvre ! Smile

j'ai modifié quelque erreur que tu avais faite .. j'ai la pretention de croire que tu t'es trompé , que tu as confondu ip et id dans ton code mais j'ai compris le principe en faite c'est une sorte de decomtpe avant le timeout qui veut dire que le user est offline.

Code :
<?php

    // Connexion à la DB requise
    include('./inc/connection.inc.php');
    $myip = $_SERVER['REMOTE_ADDR']; // Attention de protèger la variable
    $data = mysql_fetch_array(mysql_query("SELECT * FROM session WHERE ip='$myip'"));
    
    // Si la personne existe déjà
    if ($data['ip']){
        // Update du time stamp
        $update = mysql_query("UPDATE session SET stamp='".time()."' WHERE id='".$data['ip']."'");
    }else{
        // Il est nouveau on l'ajoute
        $insert = mysql_query("INSERT INTO session (id, ip, stamp) VALUES ('', '$myip', '".time()."')");
    }

    // On delete les vieux
    $vieux_stamp = strtotime('-30 minutes',time());
    $delete = mysql_query("DELETE FROM session WHERE stamp<='$vieux_stamp'");
    
    // On affiche le nombre de visiteurs en ligne
    // A ajouté la ou tu veux le message
    echo "There are ".count($data)." members who look at this page ..";
    
?>

et donc j'ai rencontré un soucis 'est les données que je dois entrer dans la base de données, j'ai mis INT A.I pour l'id, pour l'ip j'ai mis un VARCHAR, et pour le timestamp je ne sais pas du tout quoi mettre .. j'ai aperçu le mot timestamp dans la liste mais celui-ci ne fonctionne pas. c'est a dire qu'aucune donnée ne reste dans la table ..
+1 (0) -1 (0) Répondre
13-12-2012, 01h24 (Modification du message : 13-12-2012, 01h35 par CyberSee.)
Message : #4
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 158
Inscription : Jan 2012
RE: [PHP] Qui est en ligne
Si tu parles du

WHERE id='".$data['ip']."

Non je ne me suis pas trompé, selon ma syntaxe (WHERE id='".$ip['id']."') c'est bien id qu'il faut mettre. Par contre, si tu veux absolument trouver la ligne par l'IP faut remplacer par

WHERE ip='".$data['ip']." et non id='".$data['ip']."'

Dans les deux cas, ça fonctionne parce que IP est également unique. l'important c'est que si tu utilise id, faut que tu utilises la variable id et si tu utilises ip faut que tu utilises la variable ip évidemment :-)

L'id c'est ta clé primaire. Elle doit être en INT(10) en auto increment
L'ip et le time stamp peuvent toute les deux êtres VARCHAR(255)
Code PHP :
<?php
$pape 
"pape"; echo $pape
// Le $pape en string!
?>
+1 (0) -1 (0) Répondre
13-12-2012, 09h39 (Modification du message : 13-12-2012, 09h41 par sakiir.)
Message : #5
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [PHP] Qui est en ligne
ok merci de ta réponse.. je vais cogiter !

Code :
"SELECT * FROM session WHERE id='$myip'"
Mais ton ton code je ne comprends pas comment id peut être égal a $myip ..
+1 (0) -1 (0) Répondre
13-12-2012, 13h11
Message : #6
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 158
Inscription : Jan 2012
RE: [PHP] Qui est en ligne
AH oui a cette endroit c'est effectivement ip qu'il faut mettre :-)
Code PHP :
<?php
$pape 
"pape"; echo $pape
// Le $pape en string!
?>
+1 (0) -1 (0) Répondre
13-12-2012, 20h20
Message : #7
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [PHP] Qui est en ligne
-lol- Big Grin
J'ai enfin fais fais fonctionné le script en le modifiant un peu :p j'ai fais ça avec les session..

Donc les utilisateurs on un délai de 1 minute après il sont offline

Donc il y a une table id(pas vraiment utile), active(booléen pour 1:online;2:offline), user(username de l'utilisateur), et le stamp(bien sure très important).

j'ai re-commenté le code pour plus de compréhension Smile :

Code :
<?php
session_start();
include('./inc/connection.inc.php');
//On prend  tout dans la table session quand user est egal au non dutilisateur qui regarde la page..
$data = mysql_fetch_array(mysql_query('SELECT * FROM session WHERE user="'.$_SESSION['username'].'"'));

if(isset($data['user'])){
//si l'utilisateur est dans la table session :
//on ajoute le stamp qui est egal au temp actuel ui sera fi dans la bdd..
mysql_query('UPDATE session SET stamp="'.time().'" WHERE user="'.$_SESSION['username'].'"') or die('failed to update');
//on met active à 1 pour mettre online l'utilisateur.
mysql_query('UPDATE session SET active=1  WHERE user="'.$_SESSION['username'].'"') or die('failed to update');
}else{
//sinon.. on ajoute les données, donc a partir de maintenant tout les user qui verront la page seront ajouté à la table (avec le time())
mysql_query("INSERT INTO session VALUES('',1,'".$_SESSION['username']."','".time()."')") or die('failed to insert new value');
}
//on ajoute une variable qui nous laissera : time() + une minute qui sera notre delai de timeout()
$stplus = time() - (1 * 60);
//si un de TOUT les user a un stamp < ou =  à la variable précédente, on met offline.. cela verifiera pour tout les user à chaque fois qu'un se$
mysql_query("UPDATE session SET active=0 WHERE stamp<='$stplus'") or die('failed to set offline');

?>
+1 (0) -1 (0) Répondre
14-12-2012, 00h19
Message : #8
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [PHP] Qui est en ligne
Le.champ actif ne sert a rien et n'est pas tres parlant, au niveau sql (sans regarder le code php ), il signifie quoi ?rien.
Donc supprime le. Pour ensuite faire la liste des gens connecter, tu parcours l'objet renvoyé par sql et tu compare le time actuel avec le dernier time enregistrer auquel tu apporte le temps maximun pendant lequel l'utilisateur est connecter meme si il ne fait aucune requête
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
14-12-2012, 08h02
Message : #9
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [PHP] Qui est en ligne
je l'utilise sur plein de page, donc il est préférable pour moi d'utiliser ça, après, je peux faire une fonction que j'inclurais mais la structure de mon site ne le permet pas
+1 (0) -1 (0) Répondre
14-12-2012, 12h11
Message : #10
JulienetNel
Non-enregistré



 
RE: [PHP] Qui est en ligne
Pourquoi ne pas utiliser une fonction plus simple.

Dans le champs utilisateur de la base de donnée, il y aurait un 0 pour pas en ligne et 1 pour en ligne. Si c'est un 0 alors le gars est en ligne et si c'est 1 alors le gars n'est pas en ligne.

On pourrait changer le nombre, lorsque le gars se connecte et se déconnecte.

Il suffirait ensuite d'une simple condition avec if, elseif et else pour faire le tri.

Le else pouvant servir si aucune des conditions n'est rempli, ce qui ne devrait pas arriver. Mais dans cette situation, tu peux choisir une troisième situation : invisible.
positive (0) negative (0) Répondre
14-12-2012, 12h18
Message : #11
InstinctHack Hors ligne
Posting Freak
*



Messages : 1,366
Sujets : 184
Points: 299
Inscription : Dec 2011
RE: [PHP] Qui est en ligne
et comment tu sais si il est connecter ou non avec un simple true/false ?
Citation :un jour en cours de java j'ai attrapé les seins d'une fille mais elle m'a frappé en disant "c'est privé !!"
j'ai pas compris pourquoi, je croyais qu'on était dans la même classe
+1 (0) -1 (0) Répondre
14-12-2012, 19h55
Message : #12
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [PHP] Qui est en ligne
Avec un 'SELECT WHERE active=1' ..
+1 (0) -1 (0) Répondre
14-12-2012, 20h32
Message : #13
JulienetNel
Non-enregistré



 
RE: [PHP] Qui est en ligne
(14-12-2012, 12h18)khaled a écrit : et comment tu sais si il est connecter ou non avec un simple true/false ?

Imaginons qu'on est un champs Valide ou Connect, quand l'utilisateur se connecte alors le script remplace la valeur par 1. Si il se déconnecté, alors on remplace la valeur par 0. Si il a condition n'est pas remplit dans l'un ou l'autre, on peut remplir avec un 2 au bout d'un certains temps : Ce qui voudrait que le gars n'est ni considéré en ligne et ni hors ligne, on le considère en situation inconnu. On peut aussi calculer à partir de quand l'utilisateur est déconnecter automatiquement de la session, si il y en a une limite de session et faire passer son champs en 0.

(14-12-2012, 19h55)sakiir a écrit : Avec un 'SELECT WHERE active=1' ..

En quelque sorte ...
positive (0) negative (0) Répondre
14-12-2012, 20h36
Message : #14
ThibauT Hors ligne
Keyboard not found, press F1 to resume.
*



Messages : 348
Sujets : 6
Points: 69
Inscription : Jun 2012
RE: [PHP] Qui est en ligne
Mais s'il ferme la page directement sans passer par l'option de déconnexion, qu'en es t'il ?
Martin Golding a écrit :"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."

Gnomino a écrit :et quand je suis payé je fais ce qu'on me demande :B
+1 (0) -1 (0) Répondre
14-12-2012, 22h19
Message : #15
sakiir Hors ligne
[sakiir@Ubuntu]:~$ ./ExploitMe ShellC0de
*



Messages : 411
Sujets : 51
Points: 34
Inscription : Sep 2012
RE: [PHP] Qui est en ligne
et bien c'est la meme chose il est deconnecté..
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut