IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

afficher les sessions connectées


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut afficher les sessions connectées
    Bonsoir j'ai crée un espace membre avec les $session et je voudrai affiché les personnes qui sont connecté au site a l'instant t (est ce qu'il existe un tutorial sur ca ?)
    Merci

  2. #2
    Membre chevronné Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Par défaut
    Ben, une session php est une variable "globale" qui peut être aussi un tableau.

    A chaque fois qu'une personne se connecte tu ajoutes une donnée à ce tableau,
    A chaque fois que tu veux afficher la liste de tes connectés, tu fais un foreach de ce tableau.

    $_SESSION['liste-de-noms'] = "mon nom";

    foreach ($_SESSION as $noms) {
    echo $noms;
    }

    Je pense que ca doit être un truc du genre.

    Après, si tu veux aller vers un traitement ajax pour éviter le rechargement de la page et avoir un résultat "en direct", c'est possible aussi mais pas forcément necessaire à mon sens.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut Exécuter requête après fermeture du navigateur
    Re-bonsoir,

    Après avoir réglé un problème en voila un nouveau...

    Donc pour récapituler pour ceux qui n'ont pas vu mes autres poste, un utilisateur poste un message sur mon tchat, une session à son pseudo est crée et celle ci est enregistré sans une table avec les session pour dire que tel membre est en ligne, ensuite le lien de déconnexion exécute une requête pour supprimer cette entré et les variables de session. Mais la le problème c'est que lorsque le navigateur est fermé et bien oui les session se détruise mais pas l'entré de ma table...

    Comment faire cela ?

    J'ai cherché et j'ai essayé ça (mon javascript est dans un fichier en externe et non pas interne à la page HTML):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function fermerNav(){
    <?php
    $sql = "DELETE FROM session WHERE pseudo = '".$_SESSION['pseudo']."'";
    mysql_query($sql) or die(mysql_error());
    ?>
    }
    J'ai appelé la fonction dans <body onbeforeunload="fermerNav();">

    Mais bien sur, cela ne fonctionne pas...

    S'il vous plait, c'est important

    Merci d'avance.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La methode la plus fiable est de suivre les actions de l'utilisateur et de supprimer les utilisateurs qui n'ont plus d'activité depuis plus de xxx minutes.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Je préfère éviter la méthode d'inactivité...

    Merci quand même

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut utiliser Ajax avec Xmlhttprequest alors.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 91
    Par défaut
    Je me suis tourné vers la période d'inactivité mais j'ai beaucoup de mal... on ma dit d'utiliser les cookie... et voila ce que ça me donne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
    if(!empty($_POST['pseudo']) && !empty($_POST['message']))
    {
    	// Définition des variables
    	$pseudo = mysql_real_escape_string($_POST['pseudo']);
    	$message = mysql_real_escape_string($_POST['message']);
    	$regexpseudo = '`^([a-zéèà0-9._-]+)( (?1))?$`i';
    	$ip = get_ip();
     
    	//Si la session n'existe pas on insert dans la table session le pseudo et le timestamp (c'est pour afficher les utilisateurs qui poste)
    	if(!isset($_SESSION['pseudo']))
    	{
    		if(preg_match($regexpseudo, $pseudo))
    		{
    			if(strlen($pseudo) >= 3 && strlen($pseudo) <= 25)
    			{
    				$sql1 = "INSERT INTO session(id, pseudo, timestamp) VALUES('', '".$pseudo."', '".time()."')";
    				mysql_query($sql1) or die(mysql_error());
    			}
    		}
    	}
    	else // Sinon c'est que la session existe et donc on met à jour le timestamp de la table session
    	{
    		$sql3 = "UPDATE session SET timestamp = '".time()."' WHERE pseudo = '".$_COOKIE['pseudo']."'";
    		mysql_query($sql3) or die(mysql_error());
    		//Ici on récupère le timestamp de la table session pour faire une condition, à savoir si le timestamp de la table session est inferieur au timestamp actuel + 10 secondes alors on supprime l'entrée de la table pour que l'utilisateur est sa session de supprimer. Donc d'après le code la quand je poste alors que la session existe déjà et bien on entre dans la condition et donc l'entré est supprimé
    		$requete = mysql_query("SELECT timestamp FROM session WHERE pseudo = '".$_COOKIE['pseudo']."'");
    		$donnees = mysql_fetch_array($requete);
     
    		if(isset($_COOKIE['pseudo']))
    		{
    			if($donnees['timestamp'] < $donnees['timestamp'] + 5)
    			{
    				$sql = "DELETE FROM session WHERE pseudo = '".$_COOKIE['pseudo']."'";
    				mysql_query($sql) or die(mysql_error());
    				@setcookie('pseudo', '', time() - 360);
    				session_unset();
    				session_destroy();
    			}
    		}
    	}
     
    	//Ici on crée la session et on insère le message dans la table tchat
    	if(preg_match($regexpseudo, $pseudo))
    	{
    		if(strlen($pseudo) >= 3 && strlen($pseudo) <= 25){
    			$_SESSION['pseudo'] = $pseudo;
    			@setcookie('pseudo', $_SESSION['pseudo'], time() + 5);
    			$sql2 = "INSERT INTO tchat(id, pseudo, message, timestamp, ip) VALUES('', '".$_SESSION['pseudo']."', '".$message."', '".time()."', '".$ip."')";	
    			mysql_query($sql2) or die(mysql_error());
    			}
    		else
    		{
    			echo '<script>alert("Votre pseudo doit être compris entre 3 et 25 caractères inclu");</script>';
    		}
    	}
    	else
    	{
    		echo '<script>alert("Votre pseudo est invalide\nLes caractères autorisés sont :\n- alphanumériques\n- é\n- è\n- à\n- underscore(_)\n- tiret(-)\n- point(.)\n- Espace (autorisé seulement en milieu de chaîne)");</script>';
    	}
    }
    ?>

Discussions similaires

  1. [AC-2003] Code pour afficher les utilisateurs connectés à une BDD
    Par LionelDM dans le forum IHM
    Réponses: 2
    Dernier message: 07/01/2010, 17h04
  2. Récupérer les sessions connectées à mon application DEPUIS une session
    Par touria_lahsine dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 30/05/2008, 16h33
  3. Afficher les utilisateurs connectés
    Par benoitL39 dans le forum SharePoint
    Réponses: 1
    Dernier message: 01/02/2008, 23h40
  4. Afficher les membres connectés
    Par tano93220 dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 17h32
  5. Afficher les sessions ouvertes
    Par Mvu dans le forum ASP
    Réponses: 1
    Dernier message: 14/09/2006, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo