IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Requête PDO, faire une recherche partielle


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut Requête PDO, faire une recherche partielle
    Bonjour,

    Je souhaite savoir si cette façon de faire est dangereuse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     $partiedunom= $_GET['recherche'];
    	try 
    	{
    	$req_recherche_resultats = $pdo_divers->prepare('SELECT Nom FROM Liste WHERE Nom LIKE ?;');
    	$req_recherche_resultats->execute(array("%$partiedunom%"));
    	$tableau_final = $req_recherche_resultats->fetchAll();
    	} 
    	catch (Exception $e) { }
    Si oui, comment faire autrement ? Car c'est la seule façon que j'ai trouvé pour permettre de rechercher une partie d'un mot.

    Je pose la question car j'ai constaté qu'on peut ajouter un % dans la recherche et il est interprété dans la requête.

    Sur mes autres requêtes, j'ajoute les paramètres ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_recherche_resultats->bindParam(':ScoreMini', $scoreminimum, PDO::PARAM_INT, 3);
    Merci d'avance

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Bonjour,

    Non pas dangereux, et votre requête est bien sécurisée tant que vous la prépariez correctement.

    Sinon vous pouvez aussi utiliser les marqueurs nommés comme ce que vous avez fait avec bindParam, et utiliser les pourcentage "%" (de préférence) lors de la récupération de la variable $_GET['recherche'] :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $partiedunom= "%".$_GET['recherche']."%";
    try{
       $pdo_divers->prepare('SELECT Nom FROM Liste WHERE Nom LIKE :nom;');
       $req_recherche_resultats->execute(array(":nom"=>$partiedunom));
    }catch(PDOException $e){
       echo "Erreur de requête :".$e->getMessage();
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Bonjour,

    Je suis étonné d'apprendre que pouvoir insérer un pourcent dans une requête n'est pas dangereux. Mais bon je suppose que c'est conçu pour permettre cela.
    Je vais tout de même retirer ce caractère de la recherche vu qu'elle n'est pas censée contenir ça.

  4. #4
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Citation Envoyé par encoremoi21258 Voir le message
    Je vais tout de même retirer ce caractère de la recherche vu qu'elle n'est pas censée contenir ça.
    Il arrive que ce caractère se retrouve dans les enregistrements d'une BDD, ce n'est apparemment pas votre cas

    J'ai essayé sur une requête identique chez moi, pas de soucis avec le %.

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    Par défaut
    Bonjour,

    Ce qui est dangereux pour une requête SQL c'est une injection SQL pas les caractères spéciaux comme "% & * ... ", et donc je vous assure que votre requête est bien sécurisée puisque vous utilisez prepare correctement avec les marqueurs.

Discussions similaires

  1. requéte sql pour faire une recherche
    Par malone12 dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/08/2010, 07h22
  2. [VB.NET] Faire une recherche dans une treeview
    Par Aspic dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2005, 19h10
  3. Réponses: 9
    Dernier message: 07/11/2005, 19h57
  4. faire une recherche sans tenir compte de la casse
    Par richard038 dans le forum SQL
    Réponses: 5
    Dernier message: 11/10/2005, 09h07
  5. cherche une fonction qui permet de faire une recherche
    Par vbcasimir dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2005, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo