francoisch Posté 23 Octobre 2011 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Aenoa Posté 23 Octobre 2011 Partager 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, Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ernestine Posté 23 Octobre 2011 Partager 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(). Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 23 Octobre 2011 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 23 Octobre 2011 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bigb06 Posté 23 Octobre 2011 Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
francoisch Posté 23 Octobre 2011 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant