Camping_RIDER: Seiteneingaben in externer Datei speichern nur mit JS?

Beitrag lesen

Aloha ;)

Da stehst du jetzt vor einem Problem. Leider ist es so, dass die einzige (mir bekannte, imho kenn ich aber alle) Möglichkeit zur persistenten Speicherung von Daten allein durch JavaScript die folgenden sind:

  • URI-Missbrauch - Speichern des Inhalts in GET-Parametern und Abspeichern des Links
  • Cookies - Inhalt in Cookie speichern und während dessen Lebensdauer verfügbar haben

Das ist aber beides sicher nicht das, was für dich praktikabel ist. Schon allein deshalb, weil diese persistente Speicherung nicht auf Ebene der Seite, sondern auf dem Client des einzelnen Anwenders passiert.

Vorschlag: machs lieber gleich richtig. Das ist kein Hexenwerk. Und allzu viel können muss man für einfache Anwendungen (insbesondere für solche, die nicht online verfügbar sind) auch nicht. Du brauchst dafür nur einen Server lokal bei dir auf dem Rechner - meine Wahl ist da immer der xampp. xampp gibts sogar portabel. Für so ganz so einfache Sachen brauchst du eigentlich nicht mal so viel wie der xampp kann, ist aber egal.

Jedenfalls: xampp einfach installieren, dann deine Seite im Ordner htdocs ablegen (was da schon drin ist kannst du löschen) und deine Seite in Zukunft über http://localhost abrufen. Für deine Seite ändert sich dabei nichts. Das Speichern übernimmt ein einfaches PHP-Skript save.php, in dem steht:

<?php  
    if (!isset($_POST['content']) OR !isset($_POST['filename'])) die;  
  
    $content = $_POST['content'];  
  
    $filename = 'saves/'.$_POST['filename'];  
  
    $i = 0;  
  
    while (is_file($filename.$i)) {  
        $i++;  
    }  
  
    file_put_contents($filename.$i.'.txt',$content);  
  
    header('Location: ' . $_SERVER['HTTP_REFERER']);  
  
?>

Natürlich musst du den Ordner saves zunächst noch anlegen. Dann kannst du ein Speichern von Inhalten als Textdate ganz einfach dadurch auslösen, dass du ein Formular mit den Feldnamen content und filename per POST nach save.php schickst. Oder durch folgende JS Funktion (nicht-optimiert, klar):

function save(content,filename) {  
    var xhr = new XMLHttpRequest();  
  
    xhr.open('POST','save.php',true);  
  
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
  
    xhr.send('content='+urlencode(content)+'&filename='+urlencode(filename));  
  
}

Was xhr ist, kannst du bei Interesse auf Wikipedia nachlesen. Codebeispiele sind nicht getestet, laufen aber hoffentlich (sonst meldet sich sicher jemand mit Korrekturen). Natürlich sind das Minimalbeispiele für ganz grundlegende Funktionalität.

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[