Requête avec LIKE

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

  • [RÉGLÉ] Requête avec LIKE

    Bonjour,
    J'ai besoin d'utiliser l'URI de la page pour "piloter" le contenu d'un module.

    Voici l'URI, ce qui m'intéresse est ce qui est après le ?
    /index.php/catalogue?123456789

    1) Je récupère l'URI:
    Code PHP:
    $CodeFormation =  $_SERVER['REQUEST_URI']; 
    2) Dans ma requête j'ai :
    Code PHP:
    ->where($db->quoteName('code_formation')." LIKE ".$db->quote($CodeFormation)); 
    J'ai bien un enregistrement avec la valeur 123456789 dans la colonne "code_formation" de la table, mais il ne se passe rien.


    Voici ma requête complète:
    Code PHP:
    //Suivre l'URI
    $CodeFormation =  $_SERVER['REQUEST_URI'];

         
    $db JFactory::getDbo();
        
    $query $db->getQuery(true);
        
    $query->select(array('id_formation, intitule_formation, nom_formation,prix_inter, prix_original, duree, code_formation'))
            ->
    from($db->quoteName('#__tarifs_formations_tarifs'))
            ->
    where($db->quoteName('code_formation')." LIKE ".$db->quote($CodeFormation));

        
    $db->setQuery($query);

        
    $resultat $db->loadAssoc();    
        
    $idformation $resultat['id_formation'];
        
    $intitule $resultat['nom_formation'];
        
    $prix_original $resultat['prix_original'];
        
    $prix_inter $resultat['prix_inter'];
        
    $Duree $resultat['duree'];
        
    $Code $resultat['code_formation'];
        
    //print_r ($resultat);
    ?> 
    Comment feriez-vous ?

    Cordialement.

    Eric

  • #2
    Salut Etienne,

    Je commencerais par relire la doc de LIKE qui n'a aucun sens sans % ou _
    Ensuite, je ne suis pas sûr que cela soit la bonne méthode. un substr ou une regex sur l'URI serait moins gourmand en ressource et plus sûr quand au résultat LIKE %123% retourne 12345 (pas terrible). De toutes les façons un like %/index.php/catalogue?123456789% ne retournera jamais 123456789
    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


    • #3
      Bonjour Lomart,
      J'ai oublié de préciser, que la chaîne de caractère (123456789 dans mon exemple) commencera par l'ID de l'enregistrement, donc sera unique.
      Je me suis documenté ici: https://docs.joomla.org/Selecting_da...g_JDatabase/fr

      J'avais bien essayé avec $db->quote('\'123456789.%\'')), mais le résultat était aussi vide.

      Tu as raison. Ainsi je ne récupère que la partie qui m'intéresse dans mon URI.

      Cordialement.

      Eric


      (PS. Je lis en pied de ton message que tu seras avec Fabienne le 19 mai, tu lui passes le bonjour, je n'ai plus de ses news depuis quelques temps)

      Commentaire


      • #4
        Merci beaucoup Louis pour ton œil avisé

        Commentaire


        • #5
          Bonjour

          Sur base de ce que je lis (mais peut-être as-tu simplifié pour rendre aisé la lecture), tu ferais :

          1. $CodeFormation = $_SERVER['REQUEST_URI'];
          2. ... " LIKE ".$db->quote($CodeFormation);

          Entre les deux valides-tu la qualité de $CodeFormation ?
          Si j'arrive sur ta page avec tonsite/drop table jos_users.html et que j'arrive à formater mon drop table jos_users pour réussir à la rendre exécutable (==> SQL Injection) ne risques-tu pas d'avoir un énorme problème de sécurité ?

          Ne jamais, jamais, jamais ... jamais faire confiance à un chien (pour le fun : https://fr.wikipedia.org/wiki/On_the...you%27re_a_dog)

          En mode un peu plus sérieux : toute lecture d'un paramètre envoyé par un utilisateur (formulaire, session, urls, ...) doit passer par une fonction de "sanitization".

          Pour Joomla : https://docs.joomla.org/Secure_coding_guidelines

          L'idée, donc, c'est que si CodeFormation ne peut être que, strictement, des chiffres, tu le vérifies grâce à JFactory::getApplication->input->getInt().

          (à voir ensuite avec ton Like pour ajouter des wildcards)
          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

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X