Formular Script
Enra
- php
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
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.
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
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 Formularhttp://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
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
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 ZeitstempelWie 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?
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