[erledigt] Textdatei online bearbeiten

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

[erledigt] Textdatei online bearbeiten

Beitrag von GregorS » 11.12.2023 20:27:01

Hallo allerseits!

Ich programmiere gerade einen sehr schlichten* Kalender. Basis ist ein CGI-Programm, das Sachen wie Feier- und Geburtstage aus simplen Textdateien holt:

Code: Alles auswählen

# holidays.txt
#
# Feiertage und Ähnliches
#
# Format:
#
# dd.mm.yy.n=Bezeichnung
#
# dd ist der Tag
# mm ist der Monat
# yy ist das Jahr
# n gibt an, ob das ein arbeitsfreier Tag ist (0=nein, 1=ja)

# Feiertage 2023
01.01.23.1=Neujahr
06.01.23.1=Hl. drei Könige
20.03.23.0=23:25 Frühlingsanfang
07.04.23.0=Karfreitag
09.04.23.1=Ostersonntag
10.04.23.1=Ostermontag
01.05.23.1=Maifeiertag
...
Eine solche Datei möchte ich im Webbrowser bearbeiten können. Kennt jemand ein (CGI-) Skriptchen o.ä., mit dem man das machen kann? Die Suche im Netz war auch nach Stunden erfolglos - ist mein Ansinnen derart exotisch?!

TIA

Gregor

*mit „schlicht“ meine ich https://test.szaktilla.de/dezember.html. Das ist pures HTML.
Zuletzt geändert von GregorS am 16.12.2023 04:27:05, insgesamt 1-mal geändert.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

homer65
Beiträge: 100
Registriert: 01.04.2005 16:29:26

Re: Textdatei online bearbeiten

Beitrag von homer65 » 15.12.2023 13:24:34

Hallo Gregor,
kannst Du in Java programmieren?
Falls ja, könnte ich Dir mein Kalender Programm als Anregung zur Verfügung stellen.
Mit freundlichen Grüßen
Christian

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Textdatei online bearbeiten

Beitrag von thoerb » 15.12.2023 13:30:02

GregorS hat geschrieben: ↑ zum Beitrag ↑
11.12.2023 20:27:01
Eine solche Datei möchte ich im Webbrowser bearbeiten können. Kennt jemand ein (CGI-) Skriptchen o.ä., mit dem man das machen kann? Die Suche im Netz war auch nach Stunden erfolglos - ist mein Ansinnen derart exotisch?!
Siehe hier: viewtopic.php?t=185159&start=325#p1347940

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Textdatei online bearbeiten

Beitrag von uname » 15.12.2023 17:59:51

Neben dem im Link verlinkten Tiny File Manager kann man natürlich auch selbst was schreiben.

Ich habe mal was programmiert siehe NoPaste-Eintrag42048. Wirklich toll ist das Programm nicht., Eine andere Version dieser Software von mir hat sogar eine Versionsverwaltung. Probiere erst mal diese Version aus und wenn sie gefällt, melde dich gerne wieder. Einfach "holiday.php" ins selbe Verzeichnis kopieren und mit Aufruf von "holiday.php" dann im Textfeld "holiday.txt" editieren. Könnte sein, dass du den Dateinamen anpassen musst. Ich glaube deine Datei heisst "holidays.txt".

Vielleicht kann mal jemand über das Script schauen und Verbesserungen posten. Ich bin nicht so der Programmierer. Könnte sein, dass ich nicht alle Fehler korrekt abfange.

Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Textdatei online bearbeiten

Beitrag von GregorS » 16.12.2023 01:28:48

Danke für Eure Antworten!

