Rechercher dans une base de donnée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Rechercher dans une base de donnée

Re: Rechercher dans une base de donnée

par mariongellar » 13 sept. 2019, 16:07

les requêtes préparés sont un moyen de sécurisé encore ton code pas de variable directement dans la requête

Code : Tout sélectionner

$red = $bdd->prepare('SELECT DATE_FORMAT(rdv_livreur, "%H:%i") AS heure_rdv_livreur FROM client WHERE rdv_livreur LIKE ?'); $red->execute(array($debut_rdv."%")); // ICI TA VARIABLE while ($donnees = $red->fetch()) { }$red->closeCursor();

Re: Rechercher dans une base de donnée

par or 1 » 12 sept. 2019, 23:47

ça donnerait :
SELECT * FROM dossiers WHERE Langue LIKE "%LIMIT 1; SELECT * FROM maSuperTable;%" ORDER BY id
pas d'injection.

si on met un " dans le q passé, le " est transformé en " par htmlspecialchars, pas d'injection non plus.

ce qui n’empêche pas de suivre le conseil de mettre des requêtes préparées.

Re: Rechercher dans une base de donnée

par thehawk » 12 sept. 2019, 23:16

le soucis est que tu es largement ouvert à l'injection SQL, imagine que je passe à ton URL : ?q=LIMIT 1; SELECT * FROM maSuperTable;

Je te conseil de regarder du coder des requêtes préparés afin d'évite ce futur soucis.

Rechercher dans une base de donnée

par ravenelse » 12 sept. 2019, 17:16

Voila mon probleme, je peux chercher et afficher ma base de donnée avec ce code, sauf que l'on me dit que c'est pas bien du tout de faire avec htmlspecialchars. Sauf que j'ai essayer d'autres choses et je n'arrive pas à afficher et rechercher dans ma base de donnée sans passer par ce code .
<?php

$bdd = new PDO('mysql:host=localhost;dbname=;charset=utf8','','');

$dossiers = $bdd->query('SELECT * FROM dossiers ORDER BY ID ');
if(isset($_GET['q']) AND !empty($_GET['q'])) {
   $q = htmlspecialchars($_GET['q']);
   $dossiers = $bdd->query('SELECT * FROM dossiers WHERE Langue  LIKE "%'.$q.'%" ORDER BY id '); 
   if($dossiers->rowCount() == 0) {
      $dossiers = $bdd->query('SELECT * FROM dossiers WHERE CONCAT(Langue, Modèles, Type, Nom, Lien) LIKE "%'.$q.'%" ORDER BY id ');
   }
}
?>
<div class="container">

</form><form method="GET">
   <input type="search" name="q" placeholder="Recherche..." style="width: 300px; height: 40px;"/>
   <input type="submit" value="Valider" style="width: 75px; height: 40px;" />
<?php if($dossiers->rowCount() > 0) { ?>
<table class="table table-striped " >
      <tr>
         <th >ID</th>
         <th >Langues</th>
         <th >Modèles </th>
         <th >Type </th>
        <th >Nom</th>
     <th >Lien</th>
          </tr>
           </thead>
   <?php while($a = $dossiers->fetch()) { ?>
      <tr >
        <td><?= $a['ID'] ?></td>
      <td><?= $a['Langue'] ?></td>
       <td><?= $a['Modèles'] ?></td>
       <td><?= $a['Type'] ?></td>
              <td><?= $a['Nom'] ?></td>       
                <td><?php echo ('<p><a href="'.$a['Lien'].'"target="_blank">'.$a['Lien'].' </a>'); ?> </td>

          <tr>

   <?php } ?>
   </ul>
<?php } else { ?>
Aucun résultat pour: <?= $q ?>...<br >Veuillez retenter une recherche ou retourner à <a href=""> la liste des données.</a>
<?php } ?>