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

PHP & Base de données Discussion :

Récupérer id de l'utilisateur connecté [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut Récupérer id de l'utilisateur connecté
    Bonjour,
    je travaille sur un site web d'import export ou je veux integrer un système de messagerie privée,mais j'ai la difficulté de récupérer l'id de l'utilisateur connecté,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = 'INSERT INTO message (mp_id,id_expediteur,id_destinataire,date,text,titre) VALUES("", "'.$_SESSION['username'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['text']).'", "'.mysql_escape_string($_POST['titre']).'")';
    		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    		mysql_close();
    a priori je devais attribuer la valeur id_expediteur a $_SESSION['id'] et non pas a $_SESSION['username'], pour cela j'ai essayé ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      $info_id=array();
      $username=$_SESSION['username'];
      $query=mysql_query("SELECT id FROM users WHERE username='$username'");
     
      while($row=mysql_fetch_assoc($query))
      {
         $info_id[]=$row;
      }
      return $info_id;
    mais ça n'a pas marché .merci de bien m'aider a résoudre ce probleme

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonsoir,

    Il faut que tu précise le nom de la colonne dans la BDD que tu veut attribuer a $info_id[],

    tu peu très bien te passer d'un tableau car je pense qu'il ne peu pas y avoir plusieurs utilisateurs avec le même username.

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    salut ; excuse mes l'utilisation de l’extension est est déconseillée http://php.net/manual/fr/function.mysql-fetch-assoc.php
    http://php.net/manual/fr/book.pdo.php

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    a priori je devais attribuer la valeur id_expediteur a $_SESSION['id'] et non pas a $_SESSION['username']
    Pourquoi alors faire une requête supplémentaire pour récupérer l'ID de la personne identifiée par le biais de son nom d'utilisateur ?

    D'une part, et comme le précise Exia93, il y a intérêt que tous les "username" soient uniques.
    Nous on ne le sait pas (on ne fait que supposer que ...).


    Mais quand bien même que ce soit le cas, aucun intérêt de faire cette requête supplémentaire.
    Le mieux serait que la session ($_SESSION) contienne l'ID de l'utilisateur afin de l'exploiter directement ($_SESSION['id']).
    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = 'INSERT INTO message (id_expediteur, id_destinataire, date, text, titre)
    VALUES ("'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['text']).'", "'.mysql_escape_string($_POST['titre']).'")';
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

    Peut être ne sais tu pas si cet ID se trouve dans la session ou pas.
    Pour le savoir c'est très simple, suffit d'afficher tout le contenu de $_SESSION et voir si elle existe ou pas.
    Un simple print_r($_SESSION) provisoirement.

    Admettons que cet ID n'y est pas, il suffit de revoir un tout petit peu l'étape qui s'occupe à créer cette session d'utilisateur (étape d'identification logiquement) pour ensuite le rajouter.
    Théoriquement il devrait avoir un code qui vérifie si l'identification est bonne, si l'utilisateur existe bien dans la Bdd (login/passe).
    Suffit de récupérer son ID et le mettre/rajouter dans la session.
    A partir de là il sera nettement plus simple d'exploiter cet ID dans la session partout là où c'est nécessaire (comme pour ce cas présent).


    NB : Comme le souligne Redoran, ça fait des lustres qu'on ne cesse de dire que l'extension de Php où se base ces fonction mysql_* (mysql_truc_muche) est obsolète.
    Il serait grand temps de mettre un terme à cela et suivre ces conseils en utilisant soit PDO ou MySQLi.
    On a même 2 autres choix/approches, que demande le peuple
    "Le roi est mort ... Vive le Roi"

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    merci beaucoup pour votre aide,j ai essayé ce que Exia93 m'a demandé mais malheureusement ca n'a pas marché.
    merci beaucoup RunCodePhp pour ta réponse qui m'a été très utiles,en fait j'ai essayé de faire le print_r de ma session et effectivement ca ne retourne que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [username] => moi)
    j ai essayé de revenir au début de la création de ma session (dans la page login==> réussit)pour pouvoir récupérer et rajouter mon id a la session,voila la bêtise que j ai fait :

    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
    if(verifier_combinaison_username_password($_POST['cnxusername'],$_POST['cnxpassword'])==0)
    		{
    		    echo "<div class='error'>username ou password incorrecte</div>";
    		}else{
    		   $_SESSION['username']=$_POST['cnxusername'];
    		   $info_id=array();
               $username=$_SESSION['username'];
               $query=mysql_query("SELECT id FROM users WHERE username='$username'");
     
               while($row=mysql_fetch_assoc($query))
               {
                 $info_id[]=$row['id'];
               }
               return $info_id;
    		   $_SESSION['id']=$info_id;
    		   header("Location:index.php?page= accueil");
    		}
    mais jusqu’à date mon petit problème semble loin d’être résolu.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonsoir,

    essaye en enlevant :

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    bonjour Exia
    j ai enlevé le return mais toujours ca ne fonctionne pas .dans ma table des message l'id de l’expéditeur et toujours 0

  8. #8
    Membre éclairé Avatar de shell13010
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2008
    Messages : 281
    Par défaut
    Bonsoir,

    Comme te la dit @Exia93, pourquoi utiliser un tableau pour sa?

    sinon comme ceci sa devrait être mieux:

    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
    if(verifier_combinaison_username_password($_POST['cnxusername'],$_POST['cnxpassword'])==0)
    {
        echo "<div class='error'>username ou password incorrecte</div>";
        }else{
        $_SESSION['username']=$_POST['cnxusername'];
        //$info_id=array();
        $username=$_SESSION['username'];
        $query=mysql_query("SELECT id FROM users WHERE username='".$username."' LIMIT 1");
     
        while($row=mysql_fetch_assoc($query))
        {
            $info_id=$row['id'];
        }
        echo $info_id;
        $_SESSION['id']=$info_id;
        header("Location:index.php?page= accueil");
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la liste des utilisateurs connectés
    Par Nanais19 dans le forum Services Web
    Réponses: 0
    Dernier message: 16/05/2013, 17h20
  2. Récupérer le nom d'utilisateur connecté
    Par providence dans le forum PL/SQL
    Réponses: 2
    Dernier message: 14/03/2010, 16h51
  3. Réponses: 5
    Dernier message: 26/12/2007, 15h46
  4. Réponses: 1
    Dernier message: 29/09/2006, 12h09
  5. Récupérer utilisateurs connectés
    Par alex4 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 14/04/2004, 14h21

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