Aller au contenu

formulaire et fichier .txt


Sujets conseillés

Posté

bonjour,

j'ai pas pris le code qui me pose soucis :blush:, mais en attendant demain de vous le faire parvenir, je vais expliquer mon soucis.

j'ai l'intention de créer une page où les personnes pourront ajouter leur addresse mail à partir d'un formulaire; le message ainsi envoyer viendra modifier un fichier texte.

Fichier dont le contenu sera ensuite affiché un peu plus bas.

Mon soucis est que lors de l'envoi du formulaire, rien n'est ajouté au fichier texte

(avant de le mettre en ligne j'ai testé avec EasyPhp).

soit mon code est pas bon (ce que vous jugerez demain), soit j'ai lu qu'il fallait souvent modifier l'ecriture-lecture sur le repertoire de destination au niveau du serveur avec CHMOD 777. est-ce que quelqu'un peut m'expliquer

mici

Posté

oz999,

Si tu as testé cela sous EasyPhp, cela signifie que tu utilises Windows.

Et dans le cas de Windows, il FAUT ajouter un flag particulier à la fonction fopen(). Il s'agit du flag "b" (ou du flag "t").

Le manuel de php dit:

Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use 'b' to force binary mode, which will not translate your data. To use these flags, specify either 'b' or 't' as the last character of the mode parameter.

ce qui se traduit par:

Windows offre un drapeau de traduction pour le mode texte, qui traduira de manière transparente les \n en \r\n lorsque vous travaillez avec le fichier.

Vous pouvez utiliser à l'opposé le flag 'b' qui ne convertira pas vos données. Pour utiliser ces drapeaux, spécifiez soit 'b' soit 't' comme dernier caractère du paramètre de mode.

Comme ce flag est ignoré par Linux, tu peux mettre un appel à

$fp=fopen("fichier.txt","ab")

pour faire un "append" à ton fichier.

Dan

Posté

Bonjour,

Désolé de m'introduire

mais je voulais savoir 1 chose par rapport au message de dan.

Sous windows quand j'écris dans un fichier texte a l'aide d'un script php, les \n et \r sont remplacés par des petits carrées et aucun saut a la ligne n'est éfféctué.

Et je comprend pas pourquoi.

Sa veut donc dire que le 'drapeau t' est utilisé par défaut et qu'il faut que j'utise le 'b'?

Merci a +

Posté

Bonjour Manito,

J'ai personnellement toujours utilisé le flag "b" et pas le flag "t". Mais je ne génère aucun fichier teste sous Windows... et c'est sans doute la raison qui fait que je n'ai pas remarqué ce problème.

Les petits carrés viennent de l'introduction du "retour chariot" généré par Windows.

Attention aussi à transférer les fichiers générés sous windows en mode ASCII per ftp, et non en mode "BINARY". Ce mode permet la conversion automatique des caractères de fin de ligne.

Posté
Oui, moi aussi, ça me le fait...

Mais, en changeant d'éditeur de texte, les carrés s'effacent...

Bizarre bizarre.

<{POST_SNAPBACK}>

tu utilisais un éditeur qui ne reconnait pas les retours chariots (cas de NotePad)

Posté

Le meilleur éditeur pour visualiser les fichier Linux sous Windows est justement Notepad pour cette raison. Il sauve les texte sans rajouter de fioriture. Ce n'est pas -toujours- le cas de WordPad.

Dan

Posté

voilà mon code :

<form action="<? echo $PHP_SELF ?>" method="post">
<textaera cols=60 rows=5 name="message" wrap=virtual></textaera>
<input type="submit" value="Envoyer">
</form>
<?
if(isset($message)) {
$fp = fopen("contact.txt");
fwrite($fp,nl2br($message)."<p>\n");
fclose($fp);
}
?>

et donc il me suffit alors de modifier la ligne $fp=fopen comme ceci:

$fp=fopen("contact.txt","ab");

je tente :)

Posté

L'appel à fopen dans ton code n'utilise pas le flag "mode" qui est obligatoire. ;)

Il faut choisir entre "r" pour "read", "w" pour "write" ou "a" pour "append". A ces flags tu rajoutes le "b" pour éviter les problèmes sous windows.

Il y a aussi la lettre "+" mais elle n'entre pas dans le cadre de ce post ;) voir le manuel de fopen !

Posté

Moi aussi petite remarque (en forme de question) :blush: :

Le mode "A" append place le contenu obligatoirement en fin de fichier, même si on a placé le pointeur ailleurs entre temps ?

Posté

Oui.

POur placer du contenu au milieu d'autre contenu, il faut 'copier/coller', autrement dit :

- Lire le fichier,

- mettre le fichier dans une variable normale,

- placer son contenu à l'endroit désiré,

- enregistrer le contenu dans le fichier.

Mais ca va vite ;)

Posté

bon tout fonctionne c'est nicquel!!

Par contre une question : j'ai installé un mail avec envoi de fichier joint, mais ca ne fonctionne pas. il parait qu'il faut placer le dossier comme CHMOD 777, et je n'y arrive pas.

alors est-ce que vous savez si Free place une restriction?? sinon, j'ai essayé a partir de mon logiciel FTP, mais je peux pas modifier.. existe t il une autre méthode??

merci

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...