Aller au contenu

Damned, une apostrophe


francoisch

Sujets conseillés

Bonjour

Lutilisateur 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

Lien vers le commentaire
Partager sur d’autres sites

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,

Lien vers le commentaire
Partager sur d’autres sites

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().

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

+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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...