francoisch Posté 23 Octobre 2011 Posté 23 Octobre 2011 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
Aenoa Posté 23 Octobre 2011 Posté 23 Octobre 2011 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,
Ernestine Posté 23 Octobre 2011 Posté 23 Octobre 2011 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().
francoisch Posté 23 Octobre 2011 Auteur Posté 23 Octobre 2011 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
jcaron Posté 23 Octobre 2011 Posté 23 Octobre 2011 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
Bigb06 Posté 23 Octobre 2011 Posté 23 Octobre 2011 +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.
francoisch Posté 23 Octobre 2011 Auteur Posté 23 Octobre 2011 Merci à toi Jacques de ton message. Parti de peu, je réalise que le sujet a dépassé ma question, heureusement. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant