Récupérer le user connecté depuis un script PHP

Réduire
Une réponse a été apportée à ce sujet.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Récupérer le user connecté depuis un script PHP

    Bonjour,
    J'essai de récupérer le user déjà connecté à mon site Joomla 5 pour restreindre l'accès à un fichier PHP.
    Cependant j'ai toujours une erreur 500 Failed to start application

    Voici le début de mon code :

    Code HTML:
    <?php
    // Définir les constantes nécessaires pour Joomla!
    if (!defined('_JEXEC')) {
        define('_JEXEC', 1);
    }
    if (!defined('JPATH_BASE')) {
        define('JPATH_BASE', realpath(dirname(__FILE__) . '/../'));
    }
    if (!file_exists(JPATH_BASE . '/includes/defines.php')) {
        die('Joomla! not found');
    }
    require_once JPATH_BASE . '/includes/defines.php';
    require_once JPATH_BASE . '/includes/framework.php';
    
    // Charger les fichiers nécessaires pour accéder à l'utilisateur
    require_once JPATH_BASE . '/libraries/src/User/UserHelper.php';
    require_once JPATH_BASE . '/libraries/src/Factory.php';
    
    use Joomla\CMS\Factory;
    use Joomla\CMS\User\UserHelper;
    
    // Initialiser l'application Joomla!
    $app = Factory::getApplication('site');
    $app->initialise();
    
    // Obtenir l'utilisateur actuel
    $user = Factory::getApplication()->getIdentity();
    
    //erreur 500
    
    ?>​
    Qu'est-ce que je fais de travers ?

    Cliquez sur l'image pour l'afficher en taille normale

Nom : image.png 
Affichages : 75 
Taille : 46,6 Ko 
ID : 2065605
  • Réponse sélectionnée par cavo789, le 30/10/2024, 17h25.

    Je viens de trouver pourquoi ... c'est car j'utilise mon script PHP depuis un sous domaine : toto.monsite.fr et mon Joomla et sur monsite.fr
    Si j'exécute mon code depuis monsite.fr/mon_script.php ça fonctionne ! Alors que si je l'appel depuis toto.monsite.fr/mon_script.php ça ne fonctionne pas
    cavo789 aime ceci.

    Commentaire


    • #2
      Hello

      J'ai longtemps maintenu un script hors joomla et je l'ai rendu compatible Joomla 5 en février dernier avec l'aide d'un dev core.


      ​​​​​​Va voir à partir de la ligne 420 le script suivant : https://github.com/cavo789/joomla_sh...Fshowtable.php

      Tu peux copier / coller les lignes de chargement de Joomla, cela devrait te débloquer; je l'espère en tout cas.
      woluweb aime ceci.
      Christophe (cavo789)
      Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
      Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

      Commentaire


      • #3
        Merci, j'ai fait le code suivant, je reçois bien le nom de mon site mais j'ai tout le temps 'Aucun utilisateur connecté.' malgré le fait que je suis bien connecté sur le site (et aussi sur la partie admin)

        Code HTML:
        <?php
        
        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL);
        
        // Définir les constantes nécessaires pour Joomla!
        if (!defined('_JEXEC')) {
            define('_JEXEC', 1);
        }
        if (!defined('JPATH_BASE')) {
            define('JPATH_BASE', realpath(dirname(__FILE__) . '/../'));
        }
        if (!file_exists(JPATH_BASE . '/includes/defines.php')) {
            die('Joomla! not found');
        }
        // Inclure les fichiers de Joomla
        require_once JPATH_BASE . '/includes/defines.php';
        require_once JPATH_BASE . '/includes/framework.php';
        
        // Charger les fichiers nécessaires pour accéder à l'utilisateur
        require_once JPATH_BASE . '/libraries/src/User/UserHelper.php';
        require_once JPATH_BASE . '/libraries/src/Factory.php';
        
        /* Create the Application */
                $container = \Joomla\CMS\Factory::getContainer();
                 $container->alias('session.web', 'session.web.site')
                    ->alias('session', 'session.web.site')
                    ->alias('JSession', 'session.web.site')
                    ->alias(\Joomla\CMS\Session\Session::class, 'session.web.site')
                    ->alias(\Joomla\Session\Session::class, 'session.web.site')
                    ->alias(\Joomla\Session\SessionInterface::class, 'session.web.site');
        
                // Instantiate the application.
                $app = $container->get(\Joomla\CMS\Application\SiteApplication::class);
                
                // Load the extension Namespaces
                \JLoader::register('JNamespacePsr4Map', JPATH_LIBRARIES . '/namespacemap.php');
                $extensionPsr4Loader = new \JNamespacePsr4Map();
                $extensionPsr4Loader->load();
        
        
                // Set the application as global app
                \Joomla\CMS\Factory::$application = $app;
                
                $user = \Joomla\CMS\Factory::getUser();
                
                echo \Joomla\CMS\Factory::getApplication()->get('sitename');
                echo "<br />";
        
        if ($user->id) {
        
            echo 'Utilisateur ID : ' . $user->id;
            echo 'Nom : ' . $user->name;
        
        } else {
        
            echo 'Aucun utilisateur connecté.';
        }
                
        
        
        
        ?>
        ​

        Commentaire


        • #4
          Bonjour,

          Que donne un var_dump($user) ?
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #5
            Que je sois connecté ou non j'ai dans les deux cas :
            Code HTML:
            object(Joomla\CMS\User\User)#218 (28) { ["isRoot":protected]=> NULL ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> NULL ["password"]=> NULL ["password_clear"]=> string(0) "" ["block"]=> NULL ["sendEmail"]=> int(0) ["registerDate"]=> NULL ["lastvisitDate"]=> NULL ["activation"]=> NULL ["params"]=> NULL ["groups"]=> array(0) { } ["guest"]=> int(1) ["lastResetTime"]=> NULL ["resetCount"]=> NULL ["requireReset"]=> NULL ["typeAlias"]=> NULL ["otpKey"]=> NULL ["otep"]=> NULL ["authProvider"]=> NULL ["_params":protected]=> object(Joomla\Registry\Registry)#219 (3) { ["data":protected]=> object(stdClass)#220 (0) { } ["initialized":protected]=> bool(false) ["separator":protected]=> string(1) "." } ["_authGroups":protected]=> NULL ["_authLevels":protected]=> NULL ["_authActions":protected]=> NULL ["_errorMsg":protected]=> NULL ["_errors":protected]=> array(0) { } }

            Commentaire


            • #6
              Donc en fait, il ne récupère pas les infos d'utilisateur connecté.
              C'est curieux, parce que bien que je ne sois pas vraiment codeur, ton code me semble pourtant correct.
              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

              Commentaire


              • #7
                Je viens de trouver pourquoi ... c'est car j'utilise mon script PHP depuis un sous domaine : toto.monsite.fr et mon Joomla et sur monsite.fr
                Si j'exécute mon code depuis monsite.fr/mon_script.php ça fonctionne ! Alors que si je l'appel depuis toto.monsite.fr/mon_script.php ça ne fonctionne pas
                cavo789 aime ceci.

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X