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 :

récupérer un identifiant avec les sessions


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut récupérer un identifiant avec les sessions
    Bonjour,

    Voilà mon histoire:

    Après s'être authentifié avec son login et son mot de passe, un utilisateur laisse un message sur un forum. Lorsqu'il laisse son message, je voudrais enregistrer dans ma base de données l'identifiant qui correspond à son login (pas son login donc, mais juste le chiffre qui y correspond).

    J'ai essayé de faire ça avec les sessions en utilisant ce code dans la page du message:
    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
     
    session_start(); 
     
     //connexion au serveur 
    include("connexion.php"); 
     
     
    //Connection à mysql et sélection de la base de données 
    $select = mysql_select_db($studio); 
     
     
     
     //récupération des valeurs des champs: 
     
         // c'est le cas d'une réponse 
        $idForum = $_GET["forum"]; 
        $idDiscussion = $_GET["discussion"]; 
        $Message_idMessage = $_GET["parent"]; 
     
     
     
     
      //Sujet: 
      $Sujet = $_POST['Sujet'] ; 
      //Contenu: 
      $Contenu = $_POST['Contenu']; 
      //Type de message: 
      $LibelleTypeMessage = $_POST['idTypeMessage']; 
      //Qualifiant: 
      $LibelleQualifiant = $_POST['idQualifiant']; 
      //Date de création du message: 
      $DateCreation=date("d/m/Y");  
      //Fichier Attaché: 
      $FichierAttache = $_FILES["FichierAttache"]["name"]; 
      // Login: 
      $Utilisateur_idUtilisateur = $_SESSION['idUtil'];  
     
     
      // On vérifie si les champs sont vides  
    if(empty($Sujet) OR empty($Contenu))  
        {  
        echo '<font color="red">Attention,certains champs sont restés vides !</font>';  
        }  
     
        // Aucun champ n'est vide, on peut enregistrer dans la table  
    else       
        {  
     
    //création de la requête SQL- insertion des champs dans la BDD 
      $requete = "INSERT INTO message (idMessage, Utilisateur_idUtilisateur,Discussion_idDiscussion, Message_idMessage, Sujet, Contenu, FichierAttache, DateCreation,TypeMessage_idTypeMessage, Qualifiant_idQualifiant) VALUES ('','$Utilisateur_idUtilisateur','$idDiscussion','$Message_idMessage','$Sujet','$Contenu','$FichierAttache', now(), '$LibelleTypeMessage', '$LibelleQualifiant')" ;
    Dans mes fichiers de sessions j'ai la donnée suivante:
    idUtil|s:1:"6";
    c'est donc le 6 que je voudrais insérer dans ma table message.

    J'imagine bien que quelqu'un va me répondre "rien de plus simple!", et je n'en doute pas, mais étant débutante en php, et même après avoir passé des semaines à lire les tutoriels et les documentations, je n'y arrive toujours pas

    J'espère que vous pourrez m'aider....

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 467
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 467
    Points : 4 656
    Points
    4 656
    Par défaut
    salut,
    je ne sais pas si ca va résoudre ton probleme :

    as tu une table "utilisateurs" si c'est la cas, ajoute une colone (cléf primaire) "id_utilisateur" que tu mets en auto increment

    avant d'insérer ton utilisateur, fais des test pour savoir s'il existe

    après, tu récupère son id avec une simple requete lors de son autentification
    GL

  3. #3
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $Utilisateur_idUtilisateur = $_SESSION['idUtil'];
    D'ou vient ta variable de session ? Qu'est ce que tu y a entré ?

    Sinon, utilise un preg_match (expression rationnelles) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $exp="/^idUtil\|s:[0-9]+:\"[0-9]+\"/";
    $tabdonne=preg_match($exp, $_SESSION['idUtil']);
    ca devrait marcher....

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut les preg_match?
    Bonjour,
    Je ne connais pas bien les preg_match, je n'en ai jamais utilisé.
    Si j'insère le code que tu me proposes ça devrait marcher?

    Je vais essayer et je vous tiens au courant....

  5. #5
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    note :

    $tabdonne dans mon code est un tableau récupérant deux type de données : le premier chiffre, et l'id en fin....

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    j'ai vu sur une autre discussion, qu'il était possible d'utiliser

    session_id();

    j'ai lu la documentation correspondante, ça a l'air pas mal. Mais je me pose une question

    Est ce que le résultat sera le même? avec session_id() j'arrive enfin à insérer quelque chose dans ma base de données, mais l'id ne correspond pas au nom d'utilisateur.
    Si vous me dîtes que c'est la même chose, que ça marche de la même manière avec session_id() alors il se peut que le problème vienne de ce que mes coéquipiers ont programmé, et dans ce cas, je verrai avec eux.

    En tout cas, alors qu'auparavant je n'arrivais pas à récupérer un identifiant, maintenant j'y arrive. Voilà la qestion pos&ée plus clairement: session_id() permet-il de récupérer l'identifiant de l'utilisateur connecté?

    Merci de me le confirmer ....

    Et Vive les forums et leurs utilisateurs! Vous êtes d'une aide et d'une générosité précieuse!

  7. #7
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    ....Ca dépend si idUtil est issue d'une BDD ou bien de l'identifiant de session.... session_id() permet de lire et/ou ecrire l'identifiant de session, à utiliser avec beaucoup de précautions :

    En effet, une session est caratérisé par un identifiant unique qui est donné par le session_start(), et qui permet d'identifier clairement chaque utilisateur connecté.... Mais par défaut, l'identifiant est VRAIMENT unique, ca veut dire que si une même personne se connecte à plusieurs reprises, l'identifiant change... C'est ce qui permet au server de ne pas mélanger les données des sessions (si tu as 100 connections, tu as 100 sessions différentes...)

    Donc tu vois, ca n'a rien à voir avec un ID d'une BDD, qui normalement identifie bien de manière unique une ressource, mais permet aussi de la retrouver....

    Tu as essayé le preg_match ? Ca devrait marché, j'ai vérifié chez moi. Si $_SESSION['idUtils'] retroune bien idUtil|s:1:"6", ca devrait te retourner le 1 et le 6. S'il n'y a que le 6 qui t'intéresse, vu que les valeurs retourné par preg_match sont sous forme de tableau, il suffit de prendre que ce qui te va...

    Essaye le preg_match et fait un print_r($tableau), et tu verras bien....


  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    La fonction session_id est lié à l'identifiant de la session. Il permet de récupérer l'identifiant actuel de la session lorsqu'aucun paramètre ne lui est passé ou de le fixer (avant l'appel à session_start) lorsqu'on utilise ce paramètre optionnel. Donc rien à voir avec votre identifiant utilisateur ...

    Cependant pour vous aider, il faudrait être plus précis : savoir si la session est bien propagée de page en page (faire un print_r sur $_SESSION en début - après session_start - et/ou en fin de page). Si votre variable a bien été initialisée avant et apporter à votre script des contrôles supplémentaires (comme isset($_SESSION['idUtil'])) avant de chercher à utiliser les variables de session (mais si vous développez avec error_reporting à E_ALL ou plus haut vous le sauriez).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    zut alors! et moi qui me disais "chouette j'ai enfin réussi à insérer quelque chose qui ressemble à ce que je veux"

    En ce qui concerne la propagation de la session de page en page, un collègue était chargé de développer une page intermédiaire, et celle-ci ne s'occupe pas de la session... Ceci explique surement cela.

    Je vais rectifier cette histoire de session sur la page intermédiaire, et je vais m'occuper également des preg_match. Je vais bien me documenter à ce qujet, faire des tests et je vous donnerai le résultat.

    Je finirai bien par y arriver avec tous ces conseils

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Me re-voilà

    Cette fois ça y est! j'ai enfin réussi à mettre en place ce que je voulais et en utilisant $_SESSION['idUtil']; comme je vous le disais au départ.
    En fait , je crois que le problème venait du fait que certains de mes chers coéquipiers modifient les fichiers sans prévenir les autres, d'où de nombreuses mauvaises surprises!

    J'ai simplement re-tenter de faire marcher le même code que je trafique depuis 2 semaines, et miracle! tout fonctionne!

    Je tiens à vous remercier pour votre aide, et à préciser que je me suis penchée sur les expressions régulières....ça a l'air fort intéressant et efficace, je continue à me pencher là-dessus.

    Merci beaucoup!

  11. #11
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    De rien, et bonne chance....

    Dans une équipe, le plus important est la communication... Essai d'en discuter avec tes collegues !!!!

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

Discussions similaires

  1. [MySQL] Récupérer des données avec les SESSIONS
    Par dylanms dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/04/2009, 11h00
  2. fonctionne avec les sessions pas avec le reste
    Par hugo69 dans le forum Langage
    Réponses: 6
    Dernier message: 22/11/2005, 09h38
  3. Problèmes avec les Sessions
    Par alexthomas dans le forum Langage
    Réponses: 5
    Dernier message: 20/11/2005, 21h53
  4. [Sécurité] securite avec les sessions.
    Par krapoulos dans le forum Langage
    Réponses: 7
    Dernier message: 05/11/2005, 14h41
  5. Problème avec les sessions
    Par philippef dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 15h19

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