Formulaire PHP (les apostrophes)

Fermé
dragonfire59 Messages postés 167 Date d'inscription samedi 1 mars 2008 Statut Membre Dernière intervention 6 novembre 2016 - 13 juin 2012 à 12:47
 Utilisateur anonyme - 13 juin 2012 à 15:15
Bonjour,
Ayant créer un formulaire pour rentré des personnes dans une BDD, je rencontre une difficulté, j'ai parcouru divers forum et n'ai trouvé de vraiment utile, quand je rentre mes données dans les champs de saisies sans apostrophes tout ce passe bien, une fois qu'il y a un champ adresse avec "23 rue de l'alabama", la requete ne s'éxécute pas, y a t il un moyen de passer outre ce problème ? j'ai vu sur des forums le addslahes mais je n'ai compris



4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 13/06/2012 à 13:46
avant de rentrer les valeurs dans la bdd, passes par la fonction mysql_real_escape_string

ex: $adresse=mysql_real_escape_string($_POST['adresse']);

ça échappe les ' entre autre



par contre après pour afficher il faut appliquer stripslashes($adresse)
0
Utilisateur anonyme
13 juin 2012 à 13:51
Bonjour

par contre après pour afficher il faut appliquer stripslashes($adresse)
Absolument pas. Si tu as besoin de le faire, c'est que tu avais déjà des slashes en trop avant d'insérer tes données dans la base, ça ne vient pas de mysql_real_escape_string
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 juin 2012 à 14:07
décidément le père tu y tiens:

mysql_real_escape_string() protège une commande SQL de la chaîne unescaped_string, en "échappant" les caractères spéciaux tout en prenant en compte le jeu de caractères courant de la connexion link_identifier. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.

mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un anti-slash aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.


donc si la valeur avant est l'alabama la fct transforme en l\'alabama
0
Kafiristanica Messages postés 263 Date d'inscription mardi 12 juin 2012 Statut Membre Dernière intervention 27 août 2012 28
13 juin 2012 à 14:09
un exemple de la requete que tu essaye ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 juin 2012 à 14:31
mea culpa

je viens de faire un petit script de test, effectivement bien que la lecture du descriptif de cette fonction ne le précise pas

ce qui est effectivement enregistré dans la BDD est sans \

donc cela depend de magic_cote_gpc

milles excuses !!
0
Utilisateur anonyme
13 juin 2012 à 15:15
Pas de problème ^^
Note qu'il est normal que ces backslashes ne se retrouvent pas enregistrés dans la base, il n'ont rien à y faire. Comme tous les caractères d'échappement, il servent juste à éviter que les caractères spéciaux jouent leur fonctions spéciales. Mais ils ne font pas partie des données.
0