Page 1 sur 1

apostrophe

Posté : 13 janv. 2006, 12:23
par nicophp371
Bonjour,

J'ai qq soucis avec la gestion des apostrophes lorsque je post un formulaire. Le paramètre "magic_quotes_gpc" est à ON dans le php.ini, donc je n'ai pas de souci pour l'insertion dans une base.

Mon problème est le suivant :
Lorsque l'utilisateur valide le formulaire, si celui-ci comporte une erreur, il clique sur retour formulaire avec les valeurs qu'il a posté (afin d'éviter qu'il se retape tout le formulaire !). Mais lorsque l'un des champs postés comporte une apostrophe, le retour ne se passe bien.
Je reviens bien sur mon formulaire, mais il y a toujours un \ devant l'apostrophe ou parfois ça coupe complètement la chaine.

Comment faire pour gérer le retour en ayant un affichage sans \.

merci de votre aide.

Re: apostrophe

Posté : 13 janv. 2006, 12:27
par mario
Comment faire pour gérer le retour en ayant un affichage sans \.
http://fr3.php.net/stripslashes

Posté : 13 janv. 2006, 12:27
par Truc
pour enlever des / => stripslashes()

Posté : 13 janv. 2006, 13:03
par nicophp371
J'ai déjà mis stripslashes et le \ est toujours présent lorsque je revient dans mon formulaire...
Une idée ???
Merci

Posté : 13 janv. 2006, 13:04
par Cyrano
Sans voir le code, difficile.

Posté : 13 janv. 2006, 13:50
par Invité
Sans voir le code, difficile.
voici le code :

Ici, je vérifie que les champs obligatoires sont postés.

Code : Tout sélectionner

if (($_POST[natures] == "") or ($_POST[objet] == "") or ($_POST[daterealisation] == "")) { print "<b>ATTENTION : Les champs marqués d'une * sont obligatoires. Veuillez rectifier. Merci. </b><br> <a href="principal.php?page=creer&natures=$_POST[natures]&objet=$_POST[objet]&texte_demande=$_POST[texte_demande]&daterealisation=$_POST[daterealisation]&lien=$_POST[lien]"> Retour formulaire </a>"; exit(); }
Voici le code du formulaire si retour il y a (sur le champs objet) :

Code : Tout sélectionner

if ($_GET[objet] != "") { $objet = stripslashes($_GET[objet]); print "<input name='objet' type='text' size='40' class='input' value='$objet'/>"; } else { print "<input name='objet' type='text' size='40' class='input' />"; }
J'ai également essayé de mettre le stripslashes avant le lien du retour, mais rien n'à faire je me retrouve toujours avec des \ et le cassement de la chaine.

Merci de ton aide.[/code]

Posté : 13 janv. 2006, 14:18
par Invité
j'ai un peu avancé.

lors de mon retour j'ai fait un echo da ma variable $_GET[objet] et j'obtenais ça :

Code : Tout sélectionner

test de l\\\'affichage
si je mets en place un stripslashes j'ai ça :

Code : Tout sélectionner

test de l\'affichage
il m'en reste 1 \.

je suis obligé de remettre un stripslashes pour qu'il le vire...
Pourquoi suis-je obligé de le faire 2 fois ??? et pourquoi j'ai 3 \\\ au retour ?

merci de vos lumières.

Posté : 13 janv. 2006, 14:25
par Truc
tu n'as pas un addslashes qui se balade quelque part ?

Posté : 13 janv. 2006, 14:34
par mario

Code : Tout sélectionner

if (($_POST[natures] == "") or ($_POST[objet] == "") or ($_POST[daterealisation] == "")) {
pourquoi n'y a t-il pas de quote dans les superglobales ?
l'utilisation de empty() est plus élègante à mon goût

if ( (!empty($_POST['natures'])) || (!empty($_POST['objet'])) || (!empty($_POST['daterealisation'])) ) {
 


}

Posté : 13 janv. 2006, 14:40
par Invité
tu n'as pas un addslashes qui se balade quelque part ?
Salut,

Non j'ai bien regardé je n'ai aucun addslashes qui traine...
Est-ce du au fait que j'ai magic_quotes_gpc à ON dans le php.ini ??

Merci

Posté : 13 janv. 2006, 15:08
par Truc
puisque tu dis que tu as
test de l\\\'affichage
Si $_POST['objet'] contient "l'affichage" avec les "magic_quotes" à ON tu as:
echo $_POST['objet'];  // => l\'affichage
echo addslashes($_POST['objet']); // l\\\'affichage
je vois pas d'autre solution...

tu peux traiter les variables avec ce test:
$objet=(!get_magic_quotes_gpc()) ? addslashes($_POST['objet']) : $_POST['objet'];