Page 1 sur 1

problème d'insertion 2fois sur 167 :s

Posté : 26 déc. 2011, 13:40
par miiidooo19
Bonjour à vous tous,

c'est la 2eme que ça m'arrive, l'insertion des donnée dans une base sans pseudo :s
j'ai fait un site sous forme d'un forum à un ami et tous à laire bien marché (le forum je lais fait personnellement et pas un script) pour le moment y a 167 commentaire et 30 sujet dans 3 semaines les sur les 167 commentaire j'ai eu deux fois le meme problème c'est l'insertion de pseudo
sachant que sur ce site on peu pas commenter si on est pas connecté donc le pseudo a inseret je le prend dans $_session['pseudo'] je pense que c'est correct et que c'est bien vu que ça marché 165 fois sans problème

a vos avis d'ou vien le problème?

Re: problème d'insertion 2fois sur 167 :s

Posté : 26 déc. 2011, 14:34
par xTG
La protection lors de l'injection de variable dans la requête qui est mal faite ?

Re: problème d'insertion 2fois sur 167 :s

Posté : 26 déc. 2011, 17:36
par Ryle
ou simplement le fait que entre le moment ou l'utilisateur a chargé la page et celui ou il a posté le formulaire, la session avait expiré (parce qu'il est allé prendre un café, venu chatter sur phpfrance, est allé prendre une douche, à répondu au téléphone, ... liste non exhaustive) ... résultat, plus de pseudo en session quand il a fini d'écrire son message ou qu'il a pensé à cliquer le bouton submit :)

Re: problème d'insertion 2fois sur 167 :s

Posté : 26 déc. 2011, 17:52
par miiidooo19
ah dac donc solutions?

Re: problème d'insertion 2fois sur 167 :s

Posté : 26 déc. 2011, 19:03
par Ryle
Ben si c'est le premier cas, faut contrôler les données avant de les insérer en base...

par contre si c'est le second, ben faut contrôler les données avant de les insérer en base ;)

Re: problème d'insertion 2fois sur 167 :s

Posté : 27 déc. 2011, 15:18
par miiidooo19
Ben si c'est le premier cas, faut contrôler les données avant de les insérer en base...

par contre si c'est le second, ben faut contrôler les données avant de les insérer en base ;)
:D et dans le 3eme ? je suppose qu'il faut controle aussi les données avant des les insérer :) non ?

je r'ajoute juste un petite If $_SESSION{'pseudo']!="" j'insert sinon j'insert pas :) si suffisent?

Re: problème d'insertion 2fois sur 167 :s

Posté : 27 déc. 2011, 20:44
par Ryle
Ah j'avais pas envisagé ce cas là, mais effectivement, ce serait pas mal de les contrôler en effet ;)

Tu as potentiellement deux types de contrôles à faire :
- Le premier sur la présence de la donnée et effectivement, si c'est vide en session, c'est que c'est pas renseigné, donc faut mettre un message d'erreur et dire à l'utilisateur qu'il n'est plus connecté et qu'il doit recommencer :)
- Le second, une fois que tu sais que ton champ n'est pas vide, se fait sur son contenu, pour éviter que l'utilisateur ne puisse effectuer des injections sql (en gros, il colle ses requêtes dans tes variables pour qu'elles soient exécutées avec les tiennes). Pour cela il faut protéger les apostrophes et autres pour que ta base de données les considère comme des caractères et non comme des instructions (mysql_real_escape_string() , etc.)

Si après ça y en a encore qui t'échappe, tu nous le dis et on enverra xTG en personne pour leurs tirer les oreilles ;)

Re: problème d'insertion 2fois sur 167 :s

Posté : 05 janv. 2012, 01:40
par miiidooo19
Ah j'avais pas envisagé ce cas là, mais effectivement, ce serait pas mal de les contrôler en effet ;)

Tu as potentiellement deux types de contrôles à faire :
- Le premier sur la présence de la donnée et effectivement, si c'est vide en session, c'est que c'est pas renseigné, donc faut mettre un message d'erreur et dire à l'utilisateur qu'il n'est plus connecté et qu'il doit recommencer :)
- Le second, une fois que tu sais que ton champ n'est pas vide, se fait sur son contenu, pour éviter que l'utilisateur ne puisse effectuer des injections sql (en gros, il colle ses requêtes dans tes variables pour qu'elles soient exécutées avec les tiennes). Pour cela il faut protéger les apostrophes et autres pour que ta base de données les considère comme des caractères et non comme des instructions (mysql_real_escape_string() , etc.)

Si après ça y en a encore qui t'échappe, tu nous le dis et on enverra xTG en personne pour leurs tirer les oreilles ;)
Lol xTG carrément ^^
pour le moment j'ai réglé le problème avec la première solution sauf que quand j'ai ces deux cas dans la BDD j'ai tous ce qu'est enregistrer sauf le pseudo et la session et tjr activer la preuve c'est qu'il a tjr le champ de saisi qui ne s'affiche pas si y a pas d session activé donc c'est un peux bordel dans mon code non ?
je vais essayer aussi d'utilisé après la 2eme c'est plus propre