problem de "

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problem de "

par VaN » 22 août 2005, 17:40

ok merci :)

par Cyrano » 22 août 2005, 17:39

exactement.

par VaN » 22 août 2005, 17:38

d'accord, donc c'est bien ce que je pensais.

Conclusion : Suivant le caractere que je vais utiliser a l'ouverture de mon attribut HTML (value=".." ou value='..'), il faudra que je condamne l'utilisation d'un caractere ( " si j'utilise ', et ' si j'utilise " ). C'est bien ça ?

par Cyrano » 22 août 2005, 17:35

Bon, le problème va se poser si ces valeurs se retouvent dans les valeurs d'arrtibuts de balises html. en contenu, ça ne devrait pas poser de difficultés et un addslashes tout simplement devrait suffire. Si tu dois avoir ce genre de valeur en attribut de balise html, tu as un problème si ces valeurs sont elles-même encadrées de guillemets. Dans ce cas, je suggère donc de remplacer dans les chaines^les guillemets par des apostrophes avec un truc comme :
$var = str_replace("\"", "'", $var);
Ensuite, un traitement avant insertion:
$var = (!get_magic_quotes_gpc()) ? addslashes($var) : $var;
Lors de la récupération, même chose, si les magic_quotes sont désactivées, stripslashes().

par VaN » 22 août 2005, 17:27

Mathias "Baldours" Denis

(n'importe quoi comprenant des " et/ou des ' de toute façon)

par Cyrano » 22 août 2005, 17:25

On est mal barrés je sens.

Bon, donne moi un exemple de texte (court merci) de ce que tu voudrais insérer et récupérer lors de l'affichage.

par VaN » 22 août 2005, 17:20

en appliquant ceci :
$titre = addslashes($_POST['titre']);
	$titre = str_replace("\"","\\\"", $titre); 
	$titre = addslashes($titre);
	echo $titre;
me renvoie ceci \\\\\"

mais pourtant, quand je vais verifier la valeur ds la bdd, c'est \\"
pourtant je ne fais aucune opération sur $titre entre le echo $titre et la requete d'insertion..
et donc en sortie brute j'ai \\" et donc \ qui s'affiche ds l'input.

par Cyrano » 22 août 2005, 17:08

je capte mal: je croyais que les balckslashes étaient déjà présents dans le texte d'origine ... :-k

ALors dans ce cas:
  1. addslashes(); Pour échapper les guillements
  2. str_replace(); pour protérer les guillements et les backslashes
  3. addslashes(); Pour protéger tout ça
En fin de compte à la sortie, tu devrais bien avoir \"

par VaN » 22 août 2005, 17:04

je viens de trouver une petite faille deja :
ce n'est pas
  1. str_replace()
  2. addslashes()
mais
  1. addslashes()
  2. str_replace()
car sinon le str_replace ne remplacera rien.

un echo juste apres str_replace me marque "
pourtant, la variable rentrée en bdd juste après est " (j'y comprends plus rien)

donc la valeur brute sortie est ", et la valeur apres stripslashes est "


edit : de toute façon, je ne vois pas comment mon probleme peut etre resolu.. pour l'html, un \ est un \, rien de plus, ce n'est pas un caractere special. et un " est un ", donc il ferme le " precedent. donc quoi qu'il arrive, l'affichage d'un " dans un value=".." fermera l'attribut, et donc me fera perdre la fin de ma valeur.

par Cyrano » 22 août 2005, 16:56

et à ce moment là, comment sont les valeus brutes : \\\" ou déjà \"

par VaN » 22 août 2005, 16:54

<input type="text" name="titre" size="31" value="<?php if (isset($result2['titre'])) { echo stripslashes($result2['titre']); } ?>" />

par Cyrano » 22 août 2005, 16:54

La ligne de code est écrite comment pour afficher les données

par VaN » 22 août 2005, 16:44

oui c'est ça, une sortie direct affiche les \", met un affichage avec stripslashes (toujours en dehors de value="" ) affiche le texte sans les \ (logique)

edit : allez viens faire ton 6000e post ici cyrano !!! :lol:

par Cyrano » 22 août 2005, 16:38

normalement, la sortie directe devrait afficher des données avec des \" et non des " tout court...

par VaN » 22 août 2005, 16:30

à l'affichage en dehors du value="", il me sort la donnée avec les ", nickel comme il faut. C'est donc bien l'utilisation des "" dans value ="..." qui fait foirer.