Webmaster Hub: Damned, une apostrophe - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Damned, une apostrophe Noter : -----

#1 L'utilisateur est hors-ligne   francoisch 

  • Groupe : Hubmaster
  • Messages : 628
  • Inscrit(e) : 05-mars 06

Posté 23 octobre 2011 - 13:41

Bonjour

L’utilisateur fait ses saisies dans un formulaire avec quelque chose comme ça :
<input type="text" name="...



Plus loin, mon code fait :
$nombreLignes = mysql_num_rows($result); 


sur la table où sont enregistrées ces données.

Problème : quand les données saisies comportent une apostrophe, le num_rows se plante.

A votre avis, comment faire ? supprimer les apostrophes à la saisie ?

Merci par avance de votre aide.

Francois
0

#2 L'utilisateur est hors-ligne   Aenoa 

  • Groupe : Membre+
  • Messages : 285
  • Inscrit(e) : 28-octobre 10
  • Genre:Homme
  • Localisation:Tournai
  • Société:Je cherche...

Posté 23 octobre 2011 - 13:43

Bonjour,

As-tu tenté un addslashes(mysql_num_rows($result)); ?

Ou encore un Addslashes lors de l'écriture en base de donnée, juste après la saisie.

ça parrait bête, mais sait-on jamais :)

Cordialement,
Mon (très petit) site personnel

"Ce n'est pas parce que l'on ne sait pas, que l'on ne peut pas. L'on peut tout apprendre, avec de la motivation."
0

#3 L'utilisateur est hors-ligne   Ernestine 

  • Groupe : Fondatrice
  • Messages : 1 034
  • Inscrit(e) : 21-août 03
  • Genre:Femme

Posté 23 octobre 2011 - 14:32

Bonjour,

Il n'y a aucune raison que ça plante sous prétexte qu'il y a des apostrophes. A mon avis, c'est que tes données sont mal enregistrées dès le départ.

Pour bien enregistrer les données, il faut les insérer avec mysql_real_escape_string(), pour échapper apostrophes, guillemets, etc.

Il faut aussi s'assurer que le serveur n'ajoute pas lui-même des slashes sur les données de formulaire, ce qui est généralement le cas sur les serveurs mutualisés, car pour des raisons de sécurité le paramètre magic_quotes_gpc est à On, auquel cas il faut d'abord supprimer ces slashes avec stripslashes() et ensuite faire l'inclusion avec mysql_real_escape_string().
0

#4 L'utilisateur est hors-ligne   francoisch 

  • Groupe : Hubmaster
  • Messages : 628
  • Inscrit(e) : 05-mars 06

Posté 23 octobre 2011 - 14:38

bonjour et merci de vos réponses.

Vos réponses m'ouvrent des horizons très intéressants en présentant des fonctions dont j'ignorais l'existence.

Je vais travailler la-dessus; merci encore de votre aide.

Francois
0

#5 L'utilisateur est hors-ligne   jcaron 

  • Groupe : Membre+
  • Messages : 864
  • Inscrit(e) : 15-janvier 08
  • Genre:Homme
  • Localisation:Londres

Posté 23 octobre 2011 - 16:40

Le problème ce n'est en effet pas le mysql_num_rows, mais le moment où tu fais ta requête. Il est obligatoire et indispensable d'utiliser mysql_real_escape_string sur toutes les données que tu insères dans une requête SQL, surtout si les données viennent de l'extérieur (une saisie utilisateur, mais de façon générale tout ce que ton script récupère: variables, cookies, headers...). Sinon ça t'ouvre à tes problèmes de sécurité très graves (injection SQL).

Alternativement, tu peux utiliser les fonctions PDO pour accéder à mysql, qui feront tout ça automatiquement si tu utilises la bonne syntaxe (avec des "placeholders" pour chaque variable, et le passage des variables séparément).

Jacques.

EDIT: typo
0

#6 L'utilisateur est hors-ligne   Bigb06 

  • Groupe : Hubmaster
  • Messages : 260
  • Inscrit(e) : 16-août 07
  • Genre:Homme
  • Localisation:Carro, Martigues
  • Société:Allogarage

Posté 23 octobre 2011 - 17:15

+1 Ernestine : la fonction mysql_real_escape_string()doit être utilisée pour toute valeur potentiellement dangereuse, c'est à dire renseignée par un internaute. Sinon il y a un risque d'injection MYSQL et de hack de la BD, puis du site.
Rechercher un garage auto grâce aux avis des internautes : Allogarage.fr
Garages à Nice
Garages à Paris
0

#7 L'utilisateur est hors-ligne   francoisch 

  • Groupe : Hubmaster
  • Messages : 628
  • Inscrit(e) : 05-mars 06

Posté 23 octobre 2011 - 17:57

Merci à toi Jacques de ton message.

Parti de peu, je réalise que le sujet a dépassé ma question, heureusement.

Francois
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)