Ich programmiere bevorzugt C++. Und der Kalender ansich funktioniert ja auch schon. Es geht mir gerade lediglich darum, die Nur-Text-Dateien zu bearbeiten, aus denen die Einträge generiert werden. Es dauert nur blöderweise rund 1040 Seiten, bis ich zu dem Teil komme, der mich wirklich interessiert (es geht um ein Buch, so'n Papierding, gell).

Und meine eigenen Versuche mittels Shell-CGIs scheitern - warum, ist mir gerade nicht klar.

Das PHP-Skriptchen liest sich echt gut, nur erscheint lediglich ein leeres Textfeld mit Submit-Button darunter. Immerhin ist es der Grund dafür, dass ich nach vielen Jahren mal wieder meine PHP4-Referenz aufgeschlagen habe. Da habe ich dann entdeckt, dass PHP einen Unterschied zwischen einfachen und doppelten Anführungszeichen macht. Aber egal, was ich im Skriptchen angestellt habe, der Text wurde anscheinend nicht geladen.

Der Tiny File Manager ist ein wirklich nützliches Ding, nur: Wo gibt's da einen Editor o.ä.? Oder habe ich nur nicht gründlich genug gesucht?!

Gruß

Gregor

PS: Inzwischen habe ich ein bisschen mehr Zeit mit dem Tiny File Manager verbracht und entdeckt, was ich zuerst übersehen hatte. Thema erledigt.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: [erledigt] Textdatei online bearbeiten

Beitrag von uname » 16.12.2023 07:57:21

GregorS hat geschrieben:Das PHP-Skriptchen liest sich echt gut, nur erscheint lediglich ein leeres Textfeld mit Submit-Button darunter.
Wenn die Datei leer ist oder nicht existiert, dann sollte das Feld auch leer sein. Vielleicht ist der Dateiname falsch. Aktuell ist kein Pfad angegeben, so dass sich die Datei im gleichen Ordner befinden muss. Du kannst ja mal im Script die Datei auf "test.txt" ändern und es mit einer Testdatei probieren.
GregorS hat geschrieben:Da habe ich dann entdeckt, dass PHP einen Unterschied zwischen einfachen und doppelten Anführungszeichen macht.
Aktuell weiß ich zwar nicht welchen Zusammenhang du hier meinst. Aber mein PHP-Wissen ist auch gering obwohl ich vor einiger Zeit ein ganzes CMS in PHP in Verbindung mit Bootstrap sowie ein paar andere PHP-Webseiten (aufgrund dynamischer Inhalte) mit W3.CSS programmiert habe.
GregorS hat geschrieben:Aber egal, was ich im Skriptchen angestellt habe, der Text wurde anscheinend nicht geladen.
Wie geschrieben. Dateiname korrigieren und PHP-Script im selben Pfad wie die Textdatei oder Pfad (am besten relativ und nicht absolut) mit angeben. Bitte probiere es mal mit einer Testdatei aus. Ich nutze das Script z. B. um eine CSV-Dateien zu editieren, die ich in anderen Scripten wie z. B. meinem Bookmarkscript einlese.
GregorS hat geschrieben:Der Tiny File Manager ist ein wirklich nützliches Ding,
Ja der ist wirklich gut. Nachteil ist vielleicht, dass er diverse JavaScript-Bibliotheken von CDNs nachlädt. Auch sollte man sich überlegen, ob man wirklich Google zur Anzeige z. B. von PHP verwenden möchte. Aber das kann man in dem Programm aktivieren bzw. deaktivieren. Auch wenn Tiny File Manager eine integrierte Benutzerverwaltung hat, verwende ich dann doch lieber .htaccess.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: Textdatei online bearbeiten

Beitrag von thoerb » 16.12.2023 12:58:15

uname hat geschrieben: ↑ zum Beitrag ↑
15.12.2023 17:59:51
Vielleicht kann mal jemand über das Script schauen und Verbesserungen posten. Ich bin nicht so der Programmierer. Könnte sein, dass ich nicht alle Fehler korrekt abfange.
Ich habe jetzt auch schon länger nichts mehr mit PHP gemacht, aber was ich sagen kann, die Eingabe sollte auf jeden Fall validiert werden. Gib mal folgendes in das Textfeld ein und klicke dann auf save:

Code: Alles auswählen

</textarea><script>alert("Achtung Hackerangriff!")</script>
Auf einem öffentlichen Webserver würde ich so etwas nicht machen, wenn ich mir nicht wirklich sicher bin. Dann lieber die Datei mit scp/sftp herunterladen, editieren und wieder hochladen. Ist zwar etwas umständlicher aber dafür wesentlich sicherer.

Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: [erledigt] Textdatei online bearbeiten

Beitrag von GregorS » 16.12.2023 19:47:02

uname hat geschrieben: ↑ zum Beitrag ↑
16.12.2023 07:57:21
GregorS hat geschrieben:Da habe ich dann entdeckt, dass PHP einen Unterschied zwischen einfachen und doppelten Anführungszeichen macht.
Aktuell weiß ich zwar nicht welchen Zusammenhang du hier meinst. Aber mein PHP-Wissen ist auch gering obwohl ich vor einiger Zeit ein ganzes CMS in PHP in Verbindung mit Bootstrap sowie ein paar andere PHP-Webseiten (aufgrund dynamischer Inhalte) mit W3.CSS programmiert habe.
Sorry für die Verwirrung. Ich Depp hätte weiterlesen sollen. Dann hätte ich das mit dem Punkt-Operator bei/für Strings gelesen. Nunja, auch ich war mal ziemlich „tief“ in PHP drin und es ist Jahre her, seit ich mich intensiv mit HTML, CSS u. Co. beschäftigt habe. Man kann ja leider immer nur einen Bruchteil dessen tun, woran man besonders viel Spaß hat, gell ...
GregorS hat geschrieben:Aber egal, was ich im Skriptchen angestellt habe, der Text wurde anscheinend nicht geladen.
Wie geschrieben. Dateiname korrigieren und PHP-Script im selben Pfad wie die Textdatei oder Pfad (am besten relativ und nicht absolut) mit angeben.
Was das angeht, habe ich alle Möglichkeiten durch.
Bitte probiere es mal mit einer Testdatei aus. Ich nutze das Script z. B. um eine CSV-Dateien zu editieren, die ich in anderen Scripten wie z. B. meinem Bookmarkscript einlese.
Momentan ist diesbezüglich bei mir sowieso alles im debug-/test-Modus und kann quasi ohne Verlust komplett gelöscht werden. Wenn ich kapiert habe, woran's bei mir gerade scheitert, baue ich den Kram eh noch mal neu auf. EDIT: Was Du schreibst, klingt für mich arg danach, dass es an meiner Datei liegt. Ich werde die mal durch diverse iconvs schicken

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: [erledigt] Textdatei online bearbeiten

Beitrag von uname » 17.12.2023 06:53:18

Ok. Versuch doch mal diese Version. Nutze hierfür auf deinem Webserver einen eigenen Testordner "test". Lege die beiden Dateien an. Rufe anschließend test/test.php auf.

test/test.txt

Code: Alles auswählen

Hier steht ein Text der im Textfeld dann angezeigt werden sollte und geändert werden kann
test/test.php

Code: Alles auswählen

        <?php
          echo '<!DOCTYPE HTML>';
          echo '<html lang="de">';
          echo '<head>';
          echo '<meta charset="utf-8">';
          echo '</head>';
          echo '<body>';
         
          $filename="test.txt";
          $save_file = $_POST['save_file'];
          $content = $_POST['content'];
         
        if($save_file)
        {
          $fp = @fopen($filename, "w");
          if ($fp)
          {
            fwrite($fp, $content);
            fclose($fp);
          }
        }
        else
        {
          if ($fp)
          {
            $fp = @fopen($filename, "r");
            $content = file_get_contents ($filename);
            fclose($fp);
          }
        }

        echo '<form method=post action="' . $_SERVER['PHP_SELF'] . '?">';
        echo '<textarea name="content" cols="150" rows="20">' . $content . '</textarea>';
        echo '<br>';
        echo '<input type="submit" name="save_file" value="Save"> ';
        echo '</form>';
        echo '</body>';
        echo '</html>';
        ?>

Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: [erledigt] Textdatei online bearbeiten

Beitrag von GregorS » 17.12.2023 08:51:39

uname hat geschrieben: ↑ zum Beitrag ↑
17.12.2023 06:53:18
Ok. Versuch doch mal diese Version. Nutze hierfür auf deinem Webserver einen eigenen Testordner "test". Lege die beiden Dateien an. Rufe anschließend test/test.php auf.
Bevor ich das Tippen anfange, habe ich mir den Code mal durchgelesen. Müsste vor dem markierten if (s. unten) nicht ein Negations-Dingens (à la !=) stehen?

Gruß

Gregor
...
test/test.php

Code: Alles auswählen

        <?php
          echo '<!DOCTYPE HTML>';
          echo '<html lang="de">';
          echo '<head>';
          echo '<meta charset="utf-8">';
          echo '</head>';
          echo '<body>';
         
          $filename="test.txt";
          $save_file = $_POST['save_file'];
          $content = $_POST['content'];
         
        if($save_file)
        {
          $fp = @fopen($filename, "w");
          if ($fp)
          {
            fwrite($fp, $content);
            fclose($fp);
          }
        }
        else
        {
          if ($fp) <--------------------############################
          {
            $fp = @fopen($filename, "r");
            $content = file_get_contents ($filename);
            fclose($fp);
          }
        }

        echo '<form method=post action="' . $_SERVER['PHP_SELF'] . '?">';
        echo '<textarea name="content" cols="150" rows="20">' . $content . '</textarea>';
        echo '<br>';
        echo '<input type="submit" name="save_file" value="Save"> ';
        echo '</form>';
        echo '</body>';
        echo '</html>';
        ?>
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: [erledigt] Textdatei online bearbeiten

Beitrag von uname » 17.12.2023 09:59:26

Leider war der Code etwas fehlerhaft. Eigentlich geht das viel einfacher. Auch habe ich beim Schreiben der Datei den Code optimiert. Ob tatsächlich korrekt gespeichert wurde, wird jedoch weiterhin nicht überprüft.

Code: Alles auswählen

       <?php
          echo '<!DOCTYPE HTML>';
          echo '<html lang="de">';
          echo '<head>';
          echo '<meta charset="utf-8">';
          echo '</head>';
          echo '<body>';
         
          $filename="test.txt";
          $save_file = $_POST['save_file'];
          $content = $_POST['content'];
         
        if($save_file)
        {
          $fp = @fopen($filename, "w");
          if(isset($fp))
          {
            fwrite($fp, $content);
            fclose($fp);
          }
        }
        else
        {
            $content = file_get_contents ($filename);
        }

        echo '<form method=post action="' . $_SERVER['PHP_SELF'] . '?">';
        echo '<textarea name="content" cols="150" rows="20">' . $content . '</textarea>';
        echo '<br>';
        echo '<input type="submit" name="save_file" value="Save"> ';
        echo '</form>';
        echo '</body>';
        echo '</html>';
        ?>
 

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: [erledigt] Textdatei online bearbeiten

Beitrag von uname » 17.12.2023 10:10:03

Ich habe den Code noch mal durch eine AI optimieren lassen. Dadurch wird $fp gar nicht mehr benötigt. :mrgreen:

Code: Alles auswählen

<!DOCTYPE HTML>
<html lang="de">
<head>
<meta charset="utf-8">
</head>
<body>
 
<?php
$filename = "test.txt";
$save_file = $_POST['save_file'] ?? false;
$content = $_POST['content'] ?? '';

if ($save_file && $content) {
    file_put_contents($filename, $content);
} else {
    $content = file_get_contents($filename);
}

echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '">';
echo '<textarea name="content" cols="150" rows="20">' . htmlspecialchars($content) . '</textarea>';
echo '<br>';
echo '<input type="submit" name="save_file" value="Save"> ';
echo '</form>';
?>
</body>
</html>
Zuletzt geändert von uname am 17.12.2023 10:10:55, insgesamt 1-mal geändert.

Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: [erledigt] Textdatei online bearbeiten

Beitrag von GregorS » 17.12.2023 10:10:39

uname hat geschrieben: ↑ zum Beitrag ↑
17.12.2023 09:59:26
Leider war der Code etwas fehlerhaft....
Dafür funktioniert der neue perfekt. Danke!

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: [erledigt] Textdatei online bearbeiten

Beitrag von uname » 17.12.2023 10:11:23

Super. Probiere auch gleich noch die Version der KI / AI aus. Die KI hat auch gleich htmlspecialchars verwendet, um einige Sicherheitsrisiken zu umgehen. :mrgreen:

Anpassungen der KI:
Verwendung des Null-Coalescing-Operators ?? zur Überprüfung, ob die POST-Variablen save_file und content vorhanden sind und ggf. den Standardwert festlegen.
Verwendung der Funktion file_put_contents() anstelle von fopen(), fwrite() und fclose() zum Schreiben des Inhalts in die Datei.
Verwendung der Funktion htmlspecialchars() für das Inhaltsfeld, um HTML-Tags im Benutzerinput zu maskieren.
Korrekte Verwendung der Anführungszeichen im HTML-Formular-Tag method="post".

Und das muss ich mir von einer Maschine sagen lassen.

Benutzeravatar
GregorS
Beiträge: 2626
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: [erledigt] Textdatei online bearbeiten

Beitrag von GregorS » 17.12.2023 10:17:41

uname hat geschrieben: ↑ zum Beitrag ↑
17.12.2023 10:11:23
Super. Probiere auch gleich noch die Version der KI / AI aus.
Funktional sind die Versionen identisch.
... Und das muss ich mir von einer Maschine sagen lassen.
Dafür kann die keinen Müll raustragen. KI taugt nix.

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Antworten