Comment puis-je enregistrer des Fichiers TXT à partir d'un code HTML textarea, à l'aide de PHP?
Je suis en train de faire un fichier texte système de stockage pour mon site.
Voici ce que j'ai jusqu'à présent.
J'ai obtenu quelques pièces à travailler, mais je reçois beaucoup plus d'erreurs après avoir procédé à quelques changements que j'ai pensé que cela pourrait aider.
Je suis en train d'accomplir cette tâche sans changer de pages ou l'url.
<!DOCTYPE HTML>
<html>
<body>
<?php
if (isset($_POST)){
//Save File
$file = fopen($_POST['filename'] & ".txt","r+");
$text = $_POST["textdata"];
file_put_contents($file, $text);
fclose($file);
//Open File
$file = fopen($_POST['filename'] & ".txt", "r") or exit("Unable to open file.");
while(!feof($file)){
echo fgets($file). "<br />";
}
fclose($file);
}
echo '
<form name="savefile" method="post" action="' . $_SERVER['PHP_SELF'] . '">
File Name: <input type="text" name="filename" value=""><br/>
<textarea rows="20" cols="100" name="textdata"></textarea><br/>
<input type="submit" name="submit" value="Save Text to Server">
</form>
<br/><hr style="width: 100%; height: 4px;"><br/>
<form name="openfile" method="post" action="' . $_SERVER['PHP_SELF'] . '">
Open File: <input type="text" name="filename" value="">
<input type="submit" name="submit" value="Submit File Request">
</form>';
?>
</body>
<html>
Si le seul moyen est de le rediriger vers une page php, puis l'envoyer en arrière, c'est bien, mais je n'ai aucune idée de comment le faire, (même s'il est probablement BEAUCOUP plus simple)
Merci pour toute aide ou des conseils que vous pouvez me fournir!
-Jake
- Cela fonctionne? Quelles sont les erreurs que vous obtenez?
- si vous ne souhaitez pas modifier les pages que vous cherchez une solution AJAX. De nombreuses façons de le faire et de nombreuses bibliothèques pour vous soutenir. Jetez un oeil à PrototypeJS et JQuery.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, merci sooo beaucoup pour l'aide!
Je l'apprécie vraiment quand ceux qui sont plus expérimentés peuvent aider un newbie de temps en temps.
Après avoir passé quelque temps à bricoler avec mon code avec certaines des suggestions de vous, j'ai enfin eu à le faire fonctionner! 😀
Je vais laisser le code final ici au cas où quelqu'un d'autre tombe sur ce sujet avec un problème similaire.
Espérons que cette aide!
-Jake
Comme Geek Num 88 dit, à l'aide d'AJAX (ou même les Websockets) permettra d'éviter le rechargement de la page. Mais vous êtes déjà presque là avec ce code. Le file_put_contents premier argument doit être une chaîne de caractères pointant vers le chemin d'accès du fichier. Ce que vous donnez, c'est maintenant une ressource d'un fichier ouvert.
Il suffit donc de retirer la commande fopen et juste assigner le nom du fichier à $fichier.
Petite astuce: la lecture du fichier est tout aussi simple avec l'équivalent file_get_contents. Je ne vois certaines implications en matière de sécurité avec cette application si. Il faut donc toujours le filtre d'entrée et de sortie d'échappement. Mais c'est un tout autre sujet.
Bon codage!
L'écriture, à une partie seulement des besoins à exécuter si la soumission est à partir de la première forme. Le code ci-dessous va écrire le fichier si elle est faite à partir de la première forme, et va lire le fichier si elle est faite à partir de la deuxième forme.
Si vous avez besoin de faire cela sans avoir à recharger la page, vous devez utiliser une requête Ajax post pour le code ci-dessus, à partir de la forme.
$file = fopen($_POST['filename'] & ".txt","r+");
Caractère de concaténation en PHP . (dot) au lieu de &. Le nom de fichier est défini par l'utilisateur de sorte que vous devez appeler fopen avec le mode "w", qui va essayer de créer le fichier dans le cas où il n'existe pas.
Tests
isset($_POST)
retourne toujours true, plutôt de testisset($_POST['filename'])
.