Acceder à la base de donnée de Joomla! depuis une page externe

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

  • [Problème] Acceder à la base de donnée de Joomla! depuis une page externe

    Bonjour,

    Je colle depuis quelque temps face à un problème tout bête mais qui m'empêche sérieusement d'avancer. Je suis entrain de développer un certain nombre de fichiers php que j'ai l'intention d'ajouter à mon site Joomla. Seulement, tout ce que j'ai pu apprendre jusque là c'est que joomla ne semble pas beaucoup apprécier qu'on lui injecte du contenu extérieur .
    J'ai d'abord opté pour la création de plusieurs modules mais ce serait un travail trop fastidieux et pas forcément nécessaire. La seule autre solution que j'ai trouvé c'est de bricoler quelques fenêtres iframe qui afficheront mon contenu. Contre toute attente, cela semble relativement bien fonctionner.

    Mon problème c'est que je ne peux pas récupérer le contenu du site à cause de cette ligne présente sur toutes les pages:
    Code PHP:
    defined'_JEXEC' ) or die( 'Unauthorized Access' ); 
    Y-a-t-il un moyen de faire en sorte que mes fichiers externes soient appelés de la racine de mon site joomla pour contourner le probleme? Suis-je obligé de me connecter aux infos de ma base de donnée manuellement? Si oui, comment faire pour récupérer l'id de l'utilisateur connecté? Est-il possible d'utiliser les sessions? Si je trouve comment identifier l'utilisateur, le reste ne devrait pas trop poser de problème... Quoi qu'il en soit je m'en remet à vos avis et conseils!

    Merci d'avance

    joomla 3.3.6

  • #2
    Re : Acceder à la base de donnée de Joomla! depuis une page externe

    Bonjour,

    je suis désolé, je ne comprends absolument pas ce que tu cherches à faire,ou, si je comprends ce que tu cherches à faire, je ne comprends pas pourquoi ut te compliques la vie.

    Ce que j'ai compris (peut-être) :

    tu veux ajouter des pages PHP dans ton site Joomla! qui accèdent à ta base de données Joomla! sans créer ni module, ni composant. Donc en clair, tu veux accéder à tes pages PHP privées, via un lien de menu. (ou bien me trompé je complètement ?)

    Si c'est bien le cas, je ne vois pas particulièrement le souci, Joomla! a défini et mis en place une API d'accès à ses primitives et a défini également une interface d'accès aux bases de données selon son protocole (qui s'appuie d'ailleurs et bien entendu sur les protocoles définis par Apache et PHP)
    Tu trouveras la plupart des informations concrètes sur ce sujet dans : http://docs.joomla.org/Portalevelopers et je te recommande également la lecture de l'excellent (mais dans ce cas peut être hors de propos) livre de Marc Studler : http://www.garstud.com/livre-joomla-...ns-en-php.html


    Cordialement
    Il y a 10 sortes de gens. Ceux qui savent compter en binaire et ceux qui ne savent pas ...

    Commentaire


    • #3
      Re : Acceder à la base de donnée de Joomla! depuis une page externe

      Bonjour,

      En fait je souhaite simplement incruster des pages dans mon site tout en concevant mon template. En gros j'aimerais que ma page se comporte plus ou moins comme un composant ou un module le feraient. Mon soucis c'est que comme ma page externe n'est pas executé à partir de la racine de mon site joomla, je ne peux pas accéder directement à ma base de données à cause du fameux defined( '_JEXEC' ) or die( 'Unauthorized Access' );
      la seule raison pour laquelle j'aimerais accéder à la base de données joomla c'est pouvoir identifier l'utilisateur et afficher un contenu différent selon l'identifiant, ou bloquer l'accès si l'utilisateur n'est pas authentifié.

      Je précise que je ne suis pas du tout expert en la matière, je commence petit à petit à avoir de bonnes bases mais il a certaines choses qui m'échappent encore...

      Commentaire


      • #4
        Re : Acceder à la base de donnée de Joomla! depuis une page externe

        En fait la question c'est:

        -Y-a-t-il un moyen de contourner le defined( '_JEXEC' ) or die( 'Unauthorized Access' ); pour accéder aux pages de mon site depuis ma page externe?

        -Sinon, en me connectant à ma bdd joomla indépendamment de joomla, comment faire pour retrouver l'identifiant de l'utilisateur actuel?

        Je sais comment retrouver une info sur ma base de données mais je n'ai pas la moindre idée de la procédure à suivre pour récupérer l'id de l'utilisateur actuel

        Commentaire


        • #5
          Re : Acceder à la base de donnée de Joomla! depuis une page externe

          Bonjour,
          Envoyé par DrFuddle Voir le message
          En fait la question c'est:

          -Y-a-t-il un moyen de contourner le defined( '_JEXEC' ) or die( 'Unauthorized Access' ); pour accéder aux pages de mon site depuis ma page externe?
          La réponse est NON. ce defined() garantit que le code est bien exécuté dans le contexte Joomla! et pas ailleurs. Quel que soit le framework utilisé (Joomla!, eZ, Simfony...) il y a toujours un contrôle de contexte.

          Donc, si des scripts externes veulent utiliser les APIs Joomla!, la première chose à faire est d'importer le framework
          Code PHP:
          define('_JEXEC'1);

          require_once 
          JPATH_BASE '/includes/framework.php';
          define('JPATH_BASE'__DIR__);
          require_once 
          JPATH_BASE '/includes/defines.php'
          QUOTE=DrFuddle;1040623]-Sinon, en me connectant à ma bdd joomla indépendamment de joomla, comment faire pour retrouver l'identifiant de l'utilisateur actuel?
          [/QUOTE]
          En se connectant directement à la base, il faut du SQL, en analysant les types et contenus des tables Joomla!, puis en se créant le SELECT qui peut aller... ce que le framework réalise nativement.

          QUOTE=DrFuddle;1040623]Je sais comment retrouver une info sur ma base de données mais je n'ai pas la moindre idée de la procédure à suivre pour récupérer l'id de l'utilisateur actuel[/QUOTE]
          L'ID de l'utilisateur actuel est disponible via le framework Joomla, via un getUser()->id()

          Mais hors framework, pas de salut.

          Donc, la solution élégante consiste à apprendre à utiliser correctement les outils mis à disposition par le framework Joomla! au lieu de s'acharner à vouloir tout "contourner" (sic)
          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


          • #6
            Re : Acceder à la base de donnée de Joomla! depuis une page externe

            En important le framework de joomla sur ma page externe je pourrais y retrouver les informations de ma bdd avec quelque chose comme ça:
            Code PHP:
            JFactory::getUser(); 
            C'est ça? Je n'ai donc qu'à copier le code que vous venez de m'envoyer et le problème sera résolu? Désolé pour toutes ces questions, c'est encore un domaine obscure pour moi

            Commentaire


            • #7
              Re : Acceder à la base de donnée de Joomla! depuis une page externe

              C'est le principe même d'un framework. On importe le framework pour pouvoir accéder à ses API.

              Donc en écrivant du code correct et respectueux des APIs Joomla!, le code externe peut fonctionner.
              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


              • #8
                Re : Acceder à la base de donnée de Joomla! depuis une page externe

                Au risque de trop vous en demander, pourriez-vous me donner un petit exemple sur la façon de procéder? Par exemple le code d'une page externe qui indiquerait l'identifiant de l'utilisateur connecté.

                Merci pour vos lumières jisse03!

                Commentaire


                • #9
                  Re : Acceder à la base de donnée de Joomla! depuis une page externe

                  C'est pourtant du code vraiment Basic... Il faut un peu lire les documents Joomla! et les APIs
                  Quelque chose du genre
                  Code PHP:
                  define('_JEXEC'1); 

                  define('JPATH_BASE'__DIR__);
                  require_once 
                  JPATH_BASE '/includes/framework.php'
                  require_once 
                  JPATH_BASE '/includes/defines.php'

                  $user JFactory::getUser() ;
                  echo 
                  $user->id ;
                  echo 
                  $user->username ;
                  //etc 
                  devrait fonctionner
                  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


                  • #10
                    Re : Acceder à la base de donnée de Joomla! depuis une page externe

                    Je viens tout juste de clôturer officiellement le chapitre sur la poo en php sur openclassroom! Ce code me parait maintenant beaucoup plus clair! Jusqu'à présent je n'ai jamais eu besoin de faire recours à la poo, maintenant je sens que je ne vais plus pouvoir m'en passer! Je vais tester ce code sur le champ, merci beaucoup!!

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X