Dateien, generell
Auf unserem Testsystem beschäftigen uns nur Windows-Dateien.
Linux-Dateien mit Ihren erweiterten Eigenschaften wie
Eigentümer, Gruppe, Ausführrechte usw.. können in PHP
auch verwaltet werden, lesen Sie dazu bitte die Filesystem functions
im
Referenzmanual.
Dateien einfach lesen
Wie so oft in der Welt der Informatik (
;-)) muss man auch in
PHP teilweise Dateien lesen. Dies kann man mit file (Dateiname) tun.
$datei=file("c:/autoexec.bat"); liest z.b. die gesamte
Autoexec.bat in den Array $datei. Jede Indexnummer des Arrays enthält
eine Zeile der Autoexec. (Für jeden, er das jetzt für ein Sicherheitsloch
hält muss gesagt werden, dass es sich nur um die Autoexec des SERVERS
und keinesfalls um die des Anwendungscomputers handeln kann.)
Allerdings
kann man mit PHP auch Vollzugriff auf den Server
gewährleisten -- wenn man z.B. den Benutzer selbst einen Variablennamen
eingeben lässt, der dann als Datei geöffnet wird.
Pfadangabe
Pfäde werden in Linux und Windows mit dem Slash getrennt.
Eine Angabe mit Backslash ist unter Windows auch möglich, wenn dieser
auch als Doppelbackslash (\\) maskiert werden muss
(siehe:
Stringfunktionen).
URLs einfach lesen
Geht wie Dateien lesen :)
$url=file("http://www.altavista.com/");
schreibt je eine Zeile der HTML-Quelltextes in das Array url.
Leichter gehts nicht.
Dateien schreiben
Geht mit
int fopen(<Dateiname>,<Kommando>), fwrite (<Dateiindex>,<String>) und fclose(<Dateiindex>)
.
Kommandos
|
r
|
Nur Lesen (von Anfang der Datei) |
|
r+
|
Lesen und Schreiben (von Anfang der Datei) |
|
w
|
Nur Schreiben (falls Datei vorhanden, überschreiben) |
|
w+
|
Lesen und Schreiben (falls Datei vorhanden, überschreiben) |
|
a
|
Nur Schreiben (Anhängen an bereits exisitierende Datei, ggf. Datei erstellen) |
|
a+
|
Lesen und Schreiben (Anhängen an bereits exisitierende Datei, ggf. Datei erstellen)
|
Bitte beachten
Bitte beachten Sie, dass nur Strings geschrieben werden und
das Schreiben des Bytes 0 mit diesen Funktionen nicht funktioniert, weil
0 das Ende eines Strings signalisiert. (Genauso kann man meines Wissens
auch mit file() nicht über ein 0 hinweglesen)
URLs
Wenn als Dateiname eine URL angegeben wird, wird dorthin entweder per HTTP
oder per FTP geschrieben, je nach Protokoll. Benutzername und Passwort
kann in der Form ftp://benutzername:passwort@server.de/verzeichnis/datei
angegeben werden.
Beispiele
$fp=fopen("c:/test.txt",w);
fwrite ($fp, "Dies ist ein magischer String\nin zwei Zeilen");
fclose($fp);
---
$fp = fopen("ftp://user:password@netzwelt.com/", "a+");
fwrite ($fp, "Dies ist ein magischer String\nin zwei Zeilen");
fclose($fp);
Verzeichniszugriff
Erfolgt mit
int opendir(<Pfad>), readdir(<Pfadindex>) und closedir(<Pfadindex>)
$dir=opendir("c:/");
while ($file = readdir($dir))
{
echo "$file\n";
}
closedir($dir);
Dateiupload
Diesen Abschnitt finden Sie in
Formulardaten übernehmen.