Charger un fichier, le modifier et l'enregistrer (côté serveur) de PHP
J'ai eu une page qui se charge code html à partir d'un fichier texte dans un textarea et j'ai besoin d'être en mesure d'enregistrer le contenu de l'aide d'un script.
J'utilise un script PHP pour charger le code dans un fichier et de l'écho à la textarea, mais comment puis-je envoyer le contenu du script et l'enregistrer dans le même fichier ou dans un fichier avec un nouveau nom?
Je pensais si getElementById pourrait m'aider mais je ne suis pas sûr de savoir comment.
Le chargement du script(il a la capacité de supprimer des fichiers trop)
//The file hierarchy:
//
//Web root - admin - This file
// - pages - in here are the page text files
//The variable pagesList is the filename chosen in a dropdown list earlier
$page = $_GET["pagesList"];
$action = $_GET["action"];
//get the path to the page( all pages are in a folder named 'pages')
$filename = dirname(dirname(__FILE__))."/pages/".$page;
if(file_exists($filename) and is_file($filename)){
//If I want to load a file
if($action == "open"){
$f = fopen($filename,"rt");
$content = fread($f, filesize($filename));
echo $content;
@fclose($f);
//If I want to delete a file
}elseif($action == "delete" && is_file($filename)){
//move the working directory to where the file is
$old = getcwd();
chdir(dirname(dirname(__FILE__))."/pages/");
//----
if(unlink($filename))
echo "File deleted,".$filename;
else
echo "Error deleting file!";
//change back the working directory to where it was
chdir($old);
//If I want to save a file
}elseif($action == "save"){
if(file_exists($filename)){
//Unknown script, need help!
}else{
}
}
}
Le textarea est une seule ligne avec un inclure:
<textarea id="html_content" style="width:600;height:200;"><?php include("loader.php") ?></textarea>
Pour résumer: j'ai besoin d'aide pour obtenir le contenu d'un textarea pour un script pour enregistrer plus tard.
EDIT: Grâce à davidkonrad j'ai juste eu à ajouter un peu de POST reçoit dans le script et ajouter file_put_content avec le contenu envoyé.
Le problème qui surgissent, c'est que jQuery apparemment met \ avant chaque "ou". Qui bousille tout le code html qui est censé être propre et valide. Je vais devoir remplacer le \" avec " en quelque sorte, str_replace ne sera pas coupé. Des idées?
EDIT2: Merci encore à davidkonrad qu'il fixe en utilisant encodeURIComponent(jQuery) client et urldecode(PHP) serverside.
Vous devez vous connecter pour publier un commentaire.
Mise à jour, OK si vous ne sont tout simplement en doute la façon de soumettre un textarea pour votre loader.php :
loader.php maintenant que vous avez
Qui est ici "test.html", "enregistrer" et le texte tapé dans le textarea. l'utilisation de ces variables dans votre
if
..else
boucle comme ci-dessus, par exemple,Les inconvénients est
<textarea>
..</textarea>
une fois qu'elle est insérée (ce que je comprends, le HTML est une partie de loader.php)NB : Sauf s'il y a une raison particulière, vous n'avez pas à vérifier si un fichier existe déjà avant d'écrire pour elle. Et pense toujours à voyager à travers les répertoires il fait juste un peu plus compliqué 🙂 Est
/pages/
pas seulement un chemin relatif?Il n'a pas besoin d'être si compliqué. Je voudrais utiliser un plus simple et l'approche structurée, composée de
file_put_contents
,file_get_contents
etunlink
, y compris quelques petites erreurs de manipulation$.ajax
appels (jQuery) en appelant le au-dessus de la classe PHPDe travail suivants exemple effectue d'enregistrer, de charger et supprimer des fichiers HTML à un directoty
/files
, qui vous devez donner RW autorisations.file.php
file.html, balisage
file.html script :
Le contenu HTML (les balises, les entités HTML) est maintenu à enregistrer par l'utilisation de
encodeURIComponent
eturldecode
. Essayez-le vous-même, et de considérer cela comme la base pour un système plus complexe. Si vous souhaitez créer un nouveau fichier, saisissez un nouveau nom de fichier dans la zone nom de fichier. Si vous voulez charger un fichier, tapez le nom de fichier dans la zone nom de fichier. Je pense que file_put_contents etc est beaucoup plus robuste que de traiter avec les descripteurs de fichiers,chdir(dirname(dirname(__FILE__))."/pages/");
(??) et ainsi de suite.encodeURIComponent
, serversideurldecode
. C'est plutôt normal, de s'échapper (regarder) - ne jamais essayer de le "résoudre" manuellement par str_replace ou quoi que ce soit d'autre. Les deux langues, le javascript et le PHP, est conçu pour traiter avec que par le biais de fonctions et d'autres.if (!file_put_contents(x,y)) {
- semble assez simple pour moiessayez d'utiliser php fputs fonction pour enregistrer le fichier