Récupérer facilement les infos système

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

  • [RÉGLÉ] Récupérer facilement les infos système

    Mon environnement
    Joomla 3.6.5 + php7

    Bonjour,

    À l'intérieur d'un script php développé par moi-même, il me faut intervenir sur la BDD avec du code SQL.
    Je connais bien la méthode lambda qui consiste à saisir en clair les arguments tels que "nom de la base, nom utilisateur, mot de passe".
    Mais je préfèrerais pouvoir appliquer une méthode plus générale (ex: du code qui permettrait de s'appliquer automatiquement à la BDD déclarée à l'installation), et surtout plus discrète !
    J'ai tenté un include du fichier de configuration php qui se trouve à la racine du site, et qui contient tout ce dont j'ai besoin : mais cette méthode coince. Sans doute parce-que ce fichier est protégé !
    J'utilise PDO.

    Merci pour votre aide !
    Dernière édition par Visiteur à 01/02/2017, 09h03

  • #2
    Re : Récupérer facilement les infos système

    N'ayant pas reçu de conseils, je vais essayer d'être plus clair.

    Sur le même site, j'ai du rédiger plusieurs scripts en php et en connexion avec ma BDD par la méthode PDO. Tous ces scripts fonctionnent, mais en répétant tous le même bloc d'instructions de bonne connexion, comme ceci :

    Code PHP:
    try

    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $conn = new PDO('mysql:host=localhost;dbname=nom-base;charset=utf8''root''mot-passe'$pdo_options);

    }

    catch (
    Exception $e)
    {
    die(
    'Erreur : ' $e->getMessage());

    Notamment pour des raisons de facilitation de leur maintenance future, je souhaiterais placer ce bloc dans un fichier tel que "connexion.php" à la racine du site, et -dans chacun des scripts php- supprimer ce même bloc par une simple commande d'insertion de ce fichier "connexion.php", tel que :

    Code PHP:
    include ('connexion.php'); 
    Malheureusement, ceci ne fonctionne pas.

    Question : où est mon erreur, et comment la corriger ?
    Merci.
    Dernière édition par Visiteur à 30/01/2017, 09h16

    Commentaire


    • #3
      Re : Récupérer facilement les infos système

      Bonjour,

      Le script est appelé de Joomla ou à l'extérieur ?

      Si c'est en externe, le plus simple est peut être de charger le framework Joomla. Après on dispose de tous l'environnement. Voir exemple ci-dessous.
      Code PHP:
      /* Chargement framework Joomla */
      // Definition constante d'execution
      define('_JEXEC'1);
      // Definition chemin vers Joomla
      define('JPATH_BASE''../../');  // <--- a adapter en fonction de l'emplacement de son script !!!
      // Definition des variables globales de chemin d'acces
      require_once(JPATH_BASE.'includes/defines.php');
      require_once(
      JPATH_BASE.'includes/framework.php');
      // creer l'objet application
      $app JFactory::getApplication('site');
      // Test sur utilisateur
      $user JFactory::getUser();
      //var_dump($user);
      if ($user->guest) { 
          die(
      'Acces interdit');

      UP, le plugin universel à découvrir sur https//up.lomart.fr
      bgMax
      , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

      Commentaire


      • #4
        Re : Récupérer facilement les infos système

        Bonjour et merci lomart,

        Tout se passe à l'intérieur de Joomla. Mes scripts sont écrits dans des articles Joomla avec les balises {source} ... {/source}. Et mon fichier "connexion.php" écrit avec un éditeur de textes (cf. geany).

        Dans l'exemple que tu me décris ici, qu'entends-tu par "après on dispose de tout l'environnement" ? Est-ce qu'un simple ordre comme celui-ci suffit, et est-il compatible avec la méthode PDO ensuite utilisée dans le script :
        $conn = JFactory ::getDbo();

        nb : je viens de le tester, et c'est négatif. Sans doute faut-il récupérer des variables contenues dans $app !

        Commentaire


        • #5
          Re : Récupérer facilement les infos système

          Non, si c'est dans un article Joomla, il suffit de saisir un code de ce type :
          Code PHP:
          <?php
          $username 
          'lomart';
          // Connexion à la base de données
          $db JFactory::getDBO();

          // Créer une nouvelle question
          $query $db->getQuery(true);
          $query->select($db->quoteName('id'));
          $query->from($db->quoteName('#__users'));
          $query->where($db->quoteName('username') . ' = '$db->quote($username));
          $db->setQuery($query);
          $results $db->loadResult();

          echo 
          'ID = ' $results;
          ?>
          Je viens de le tester, il fonctionne
          UP, le plugin universel à découvrir sur https//up.lomart.fr
          bgMax
          , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

          Commentaire


          • #6
            Re : Récupérer facilement les infos système

            Oui, je suis d'accord : cela fonctionne pour ce qui est de la connexion à la BDD.
            Mais je tombe vite sur un os qui semble me confirmer que cette procédure à l'aide de $conn = JFactory ::getDBO() n'est pas compatible avec la méthode PDO et ses requêtes préparées.
            Je n'en veux pour preuve que ce message d'erreur :

            --> Call to a member function execute() on null

            obtenu à l'exécution de ces ordres qui suivent dans mon script php :


            Code PHP:

            $resultat 
            $conn->prepare("SELECT order_number,created_on, order_status, order_subtotal, 
            virtuemart_user_id, order_discountAmount FROM e8wgn_virtuemart_orders WHERE ((created_on >= ?) AND (created_on <= ?)) "
            );

            $resultat->execute(array($debut$fin)); 


            Cela n'ennuie bien si je dois changer de méthode (ex: revenir à mysqli).
            Dernière édition par Visiteur à 30/01/2017, 17h02

            Commentaire


            • #7
              Re : Récupérer facilement les infos système

              Euréka : je viens de trouver mon erreur !

              Comme le fichier paramètres que j'appelle par un ordre "include" -dans chaque script- était placé dans un script php, je pensais que le fichier à inclure ne devait pas être redondant au niveau des balises php.
              En fait, le fichier à inclure doit bien être obligatoirement balisé en php !

              Mon problème est donc solutionné.

              Merci encore à lomart !

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X