Enra: Formular Script

Hallo alle miteinander,

ich bräuchte mal wieder etwas hilfe.

Ich habe heute ein Formular erstellt und möchte nun, dass wenn alles ausgefüllt wurde die Daten gleich in eine andere Datei auf dem Webspace übertragen werden.

Die Formatierung für die Ausgabedatei möchte ich  auch schon vorher festlegen können.

Kann mir dabei einer helfen?
Ich konnte da bisher nichts gescheites zu finden.

Schonmal vielen Dank!

Gruß
Enra

  1. Achso und was ich vergessen habe.

    Es sollte immer eine neue Datei erstellt werden.

    Der Dateiname sollte im Idealfall anhand des ersten Formularfeldes ermittelt werden.

    1. Wo liegt denn dein Problem genau?
      Du musst als formular-ziel eine PHP-Datei definieren, und in dieser PHP-Datei schreibst du ein File mit den Werten aus dem Formular

      http://www.tizag.com/phpT/filewrite.php

      1. Wo liegt denn dein Problem genau?
        Du musst als formular-ziel eine PHP-Datei definieren, und in dieser PHP-Datei schreibst du ein File mit den Werten aus dem Formular

        http://www.tizag.com/phpT/filewrite.php

        hi pete,

        also dein link sieht schonmal vielversprechend aus.

        was ich überhaupt erstmal wissen müsste wäre wie ich die daten dann in die php datei bekomme.

        diese als formularziel zu definieren ist soweit klar, aber wie kann ich dann z.b. den Text aus dem ersten Formularfeld nehmen, um eine HTML datei mit diesen Namen zu erstellen?

        dafür bäuchte ich doch auch eine funktion die die daten aus z.b. dem ersten formularfeld herausliest oder?

        Hoffe das man so mein problem versteht, denn ganz so firm bin ich noch nicht in php....
        und krankheit kommt noch dazu :-(

        Schönes WE noch

        1. diese als formularziel zu definieren ist soweit klar, aber wie kann ich dann z.b. den Text aus dem ersten Formularfeld nehmen, um eine HTML datei mit diesen Namen zu erstellen?

          dafür bäuchte ich doch auch eine funktion die die daten aus z.b. dem ersten formularfeld herausliest oder?

          Gleich zu Beginn. Das erste Formularfeld als Filename wird nicht reichen, da dieser nicht eindeutig ist. Am Besten machst du das in Kombination mit einem Zeitstempel

          Wie du Formulare verarbeiten kannst steht hier
          http://tut.php-quake.net/formulare.html

          1. diese als formularziel zu definieren ist soweit klar, aber wie kann ich dann z.b. den Text aus dem ersten Formularfeld nehmen, um eine HTML datei mit diesen Namen zu erstellen?

            dafür bäuchte ich doch auch eine funktion die die daten aus z.b. dem ersten formularfeld herausliest oder?
            Gleich zu Beginn. Das erste Formularfeld als Filename wird nicht reichen, da dieser nicht eindeutig ist. Am Besten machst du das in Kombination mit einem Zeitstempel

            Wie du Formulare verarbeiten kannst steht hier
            http://tut.php-quake.net/formulare.html

            hi das hat mir aufjeden fall schon mal sehr weitergeholfen danke!!
            Habe es nun so gelöst (ist allerdings noch nicht perfekt... ist nur ne beta version sozusagen... )

            <?php  
            $FileName = "". $HTTP_POST_VARS['name'] .".html";  
            $ProfileOverview = "../profiles.html";  
            $name = $HTTP_POST_VARS['name'];  
            $RLname = $HTTP_POST_VARS['RLname'];  
            $country = $HTTP_POST_VARS['country'];  
              
            // erstellen  
            $fh = fopen($FileName, 'w') or die("ERR0R");  
            //html  
            $stringData = "<html><head><title>Profile -". $name ."-</title></head><body>";  
            fwrite($fh, $stringData);  
              
            $stringData = "". $name ."<br>";  
            fwrite($fh, $stringData);  
              
            $stringData = $RLname;  
            fwrite($fh, $stringData);  
              
            $stringData = $country;  
            fwrite($fh, $stringData);  
              
            $stringData = "</html></body>";  
            fwrite($fh, $stringData);  
            //close  
            fclose($fh);  
              
            //link adden  
            $fhoverview = fopen($ProfileOverview, 'a') or die("ERR0R");  
            $stringData = "<a href='./profiles/". $name .".html>". $name ."";  
            fwrite($fhoverview, $stringData);  
            fclose($fhoverview);  
              
            ?> 
            

            jetzt kommt aber eine andere Frage auf

            und zwar kann sich jeder über dieses formular ein profil erstellen was ja jetzt auch wunderbar klappt. Nachdem eine html datei für das Profil angelegt wurde, wird noch ein link in der Profilübersicht angelegt welche sich einen Ordner höher befindet.
            Wie kann ich denn jetzt verhindern, dass in der Übersicht ein Profil 2x verlinkt wird weils z.b. überarbeitet wurde?

            Oder gibt es im endeffekt eine noch bessere Lösung dafür?

          2. Hello,

            Gleich zu Beginn. Das erste Formularfeld als Filename wird nicht reichen, da dieser nicht eindeutig ist. Am Besten machst du das in Kombination mit einem Zeitstempel

            Ein Zeitstempel kann auch nicht eindeutig sein, sondern nur zufällig der einzige Request zu diesem Zeitpunkt. Der von PHP verwendete Unix-Timestamp http://www.php.net/manual/en/function.time.php ist wesentlich zu granular, der feinere http://www.php.net/manual/en/function.microtime.php könnte da schon eher zum Erfolg führen, ist aber angesichts schneller Systeme und mehrerer HTTP-Instanzen, die "gleichzeitig" laufen, immer noch zu grob.

            Sowas geht also entweder mit einem übermittelten Wunschnamen, der der dann zusammen mit dem Filemode
            "XB+" http://www.php.net/manual/en/function.fopen.php verwendet wird, also einen abfangbaren Fehler auslöst, wenn die datei schon vorhanden war, oder mit einem vom System ausgewürfelten Namen
            http://www.php.net/manual/en/function.tmpfile.php.

            Zu bedenken ist allerdings immer, dass man bei ungenügender Absicherung des Wunschnamens auf das gesamte für das Script zugängliche Filesystem zugreifen kann. Man sollte also auch Funktionen, wie basename() http://www.php.net/manual/en/function.basename.php, realpath() http://www.php.net/manual/en/function.realpath.php und pathinfo() http://www.php.net/manual/en/function.pathinfo.php auf intelligente Art mit einsetzen und die Wurzel für das Anlegen und Lesen von Dateien über das Formular auf jeden Fall statisch festlegen oder ausführlich gegenprüfen.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de