Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/10/2011, 23h12   #1
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Par défaut SELECT LIKE avec apostrophe

Bonsoir,
Là je ne trouve pas de parade sérieuse a un SELCTE LIKEdans mon cas ou des clieents ont des noms avec apostrophe
exemple
Code :
1
2
3
4
 
$lui="D'ALIVRANCE";
//=====alors=========
mysql_query ("SELECT * FROM apod_rv WHERE nompren  LIKE '$lui%'  LIMIT 15");
Avez vous déjas rencontré ce problême

Merci d'avance
Christele
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/10/2011, 02h23   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 329
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 329
Points : 1 657
Points : 1 657
Code :
1
2
3
$lui = mysql_real_escape_string("D'ALIVRANCE");
//=====alors=========
mysql_query ("SELECT * FROM apod_rv WHERE nompren  LIKE '$lui%'  LIMIT 15");
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/10/2011, 02h38   #3
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Mille mercis a toi,
Mais avec PDO ce n'est pas possible
mais du coup tu m'as donné une idée et ça marche avec MySql et PDO
Whaou ! Tout bétement
Code :
1
2
3
4
 
$lui="D'ALIVRANCE";
//=====alors=========
mysql_query ('SELECT * FROM apod_rv WHERE nompren  LIKE "'.$lui.'%"  LIMIT 15');
C' est TOP !
A++ Christele
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 05h15   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 244
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 244
Points : 1 566
Points : 1 566
Non pas TOP du tout, c'est pas le bon moyen -> c'est une faille de sécurité et tu t'expose à des injections sql. Toutes les variables doivent être protégées dans une requête, et pas qu'avec la clause LIKE.

Avec mysql il faut utiliser la fonction mysql_real_escape_string (comme déjà dit).
Avec PDO if faut utiliser la fonction quote ou des requêtes préparées.

C'est un impératif et si tu ne le fais pas ton site est très vulnérable à tout pirate même amateur, cf exemple 2 de ce lien. Attention de ne pas traiter ces problèmes à la légère
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/10/2011, 10h43   #5
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Bonjour,
N'étant pas le sujet, je m'étais attachée qu'a la syntaxe de mon probléme, donc pour moi c'est clos.
NB bien entendu je protéges tout sur mes sites
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 16h46   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 244
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 244
Points : 1 566
Points : 1 566
Citation:
Envoyé par christele_r Voir le message
Bonjour,
N'étant pas le sujet, je m'étais attachée qu'a la syntaxe de mon probléme, donc pour moi c'est clos.
NB bien entendu je protéges tout sur mes sites
Réponse pour le moins ambigüe : on ne traite pas une requête comme une chaine de caractère standard, et il n'y a pas lieu de déroger à cette règle pour ton problème.

Par ailleurs je doute un peu que tes sites soient correctement protégés contre les injections sql car dans ce cas tu utiliserais systématiquement les fonctions mysql_real_escape_string ou quotes (ou des requêtes préparées), ce qui fait que tu n'aurais pas eu ce problème et donc pas de question à poser.

Bon en admettant que tu utilise ces fonctions dans tes autres requêtes et que tu te pose la question spécifiquement pour LIKE, et bien il faut faire pareil pour LIKE. En d'autres termes si tu as trouvé l'origine du problème, ta façon d'y répondre n'est pas correcte.

Notes bien que je ne te dis pas ça par simple esprit de contradiction
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 11
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web