Récupérer le username de la personne connectée

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Récupérer le username de la personne connectée

    Bonjour,

    j'ai cherché sur le forum comment récupérer un username et j'ai donc mis en début de mon code php:

    Code PHP:
    $user = &JFactory::getUser();
     
    if (!
    $user->guest) {
      echo 
    'You are logged in as:<br />';
      echo 
    'User name: ' $user->username '<br />';
      echo 
    'Real name: ' $user->name '<br />';
      echo 
    'User ID  : ' $user->id '<br />';

    j'ai le message d'erreur suivant:

    Fatal error: Class 'JFactory' not found in C:\Program Files\wamp\www\...\gestion31.php on line 4

    Faut-il d'abord récupérer le "JFactory::getUser()" autre part ou peut-on récupérer le username à tout moment dans tout fichier php à l'intérieur d'un site Joomla

    Merci d'avance pour votre réponse.

  • #2
    Re : Récupérer le username de la personne connectée

    Bonjour,

    Si tu veux utiliser l'API Joomla! dans du code indépendant de Joomla!, tu dois commencer par importer le framework .
    Code PHP:
    <?php
    // Set flag that this is a parent file.
    define('_JEXEC'1);
    define('DS'DIRECTORY_SEPARATOR);
    include_once 
    dirname(__FILE__) . '/defines.php'// récupération des définitions
    if (!defined('_JDEFINES')) {
        
    define('JPATH_BASE'dirname(__FILE__));
        require_once 
    JPATH_BASE.DS.'includes'.DS.'defines.php';
    }
    // chargement du framework
    require_once JPATH_BASE.DS.'includes'.DS.'framework.php';
    // récupération du user
    $user = &JFactory::getUser(); 
      
    if (!
    $user->guest) { 
      echo 
    'You are logged in as:<br />'
      echo 
    'User name: ' $user->username '<br />'
      echo 
    'Real name: ' $user->name '<br />'
      echo 
    'User ID  : ' $user->id '<br />'
    }
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Récupérer le username de la personne connectée

      Merci jisse03 pour ta réponse si rapide. J'ai maintenant le message d'erreur suivant:

      Warning: include_once(C:\Program Files\wamp\www\...\views/defines.php) [function.include-once]: failed to open stream: No such file or directory in C:\Program Files\wamp\www\...\views\gestion31.php on line 8

      Warning: include_once() [function.include]: Failed opening 'C:\Program Files\wamp\www\...\views/defines.php' for inclusion (include_path='.;C:\php5\pear') in C:\Program Files\wamp\www\...\views\gestion31.php on line 8

      Warning: require_once(C:\Program Files\wamp\www\...\views\includes\defines.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\wamp\www\...\views\gestion31.php on line 11

      Fatal error: require_once() [function.require]: Failed opening required 'C:\Program Files\wamp\www\...\views\includes\defines.php' (include_path='.;C:\php5\pear') in C:\Program Files\wamp\www\...\views\gestion31.php on line 11

      Mon fichier php à partir duquel est importé le framework se trouve dans le dossier .../views/

      Que faut-il faire pour que define.php soit appelé à partir de son dossier d'origine, à savoir /includes/?

      Commentaire


      • #4
        Re : Récupérer le username de la personne connectée

        Si tu es dans une view, tu n'as pas besoin de redéfinir le framework. En étant clair pour énoncer ton problème, tu aurais évité ce type de confusion. Regardes comment sont architecturées les autres views, et tu auras la réponse. Si tu respectes intégralement le mode de création d'une view, le simple user = &JFactory::getUser(); doit fonctionner. S'il ne passe pas, ta view n'est pas conforme.
        Pas de demande de support par MP.
        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

        Commentaire


        • #5
          Re : Récupérer le username de la personne connectée

          Excuse-moi jisse03, j'ai effectivement semé la confusion en ayant ajouté la racine de mon fichier gestion31.php; j'aurai dû nommer mon répertoire (views) autrement, car le fichier n'est pas architecturé comme une view joomla. Donc il faut certainement importer le framework comme tu le suggérais dès le départ. Pour ne pas semer une nouvelle fois la confusion voilà le chemin complet de mon fichier:

          www/SCA/ficharbitres/views/gestion31.php

          Le fichier defines.php se trouve dans le répertoire www/SCA/includes/. L'erreur provient à mon avis du fait qu'il faut remonter à la racine du site et appeler "defines.php" à partir de là, mais je ne sais pas comment faire. Merci encore pour ta réponse.

          Commentaire


          • #6
            Re : Récupérer le username de la personne connectée

            Il suffit de bien trouver le chemin, donc logiquement cette partie:
            Code PHP:
            if (!defined('_JDEFINES')) { 
                
            define('JPATH_BASE'dirname(__FILE__) . '..' DS '.. ' ); 
                require_once 
            JPATH_BASE.DS.'includes'.DS.'defines.php'

            tu peux jongler avec les '..' pour remonter jusqu'à la racine.
            En théorie, on peut utiliser d'autres moyens, comme les valeurs de $_SERVER, mais selon les paramétrages Apache qui varient selon les hébergeurs, ce serait moins fiable, bien que plus élégant.

            Et pour le premier warning sur le include_once, il est là parce que ta view n'a pas un fichier defines.php (même vide) qui pourrait contenir des définitions locales (genre des define ou des paramètres pour ton code). Si tu ne te sers pas de fichiers de définitions locales, tu peux supprimer la ligne include_once
            Dernière édition par jisse03 à 12/06/2011, 15h45
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : Récupérer le username de la personne connectée

              J'ai réussi à récupérer le JPATH_BASE, mais je ne récupère ni "username", ni "name", ni "ID". Il me reconnait en tant que "Guest" bien que je suis connecté avec mon Pseudo et mot de passe.

              Commentaire


              • #8
                Re : Récupérer le username de la personne connectée

                ce qui signifie que le framework est bien installé, mais que ton fichier n'est pas dans la session.
                rajoutes à la fin de l'import du framework:
                Code PHP:

                $app 
                JFactory::getApplication('site');
                $app->initialise(); 
                La récupération de l'appli (Joomla! en l'occurence) n'est pas toujours indispensable, elle le devient dans certains cas.
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : Récupérer le username de la personne connectée

                  Voici l'erreur que je récupère après avoir inscrit les 2 lignes après l'import du framework.

                  Notice: Trying to get property of non-object in C:\Program Files\wamp\www\SCA\libraries\joomla\application\ap plication.php on line 143

                  Infinite loop detected in JError

                  Commentaire


                  • #10
                    Re : Récupérer le username de la personne connectée

                    Infinite loop detected in JError
                    Là ça sent le fait qu'il va falloir que tu traces le code avec un debuggueur genre l'extension XDebug de PHP.
                    Pas de demande de support par MP.
                    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                    Commentaire


                    • #11
                      Re : Récupérer le username de la personne connectée

                      Après avoir testé quelques bricoles, il y a 999 chances sur 1000 que ton code perso soit tellement alambiqué que les possibilités de récupération du user soient infimes. Il faudrait en savoir plus pour te guider un peu.
                      Pas de demande de support par MP.
                      S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                      Commentaire


                      • #12
                        Re : Récupérer le username de la personne connectée

                        J'avais fait une erreur en tapant 'site'. Après test, je ne récupère toujours pas le username et autres, il me reconnait pour le moment qu'en tant qu'invité.

                        Commentaire


                        • #13
                          Re : Récupérer le username de la personne connectée

                          Voilà le résultat:

                          You are logged in as:
                          User name:
                          Real name:
                          User ID : 0

                          Mon code est le suivant:

                          gestion31.php

                          Code PHP:
                          <?php
                          echo("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");

                          // Set flag that this is a parent file.
                          define('_JEXEC'1);
                          define('DS'DIRECTORY_SEPARATOR);
                          if (!
                          defined('_JDEFINES')) {
                              
                          define('JPATH_BASE','C:\Program Files\wamp\www\SCA');
                              echo 
                          JPATH_BASE;
                              require_once 
                          JPATH_BASE.DS.'includes'.DS.'defines.php';
                          }
                          // chargement du framework
                          require_once JPATH_BASE.DS.'includes'.DS.'framework.php';
                          require(
                          JPATH_BASE.DS.'libraries/joomla/factory.php');
                          $app JFactory::getApplication('site');
                          $app->initialise();
                          // récupération du user 
                          $user = &JFactory::getUser();
                           
                          /*if (!$user->guest) {*/
                            
                          echo 'You are logged in as:<br />';
                            echo 
                          'User name: ' $user->username '<br />';
                            echo 
                          'Real name: ' $user->name '<br />';
                            echo 
                          'User ID  : ' $user->id '<br />';
                          /*}*/

                          $fiche="../includes/basedd.php";
                          if (
                          file_exists($fiche))
                          {
                              include (
                          "../includes/basedd.php");
                          }
                          else
                          {
                              echo 
                          "Le serveur et/ou le login et/ou le mot de passe sont erronés";
                              include (
                          "../SCA/index.php");
                          }

                          $sauver="../includes/sauvegarde.php";
                          if (
                          file_exists($sauver))
                          {
                              include (
                          "../includes/sauvegarde.php");
                          }
                          else
                          {
                              echo 
                          "Le fichier sauvegarde.php est introuvable";
                              include (
                          "../SCA/index.php");
                          }

                          $fiche3 "../includes/calcul_age.php";
                          if (
                          file_exists($fiche3))
                          {
                              include (
                          "../includes/calcul_age.php");
                          }
                          else
                          {
                              echo 
                          "Le calcul de l'âge est impossible, contrôlez les variables";
                              include (
                          "../SCA/index.php");
                          }

                          $fiche4 "../includes/date_fr.php";
                          if (
                          file_exists($fiche4))
                          {
                              include (
                          "../includes/date_fr.php");
                          }
                          else
                          {
                              echo 
                          "La date n'est pas convertible, erreur dans la fonction";
                              include (
                          "../SCA/index.php");
                          }

                          $fiche5 "../includes/date_en.php";
                          if (
                          file_exists($fiche5))
                          {
                              include (
                          "../includes/date_en.php");
                          }
                          else
                          {
                              echo 
                          "La date n'est pas convertible, erreur dans la fonction";
                              include (
                          "../SCA/index.php");
                          }

                          $id = (int) $_POST['edid'];
                          $nom htmlspecialchars($_POST['ednom']);
                          $prenom htmlspecialchars($_POST['edprenom']);
                          $statut htmlspecialchars($_POST['edstatut']);
                          $licence = (int) $_POST['edlicence'];
                          $adr htmlspecialchars($_POST['edadresse']);
                          $cp = (int) $_POST['edcp'];
                          $ville htmlspecialchars($_POST['edville']);
                          $telf htmlspecialchars($_POST['edtelf']);
                          $telp htmlspecialchars($_POST['edtelp']);
                          $naiss $_POST['ednaiss'];
                          $naiss change_date_eng($naiss);
                          $age age($naiss);
                          $club htmlspecialchars($_POST['edclub']);
                          $mclub htmlspecialchars($_POST['edmclub']);
                          $mpers htmlspecialchars($_POST['edmpers']);

                          $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                          $connexion = new PDO('mysql:host='.$serveur.';dbname='.$base$admin$mdp$pdo_options);
                          $editer $connexion -> exec("UPDATE jos_adresse_arbitres SET nom='$nom', 
                              prenom='
                          $prenom', statut='$statut', licence=$licence, adresse='$adr', 
                              cp=
                          $cp, ville='$ville', telf='$telf', telp='$telp', club='$club', mclub='$mclub', 
                              mpers='
                          $mpers',  naiss='$naiss' WHERE id=$id");

                          echo 
                          "Vous venez de changer les donnees de l'arbitre ".$nom." ".$prenom;
                          echo 
                          " ";
                          echo 
                          " ";
                          ?>

                          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
                              <head>
                                  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                                  <meta name="description" content="Tableau adresses" />
                                  <meta name="keywords" content="" />
                                  <meta name="author" content="Guillaume Krause" />
                                  <title>Changement des données de l'arbitre <?php echo $nom." ".$prenom ?></title>
                                  <style type="text/css">
                                  
                                      input
                                      {
                                          background-color: #e0ffff;
                                      }
                                      
                                  </style>
                              </head>
                              <body>
                                  <p>Voici le résultat du changement:</p></br></br>
                                  <?php
                                  
                          try
                                  {
                                      
                          $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
                                      
                          $connexion = new PDO('mysql:host='.$serveur.';dbname='.$base$admin$mdp$pdo_options);
                                  }
                                  catch (
                          Exception $e)
                                  {
                                      die(
                          'Erreur : ' $e->getMessage());
                                  }
                                  
                          $sql "SELECT * FROM jos_adresse_arbitres WHERE id=$id";
                                  
                          $resultat $connexion->query($sql);
                                  
                          $ligne $resultat->fetch();
                                  
                          $naiss $ligne['naiss'];
                                  
                          $age age($naiss);
                                  
                          $naiss change_date_fr($naiss);
                                  
                          ?>
                                  
                                  <form action="/SCA/ficharbitres/formulaires/form_gestion.php">
                                      <fieldset style="border: 3px double #333399; background-color: #00fa9a;">
                                          <legend>Nouvelles données</legend></br>
                                          <table>
                                          <tr>
                                              <td style="width: 100px;">Nom:  </td>
                                              <td style="width: 250px;"><input size="25" maxlength="25"  type="text" name="ednom" id="ednom" value="<?php echo utf8_encode($ligne['nom']); ?>" /></td>
                                              <td style="width: 100px;">Prénom:  </td>
                                              <td style="width: 250px;"><input size="25" maxlength="25"  type="text" name="edprenom" id="edprenom" value="<?php echo utf8_encode($ligne['prenom']); ?>" /></td>
                                          </tr><tr></tr>
                                          <tr>
                                              <td>Statut:  </td>
                                              <td><input size="10" maxlength="10"  type="text" name="edstatut" id="edstatut" value="<?php echo utf8_encode($ligne['statut']); ?>" /></td>
                                              <td>Licence:  </td>
                                              <td><input size="12" maxlength="12"  type="text" name="edlicence" id="edlicence" value="<?php echo($ligne['licence']); ?>" /></td>
                                          </tr><tr></tr>
                                          <tr>
                                              <td>Adresse:  </td>
                                              <td colspan="3"><input size="60" maxlength="60" type="text" name="edadresse" id="edadresse" value="<?php echo utf8_encode($ligne['adresse']); ?>" /></td>
                                          </tr><tr></tr>
                                          <tr>
                                              <td>CP:  </td>
                                              <td><input size="6" maxlength="6"  type="text" name="edcp" id="edcp" value="<?php echo($ligne['cp']); ?>" /></td>
                                              <td>Ville:  </td>
                                              <td><input size="30" maxlength="30"  type="text" name="edville" id="edville" value="<?php echo utf8_encode($ligne['ville']); ?>" /></td>
                                          </tr><tr></tr>
                                          <tr>
                                              <td>Tél fixe:  </td>
                                              <td><input size="15" maxlength="15"  type="text" name="edtelf" id="edtelf" value="<?php echo($ligne['telf']); ?>" /></td>
                                              <td>Tel port:  </td>
                                              <td><input size="15" maxlength="15" type="text" name="edtelp" id="edtelp" value="<?php echo($ligne['telp']); ?>" /></td>
                                          </tr><tr></tr>
                                          <tr>
                                              <td>Date de naissance:  </td>
                                              <td><input size="12" maxlength="12" type="text" name="ednaiss" id="ednaiss" value="<?php echo($naiss); ?>" /></td>
                                              <td>Club:  </td>
                                              <td><input size="35" maxlength="35"  type="text" name="edclub" id="edclub" value="<?php echo utf8_encode($ligne['club']); ?>" /></td>
                                          </tr><tr></tr>
                                          <tr>
                                              <td>Mail club:  </td>
                                              <td><input size="40" maxlength="40"  type="text" name="edmclub" id="edmclub" value="<?php echo utf8_encode($ligne['mclub']); ?>" /></td>
                                              <td>Mail perso:  </td>
                                              <td><input size="40" maxlength="40"  type="text" name="edmpers" id="edmpers" value="<?php echo utf8_encode($ligne['mpers']); ?>" /></td>
                                          </tr><tr></tr>
                                          </table>
                                      </fieldset></br></br>
                                      <input type="submit" name="ok" id="ok" value="OK" />
                                  </form></br></br>
                              </body>
                          </html>

                          Commentaire


                          • #14
                            Re : Récupérer le username de la personne connectée

                            Envoyé par tornero57 Voir le message
                            You are logged in as:
                            User name:
                            Real name:
                            User ID : 0
                            Sur Joomla tu t'est connecté en cochant la case "Se souvenir de moi" (remember me) ?

                            -Fly06_Fr
                            Fly06_Fr (http://www.fly06.fr/)
                            -------------------------------------------
                            Classe MooTools pour Recherche Asynchrone (Ajax) : http://forum.joomla.fr/showthread.ph...one-%28Ajax%29

                            Commentaire


                            • #15
                              Re : Récupérer le username de la personne connectée

                              Bonjour,
                              J'ai mis ça :
                              Code PHP:
                              <?php

                              define
                              ('_JEXEC'1);
                              define('DS'DIRECTORY_SEPARATOR);

                              define('JPATH_BASE'dirname(__FILE__));
                              require_once 
                              JPATH_BASE.DS"includes".DS.'defines.php';
                              require_once 
                              JPATH_BASE.DS.'includes'.DS.'framework.php';
                              require(
                              JPATH_BASE.DS.'libraries/joomla/factory.php');

                              $app JFactory::getApplication('site');
                              $app->initialise();

                              $user = &JFactory::getUser();
                              echo 
                              'You are logged in as:<br />';
                              echo 
                              'User name: ' $user->username '<br />';
                              echo 
                              'Real name: ' $user->name '<br />';
                              echo 
                              'User ID  : ' $user->id '<br />';

                              ?>
                              dans un toto.php à la racine du site, et ça marche parfaitement...
                              Schtroumpfe toi le Schtroumpf t'aidera.
                              Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X