PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Aus Formular in Datei schreiben (http://www.selfphp.de/forum/showthread.php?t=3330)

markusschmitt 13.02.2003 03:10:43

Aus Formular in Datei schreiben
 
Also ich will aus einem Formular in eine Datei schreiben.
Ich hab mehrere Textfelder (name, username, passwort, port, details)
Mit einem Link geh ich auf ein php Skript des folgendermaßen aussieht.

<?php
if (file_exists("$name.txt"))
{
print "Der FTP Server existiert im Verzeichnis bereits. Wenn nicht meld es bitte dem Admin ";
}
else
{
touch("$name.txt");
$fp = fopen("$name.txt", "w");
fwrite($fp, "$namen"+"$usernamen"+"$passwortn"+"$portn"+"details");
}
?>

Also ich will überprüfen ob die datei mit dem inhalt vom Textfeld name schon als name.txt existiert. Wenn dies nicht der Fall ist wird die Datei mit dem Inhalt des Textfeldes angelegt wird. Danach öffne ich die Datei im Schreibmodus und schreib dann meine Subjekte hinein. Wenn ich allerdings ausfür bekomm ich eine Textfile die kein Namen hat und als Inhalt den Wert 0 hat und das ist komplett falsch. Ist der Code falsch oder was hab ich falsch gemacht bzw falsch gedacht.

Mfg Markus

c4 13.02.2003 08:09:47

Da seit PHP Version 4.1 ein neues Sicherheitskonzept aktiviert ist, musst Du alle Variablen mit
"$_GET für Urlparameter
$_COOKIE für Cookies
$_FILES für hochgeladene Files
$_SERVER für Servervars (z.B. PHP_SELF)
$_ENV für Umgebungsvars" &copy; Ben20 :)
ansprechen. Also ehemals $username mit $_POST['username']
Oder Du setzt in der php.ini register_globals (o.ä.) auf true. Davon rate ich aber ab.

markusschmitt 13.02.2003 10:32:04

Also ich hab jetzt den Skript folgendermaßen umgestellt

<?php
if (file_exists($_POST['name.txt']))
{
print "Der FTP Server existiert im Verzeichnis bereits. Wenn nicht meld es bitte dem Admin brennbaer@web.de";
}
else
{
touch($_POST['name.txt']);
$fp = fopen($_POST['name.txt'], "w");
fwrite($fp, $_POST['name']+"n"+$_POST['username']"n"+$_POST['passwort']+"n"+$_POST['port']+"n"+$_POST['details']);
}
?>

Leider bekomm ich in Line10 also in der langen eine Fehlermeldung. 2te Frage: Stimmt das so das man so mit Datein arbeitun muss weil ich geb jetzt an er soll nach der variablen 'name.txt' suche aber er soll ja überprüfen ob die Datei existiert und wenn nicht die Datei neu anlegt.

Mfg Markus

markusschmitt 13.02.2003 10:34:52

hab noch einen Fehler in Line 10 gefunden und zwar hinter username'] fehlte das +.

Jetzt bekomm ich folgende Fehlermeldung:


Warning: utime failed: Permission denied in C:apachehtdocsftpftpftp.php on line 8

Warning: fopen("","w") - Permission denied in C:apachehtdocsftpftpftp.php on line 9

Warning: Supplied argument is not a valid File-Handle resource in C:apachehtdocsftpftpftp.php on line 10


Mfg markus

Ben20 13.02.2003 10:42:06

Das deutet darauf hin, dass Du keine Schreibrechte für die .txt Datei hast - überprüf mal die recht mit Deinem FTP Programm (irgendwo im rechte Maus Taste Menü sollte der Befehl chmod sein! - dort sollte es auf 755 stehen! (nötigenfalls auch 777) damit es geht!)

markusschmitt 13.02.2003 10:47:20

kann ich nicht des ist Lokal alles auf der Platte sonst würde ich einfach die schreibrechte vergeben allerdings ist des ein apache server der mit phpthriad läuft. Weißt du zufällig wo man das dort einstellen kann?

Mfg Markus

Ben20 13.02.2003 10:51:36

Unter Windows kannst sowas nicht vergeben - schau mal ob die Datei schreibgeschützt ist (oder evtl. einem anderen User gehört falls Du NT hast!)

EDIT!

Moment - da fällt mir was auf!

Warning ... fopen("", "w")

wird die Datei überhaupt richtig angelegt? Laß doch mal touch() weg!

markusschmitt 13.02.2003 10:58:02

Denk ich auch das es nicht am Schreibmodus liegt sondern schon beim Anlegen schiefgeht wegen der txt in der Variablen. So würde die Variable falsch übergeben werden aber wie schaff ich es das er die Textfile mit dem Variablennamen anlegt?

Schonmal Danke für deine Hilfe

Mfg Markus

markusschmitt 13.02.2003 11:07:01

also ich hab touch jetzt weggemacht und das ist das Ergebnis:

Warning: fopen("","w") - No error in C:apachehtdocsftpftpftp.php on line 9

Warning: Supplied argument is not a valid File-Handle resource in C:apachehtdocsftpftpftp.php on line 10

Ben20 13.02.2003 11:46:45

Du darfst nicht

<?php
$_POST['name.txt']


nehmen. Sonst versucht er den Inhalt des Eingabefeldes mit dem namen name.txt zu lesen - und das Feld gibts ja nicht. Du mußt das so machen


$_POST["name"] . ".txt"


Dann bekommst Du als Dateinamen den Wert das Eingabefeldes name plus ein .txt hinten dran!


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:02:06 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.