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

Résolu/Fermé
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 - 28 janv. 2009 à 23:35
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 - 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..
A voir également:

2 réponses

papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
29 janv. 2009 à 10:28
Up, problème non résolu. Merci
0
papymucho Messages postés 140 Date d'inscription mercredi 18 juin 2008 Statut Membre Dernière intervention 1 novembre 2009 220
29 janv. 2009 à 12:32
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