Frage Einfacher PHP-Editor für Textdateien


Ich habe eine Website für einen Kunden entwickelt und möchte einen kleinen Teil der Hauptseite in einem Backend-Lösungstyp bearbeiten können. Als Lösung möchte ich einen sehr einfachen Editor (domain.com/backend/editor.php) hinzufügen, der, wenn Sie ihn besuchen, ein Textfeld mit dem Code und einer Schaltfläche zum Speichern hat. Der zu bearbeitende Code wird als TXT-Datei festgelegt.

Ich würde annehmen, dass so etwas in PHP einfach zu programmieren wäre, aber Google hat mir dieses Mal nicht geholfen, also hoffe ich, dass es hier jemanden geben könnte, der mich in die richtige Richtung weisen würde. Beachten Sie, dass ich keine Erfahrung in PHP-Programmierung, nur HTML und grundlegende Javascript habe, also bitte gründlich in jeder Antwort, die Sie bereitstellen.


18
2017-11-22 12:38


Ursprung


Antworten:


Sie erstellen ein HTML-Formular, um den Inhalt der Textdatei zu bearbeiten. Wenn es gesendet wird, aktualisieren Sie die Textdatei (und umleiten Sie erneut an das Formular um F5 / Refresh Warnungen zu verhindern):

<?php

// configuration
$url = 'http://domain.com/backend/editor.php';
$file = '/path/to/txt/file';

// check if form has been submitted
if (isset($_POST['text']))
{
    // save the text contents
    file_put_contents($file, $_POST['text']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
    exit();
}

// read the textfile
$text = file_get_contents($file);

?>
<!-- HTML form -->
<form action="" method="post">
<textarea name="text"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" />
<input type="reset" />
</form>

35
2017-11-22 12:45



Um die Datei zu lesen:

<?php
    $file = "pages/file.txt";
    if(isset($_POST))
    {
        $postedHTML = $_POST['html']; // You want to make this more secure!
        file_put_contents($file, $postedHTML);
    }
?>
<form action="" method="post">
    <?php
    $content = file_get_contents($file);
    echo "<textarea name='html'>" . htmlspecialchars($content) . "</textarea>";
    ?>
    <input type="submit" value="Edit page" />
</form>

3
2017-11-22 12:43



Sie suchen grundsätzlich nach einem ähnlichen Konzept wie das einer Kontaktform oder Ähnlichem.

Wende die gleichen Prinzipien aus einem Tutorial an dieses und statt per E-Mail mit mail Besuche die Dateifunktionen von PHP.net.


0
2017-11-22 12:42



Was hast du dann auf Google? PHP-Datei schreiben gibt mir ein paar Millionen Treffer.

Wie in der Handbuch zum fwrite():

<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// the content of 'data.txt' is now 123 and not 23!
?>

Aber um ehrlich zu sein, sollten Sie zuerst ein PHP-Buch aufheben und es versuchen. Sie haben keine einzige Anforderung gepostet, außer dass Sie ein Textfeld (textarea, ich meine?) In eine TXT-Datei schreiben möchten. Das wird es tun:

<?php
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
    $handle = fopen("home.txt", 'w') or die("Can't open file for writing.");
    fwrite($fh, $_POST['textfield']);
    fclose($fh);
    echo "Content saved.";
}
else
{
    // Print the form
    ?>
    <form method="post">
        <textarea name="textfield"></textarea>
        <input type="submit" />
    </form>
    <?php
}

Beachten Sie, dass dies genau Ihrer Beschreibung entspricht. Es liest nicht die Datei beim Drucken des Formulars (also jedes Mal, wenn Sie den Text bearbeiten möchten, müssen Sie von vorne beginnen), überprüft es die Eingabe für nichts (möchten Sie den Benutzer in der Lage sein, HTML zu veröffentlichen ?), es hat keine Sicherheitsprüfung (jeder kann darauf zugreifen und ändern Sie die Datei), und in keiner Weise liest es die Datei für die Anzeige auf der gewünschten Seite.


0
2017-11-22 12:41



Das erste, was zu tun ist, um die Informationen zu erfassen, wäre die einfachste Möglichkeit, dies zu tun, wäre die Verwendung eines HTML-Formulars mit einem TEXTAREA:

<form method='post' action='save.php'>
  <textarea name='myTextArea'></textarea>
  <button type='submit'>Go</button>
</form>

Auf 'save.php' (oder wo auch immer) können Sie die Informationen aus dem Formular sehen:

<?php
  echo $_POST['myTextArea']
?>

Um tatsächlich eine Datei zu erstellen, werfen Sie einen Blick auf die fopen / fwrite-Befehle in PHP, ein weiteres simplifiziertes Beispiel:

<?php 
  $handle = fopen("myFile.txt","w");
  fwrite($handle,$_POST['myTextArea'];
  fclose($handle);
?>

WARNUNG: Dies ist eine extrem simple Antwort! Vielleicht möchten Sie Ihr Formular und Ihre Datei schützen oder einige andere Dinge tun .... Alles was Sie tun werden ist GENAU zu schreiben, was im Formular in eine Datei geschrieben wurde. Wenn Sie verschiedene Dateinamen angeben, überschreiben, anhängen, auf schlechten Inhalt / Spam usw. prüfen möchten, müssen Sie mehr arbeiten.

Wenn Sie einen Editor haben, der öffentlich zugänglich ist und Inhalte auf einer Webseite veröffentlicht, dann ist der Spamschutz eine DEFINITE Anforderung, oder Sie werden es bereuen!

Wenn Sie nicht daran interessiert sind, PHP zu lernen, sollten Sie darüber nachdenken, einen professionellen Entwickler zu beauftragen, sich um die Programmierung zu kümmern.


0
2017-11-22 12:49



Ich hatte ein ähnliches Bedürfnis, also haben wir eine benutzerfreundliche Lösung namens stringmanager.com entwickelt, die wir für all unsere Projekte und Orte verwenden, wo CMS nicht effektiv ist.

Von Ihrer Seite müssen Sie nur die Zeichenfolge im Code markieren, d. H. Von:

echo "Text, den er bearbeiten möchte"; zu:

Echo _t ("S_Texthewantstoedit");

stringmanager.com kümmert sich um den Rest. Ihr Kunde kann diesen bestimmten Textbereich in unserer Online-Anwendung verwalten und synchronisieren, wo immer er möchte. Fast vergessen zu erwähnen, es ist völlig kostenlos.


0
2018-02-07 21:33



<?php
$file = "127.0.0.1/test.html";
$test = file_get_contents('1.jpg', 'a');
if (isset($_POST['test'])) {
file_put_contents($file, $_POST["test"]);
};
?>
<form action="" method="post">
<textarea id="test" name="test" style="width:100%; height:50%;"><? echo "$test"; ?></textarea>
<input type="submit" value="submit">
</form>

Hatte keine Zeit, um es zu beenden, einfachste Möglichkeit, wird mehr hinzufügen, wenn gewünscht.


-1
2017-07-22 04:25