traitement d'un champs texte d'un formulaire

py
Invité n'ayant pas de compte PHPfrance

19 juin 2006, 12:45

Bonjour,

J'ai un problème dans un de mes scripts de traitement de formulaire...
J'ai un champs texte que je souhaite enregistrer dans une table, mais lorsque je mets des apostrophes j'ai une erreur... mon script marche en local, mais pas sur mon serveur distant... (je pense que ce sont 2 versions différentes de php)

mon script :

$texte = $_POST['texte'];
$texte = str_replace("\n","<br>","$texte");

$query = "INSERT INTO matable VALUES ('$champ1', '$texte')";
mysql_query($query);

Quelqu'un pourrait me venir en aide ?
Merci d'avance !...

Mammouth du PHP | 1353 Messages

19 juin 2006, 12:53

Quelqu'un pourrait me venir en aide ?
Oui, le module de recherche de php france ! ;)


http://www.phpfrance.com/forums/voir_su ... emaine.php
Modifié en dernier par guilt92 le 19 juin 2006, 12:55, modifié 1 fois.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juin 2006, 12:54

C'est très vraissemblablement une différence de paramétrage de la variable magic_quotes_gpc dans le php.ini. Sur ton poste, toutes les apostrophes sont automatiquement protégées par un antislash dès lors que tu les récupères avec GET ou POST :

Si dans ton formulaire tu envois la chaine "L'apostrophe", lorsque tu la récupères en php, celle-ci est automatiquement transformée en "L\'apostrophe", te permettant de l'utiliser directement dans une requête sql. Le fait d'avoir un antislash devant permet à sql de savoir qu'il s'agit du caractère apostrophe et non pas de la fin de la chaine.

Sur ton serveur, ce paramètre doit être à off et l'apostrophe n'est donc pas protégée automatiquement. Si tu as la main sur le fichier php.ini tu peux en modifier le paramétrage (Voir ici comment ça fonctionne), sinon il te faut modifier ton code en conséquence et faire appel à la fonction addslashes() sur tes variables pour en protéger les apostrophes :)