Formulardaten in Datei speichern mit eigenem Style

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Formulardaten in Datei speichern mit eigenem Style

    Hallo,
    ich bin PHP Anfänger. Ich brauche ein Formular, das die Daten in eine Datei schreibt auf meinem Server. Der Dateiname soll im Formular definierbar sein. Ich habe sogar schon einen Code geschrieben, der super funktioniert.

    Quellcode

    1. <form method="post" action="<?php print $_SERVER['PHP_SELF']; ?>">
    2. <span style="width: 200px; float: left;" >
    3. Dateiname:<br><br>
    4. Northbridge:<br><br>
    5. Codename:<br><br>
    6. Fertigung:<span class="und">&</span> Maße:<br><br>
    7. Prozessoren:<br><br>
    8. Sockel:<br><br>
    9. </span>
    10. <span style="float: clear;" >
    11. <input type="text" name="datei"><br><br>
    12. <input type="text" name="northbridge"><br><br>
    13. <input type="text" name="codename"><br><br>
    14. <input type="text" name="fertigung"><br><br>
    15. <input type="text" name="sockel"><br><br>
    16. <input type="text" name="prozessoren"><br><br>
    17. </span>
    18. <input type="submit" name="submit" value="Speichern"><br><br>
    19. </form>
    20. <?php
    21. if ($submit) {
    22. $datei = $datei.".txt";
    23. $fp = fopen($datei, 'a');
    24. fputs($fp, $anfang, strlen(anfang));
    25. $northbridge = $northbridge."\n";
    26. fputs($fp, $northbridge, strlen(northbridge));
    27. $codename = $codename."\n";
    28. fputs($fp, $codename, strlen(codename));
    29. $fertigung = $fertigung."\n";
    30. fputs($fp, $fertigung, strlen(fertigung));
    31. $sockel = $sockel."\n";
    32. fputs($fp, $sockel, strlen(sockel));
    33. $prozessoren = $prozessoren."\n";
    34. fputs($fp, $prozessoren, strlen(prozessoren));
    35. fclose($fp);
    36. echo "<span style=\"color: green; font-weight: bold;\">".$datei." wurde gespeichert!</span>";
    37. }
    38. ?>
    Alles anzeigen


    Mein Problem ist nun, dass ich die Formulardaten nicht einfach blanko in eine Datei haben will, sondern dass die Datei erstellt wird mit Head und Body. Also mit meinem eigenen Style. Zusätzlich müssen die Daten dann noch in eine Tabelle.

    Wie gehe ich da am besten vor?
  • die Frage ist: Bist du dir sicher, dass du das so lösen willst? Wenn ich das richtig verstanden hab, kann damit jeder ne php-Datei erstellen und damit dann beliebigen php-Code auf dem Server ausführen, was ihm unter Umständen reicht um den Server zu hacken, oder andere "böse" Dinge zu vollbringen (Schadcode durch deine Webseite verteilen etc.)
    Halte ich für ziemlich gefährlich jemanden einfach so in eine Datei auf dem Server schreiben zu lassen (auch wenn es nur in einer Tabelle dort landet).
    Solltest aufjedenfall dafür sorgen, dass alles wirklich in einer .txt Datei landet, indem du überprüfst ob in $datei nur alphanumerische Zeichen vorkommen.
  • Ja da werde nur ich drauf zugriff haben. Kein Anderer!

    Nochmal zum Problem:
    Meine Anfängeridee ist es das HTML Grundgerüst als Variable zu speichern. So kann ich diese jeder Datei die gespeichern werden soll vorweggeben. Also angefangen mit dem Doctype und Meta usw. (die ich ja als Variable speichere und dann mit in die Datei schreiben lasse, die erstellt werden soll), dann lasse ich die Formulardaten als Tabelle einbauen und zum Schluss eben der Rest der HTML Seite (Footer) wieder als eine Variable. Nur scheint man in einer Variable keinen großen HTML Code speichern zu können.
  • Naja, du machst dir eine Template Datei

    foo.tpl

    Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xml:lang="de"><head>
    3. <title>{codename}</title>
    4. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    5. </head>
    6. <body>
    7. {northbridge}
    8. {fertigung}
    9. </body>
    10. </html>
    Alles anzeigen


    und beim schreiben ersetzt du die "Template Variablen"

    Quellcode

    1. if (isset($_POST['submit'])) {
    2. $datei = $_POST['datei'].".txt";
    3. $fp = fopen($datei, 'w');
    4. $content = file_get_contents('foo.tpl');
    5. $replace = array(
    6. '{codename}' => $_POST['datei'],
    7. '{northbridge}' => $_POST['northbridge'],
    8. '{fertigung}' => $_POST['fertigung'],
    9. );
    10. $content = str_replace(array_keys($replace), array_values($replace), $content);
    11. fwrite($fp, $content);
    12. fclose($fp);
    13. echo "<span style=\"color: green; font-weight: bold;\">".$datei." wurde gespeichert!</span>";
    14. }
    Alles anzeigen
  • Super!

    Es waren noch zwei kleine Fehler drin bei frwite. Da fehlt ein Komma. Und isset muss ohne $ geschrieben werden. Ich musste lange suchen bis ich den Fehler fand, aber es ist ein schönes Erfolgserlebnis, wenn man es schafft.

    Vielen, vielen Dank dir nochmal D0nut.

    // UPDATE by d0nut: ich habe den Code inzwischen aktualisiert, damit andere ihn übernehmen könnten.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von x16 ()