apostrophe

nicophp371
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 12:23

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.

Mammouth du PHP | 768 Messages

13 janv. 2006, 12:27

Comment faire pour gérer le retour en ayant un affichage sans \.
http://fr3.php.net/stripslashes
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 janv. 2006, 12:27

pour enlever des / => stripslashes()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

nicophp371
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 13:03

J'ai déjà mis stripslashes et le \ est toujours présent lorsque je revient dans mon formulaire...
Une idée ???
Merci

Mammouth du PHP | 19672 Messages

13 janv. 2006, 13:04

Sans voir le code, difficile.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 13:50

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]

Invité
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 14:18

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.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 janv. 2006, 14:25

tu n'as pas un addslashes qui se balade quelque part ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 768 Messages

13 janv. 2006, 14:34

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'])) ) {
 


}
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Invité
Invité n'ayant pas de compte PHPfrance

13 janv. 2006, 14:40

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

13 janv. 2006, 15:08

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'];

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute