Rechercher : dans
Par :

Probleme d'apostrophe

Dernière réponse le 28 jun 2009 à 15:12:42 guyom, le 8 jui 2002 à 13:52:04 
 Signaler ce message aux modérateurs

Salut,

j'ai un formulaire avec une liste de nom d'entreprises; le visiteur doit selectionner un de ces noms ce qui genere une requete sql et l'affichage d'une nouvelle page asp.
la requete plante lorsque le nom selectionné contient une apostrophe... comment puis-je faire pour contourner le probleme?

merci

Meilleures réponses pour « probleme d'apostrophe » dans :
Les guillemets, apostrophes et les chaînes Voir Comment jouer avec les guillemets et les apostrophes dans les chaînes 1. Préambule 2. Éviter une coupure dans la chaîne 3. Ajouter un guillemet dans la chaîne 3.1 Avec l'apostrophe 3.2 Avec l'ASCII 3.3 Directement 3.3.1 Méthode...
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en...

1

teebo, le 8 jui 2002 à 14:05:39

Faire un test avant et remplacer les ' ...
En detail, je sais plus en asp, mais c'est faisable, mais relativement chiant...

*,*
\_/

Répondre à teebo

2

guyom, le 8 jui 2002 à 14:10:25

Tu veut dire qu'il faut que je parcour toute la chaine pour remplacer les ' par autre chose...
existe t'il un caractere qui permet de zaper les apostrophe un peu comme l'anti-slash ou quelque choz du meme genre?

Répondre à guyom

3

sebsauvage, le 8 jui 2002 à 14:18:41

Cher guyom :

Je suis en mesure de te dire que ton cher serveur est actuellement grand ouvert au hackers.
Le simple fait que tu utilises la chaîne tapée par l'utilisateur tel quel dans les requêtes t'expose à de très chouettes possibilité de bidouillage de ta base de données par n'importe qui.

Règle d'or quand on utilise du texte libre dans des requêtes:

Toujours doubles les apostrophes.

l'autre => l''autre

Sinon ça laisse la possibilité d'insérer du code SQL dans le texte => sprocht le serveur.

(Je crois que j'en avais déjà causé sur ce forum).

Répondre à sebsauvage

4

Fricky42, le 29 oct 2008 à 13:31:50

J'ai le meme probleme mais en PHP.

Toujours doubles les apostrophes.

Comment ca ? Utiliser des doubles quotes ? Ca revient au meme oO.

Ou veux tu dire qu'a chaque fois il faut prendre la chaine, parcourir, remplacer les quotes par 2 quotes (et non pas une double-quote), puis l'utiliser dans la requete ?
Hmmm Pas envie de me prendre la tete si il n'y a pas besoin.

Donc ma question : Existe t-il en PHP une fonction qui va me proteger mes chaines que je souhaite utiliser dans mes requetes ?

Mici =)) Le "lol" est aux boulets ce que le ";" est aux programmeurs
b2eda605511811988d04704ed7e809a4

Répondre à Fricky42

5

Fricky42, le 29 oct 2008 à 13:35:42

Ah bah je pense avoir trouve :
les fonctions addslash et stripslash :

http://www.allhtml.com/articles/detail/249 Le "lol" est aux boulets ce que le ";" est aux programmeurs
b2eda605511811988d04704ed7e809a4

Répondre à Fricky42

6

Fricky42, le 29 oct 2008 à 14:07:41

Hop triple post (mwahaha je suis un rebelle).

Que se soit avec addslashes/stripslashes ou avec mysql_real_escape_string() j'ai le meme soucis :

Pour envoyer la requete (UPDATE machin truc) il n'y a plus de probleme... les caracteres speciaux ne sont plus considéré comme tel et ainsi le mot kol'han sera effectivement enregistre kol'han dans la base.

Mais lorsque je veux faire un SELECT du champs je ne recupere non pas kol'han mais seulement kol...

Quelqu'un aurait une explication ?

Merci de votre attention =).
Le "lol" est aux boulets ce que le ";" est aux programmeurs
b2eda605511811988d04704ed7e809a4

Répondre à Fricky42

7

 leroidelesprit, le 28 jun 2009 à 15:12:42

Oui tes apostrophes ne sont pas protégés par des antislashs donc lorsque la chaîne transite
le PHP interprète ton apostrophe comme une fin de chaîne.

Répondre à leroidelesprit