Posez votre question Signaler

[PHP/MYSQL] Protéger ses requêtes... [Résolu]

papymucho 138Messages postés 28 août 2008Date d'inscription - Dernière réponse le 29 janv. 2009 à 12:32
Bonjour,
Un petit soucis dans l'affichage de certaines chaines récupéré dans une bdd. Quelques exemples de codes puis les explications plus bas.
Exemple pour l'insertion :
if(get_magic_quotes_gpc())
{
   $string = stripslashes($_POST['string]);
}

else
{
    $string = addslashes($_POST['string']);
}

$query = sprintf 
(
    "INSERT INTO maTable VALUES('','%s')",
     mysql_real_escape_string($string)
);								
$rq=mysql_query($query) or die(mysql_error());

Ensuite pour l'affichage les problèmes surviennent.... Quand je souhaites afficher ma chaine dans un div, aucun soucis, les antislashes s'échappent ma chaine s'affiche correctement... Le problème c'est quand je souhaites l'afficher dans un select!! Ca me fait n'importe quoi, mon fieldest part en largeur, mes input à l'ouest... je ne comprends pas.
exemple :
<select name='name'>
   <option value=''>Faire un choix.....</option>
   <?php
       include('connexion.php');
				
              $query = "SELECT id_string, string FROM maTable";
              $rq = mysql_query($query) or die(mysql_error());
              while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
              {
                   $id_string=$row["id_string"];
                   $string = htmlspecialchars(stripslashes($row["string"]));
								
                   echo "<option value='$id_string-@#@-$string'>$id_string $string</option>";
              }

       mysql_close();
    ?>
</select>

Qu'est-ce qui ne va pas? j'ai tout essayé, htmlentities, htmlspecialchars etcetc.... Ma balise de select se casse, cassant le code html au passage et m'affichant n'importe quoi si la chaine possède trop de ''''...
Le pire c'est que ça le fait que sur IE!!! sur firefox ça marche.... Comprends pas....
Un grand merci à ceux qui me viendront en aide et éclairciront ma lanterne !!! :)
PS pour l'équipe de comment ça marche s'ils lisent ceci : C'est vraiment agaçant le cadre qui suis la souris quand on tape un message..
Lire la suite 

[PHP/MYSQL] Protéger ses requêtes »

2 réponses
Réponse
+0
moins plus
Up, problème non résolu. Merci
Ajouter un commentaire
Réponse
+0
moins plus
hhmmm je réponds toujours seul à mes questions, personnes pour aider sur ce fichu forum :'(

Bon je viens de résoudre le problème, il venait dans les simples quotes dans l'affichage de l'option.

n'est pas bon :
echo "<option value='$id_string-@#@-$string'>$id_string $string</option>";

est bon :
echo "<option value=\"$id_string-@#@-$string\">$id_string $string</option>";

Les caractères échapés mettaient fin au select, ce qui faisait planter le code html après.....

Du coup je comprends mieux le principe des injections sql...... :-D
Ajouter un commentaire
Ce document intitulé « [PHP/MYSQL] Protéger ses requêtes... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?