







|
[ Forums >> JavaScript >> Problèmes sur les cours de JavaScript >> Problème Guillemets pour Ecriture Fichier Texte ]
| > Problème Guillemets pour Ecriture Fichier Texte |
[ Posté par TrevorReznik ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 14-01-2009 à 09:42 | 2 messages ]
  Alors, j'ai fait un formulaire sur une page qui contient une seule balise, la balise <textarea></textarea> pour récupérer une phrase.
Au moment de sa validation par clic sur un bouton, j'exécute une fonction JavaScript contenu en entête qui vérifie si le champ est vide. Si c'est le cas, il y a un message d'erreur et on reste sur la même page.
Si les conditions sont remplies, une nouvelle page est chargée, dans laquelle j'attribue à une variable le contenu de mon "textarea" (dicton), pour ensuite écrire dans un fichier texte son contenu avec ça :
<?php
$nouveau_dicton = $_POST['dicton'];
$nom_du_fichier = "dicton.txt";
$ressource = fopen($nom_du_fichier, "w");
fseek ($ressource, 0);
fwrite ($ressource, $nouveau_dicton);
fclose ($ressource);
?>
Lorsque je regarde le contenu du fichier "dicton.txt" je m'aperçois que ce dernier n'a pas exactement enregistrée les même caractères qu'il y avait dans la balise "textarea".
En effet, à chaque fois qu'une apostrophe est utilisée dans le champ d'un formulaire, et bien dans mon fichier texte elle est remplacée par « \' ». Exemple, quand l'utilisateur tape « L'hubac » j'ai dans mon fichier texte « L\'hubac ».
Je pense, qu'il faudrait donc tester le contenu de la chaîne de caractère avant de la mettre dans le fichier texte, un peu comme quand on veut vérifier si un champ email contient un email du type contact@doamine.com
On fait des tests sur le caractère "@" et éventuellement sur le point.
J'ai pu trouver plein de script qui vérifie les champs, mais c'est des scripts en PHP. Il est préférable, normalement, de tester tout ça côté client, en javaScript il me semble...
Après je me dis qu'en entête de mon deuxième fichier, j'ai du code PHP pour écrire mon fichier texte alors je pourrais peut être le faire à ce moment là.... ?!? Il faudrait supprimer les caractères "/" dans la chaine avant l'apostrophe, non ?... et donc faire un boucle qui la teste.
PHP ou JavaScript ??? Je commence à tout mélanger...
Merci d'un petit coup de pouce !
 
|
[ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 14-01-2009 à 12:34 | 4024 messages ]
  Je pense qu'il ajoute des quotes parce que la protection magic_quotes est activée.
Pour récupérer le contenu d'origine (et pas la version protégée) il faudrait que tu fasses un stripslashes la chaine retournée par ton $_POST
J'ai pu trouver plein de script qui vérifie les champs, mais c'est des scripts en PHP. Il est préférable, normalement, de tester tout ça côté client, en javaScript il me semble...
|
|
on garantit d'abord l'intégrité des données en testant le contenu côté serveur (avec du php donc) puis on peut éventuellement améliorer l'"expérience utilisateur" en faisant des tests côté client avec du javascript.
________________ V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites
Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html
| [ Posté par TrevorReznik ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 14-01-2009 à 16:12 | 2 messages ]
  La fonction stripslashes me provoquait des erreurs quand je l'utilisais comme suit :
<?php
$nouveau_dicton = $_POST['dicton'];
$nouveau_dicton = stripslashes($nouveau_dicton);
Bablabla
?>
J'ai juste rajouté une ligne de code et maintenant ça fonctionne très bien...
Voilà... J'ai mis des commentaires au cas où si quelqu'un qui galère comme moi veut comprendre... J'ai fait comme ça :
<?php
// Attribution du contenu de mon champs <input name="dicton" ...> à la variable $nouveau_dicton
$nouveau_dicton = $_POST['dicton'];
// J'ai pensais à faire ça comme s'il fallait convertir le contenu en chaîne de caractère... sans, ça ne fonctionne pas, ça me renvoi une erreur !!!
$str = "".$nouveau_dicton;
// Je vire mes "\" de la chaîne de caractère
$str = stripslashes($str);
// Nom du fichier à écrire dans une variable
$nom_du_fichier = "dicton.txt";
// ouverture du fichier en écriture avec effacement de ce dernier
$ressource = fopen($nom_du_fichier, "w");
// on se place au début
fseek ($ressource, 0);
// on écrit le contenu de la variable $str dans le fichier
fwrite ($ressource, $str);
// on ferme le fichier
fclose ($ressource);
?>
<html>
<head>
|
|
Services email :
  Vous devez vous identifier pour profiter des services par email du forum.
|

|