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

Résolu
papymucho Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -  
papymucho Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -
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..
A voir également:

2 réponses

papymucho Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   220
 
Up, problème non résolu. Merci
0
papymucho Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   220
 
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
0