Wegweiser:
Startseite >>
Übersicht PHP-Kurs
>>
Kapitel 3: Bilder/Dateien
| PHP Kurs - Kapitel 3: Bilder/Dateien |

Der Befehl include() liest den Inhalt der Datei dateiname so, als ob er an dieser Stelle stehen würde. Damit kann z.B. einheitliches Layout bei einer größeren Anzahl von Dateien erreicht werden.
Beispiel:

Wir wollen nun von Dateien, die auf dem Server liegen, lesen, bzw. in diese Dateien etwas hineinschreiben.
Dies ist nützlich, um z.B. Zähler oder Gästebücher ohne Anbindung einer Datenbank zu erzeugen.
Dazu muss als erstes mittels eines FTP Programms eine Datei erstellt werden, anschließend setzt man durch
den FTP Befehl site chmod xyz DATEINAME die Rechte für die Datei.
x, y, z sind 3 Ziffern, die die Rechte für den Datei-Eigentümer, die Benutzergruppe des Datei-Eigentümers (das sind üblicherweise alle anderen Benutzer auf dem Computer) und den Rest der Welt bestimmen.
Jede der 3 Ziffern liegt zwischen 0 und 7.
0 bedeutet: keinerlei Zugriffsrecht.
1 bedeutet: Ausführrecht (wichtig bei Programmen und Verzeichnissen).
2 bedeutet: Schreibrecht (was gleichzeitig auch "Löschrecht" ist).
4 bedeutet: Leserecht.
Die Zahlen können beliebig addiert werden.
Zum Beispiel: site chmod 777 DATEINAME gibt jedem das Recht, alles mit der Datei DATEINAME anzustellen.
Nachdem die Datei jetzt erstellt wurde, kommen wir nun zum auslesen dieser Datei:
Beispiel:
1. Zuerst müssen wir die Datei öffnen, dabei muß angegeben werden, was mit der Datei
geschehen soll: Wollen wir lesen, schreiben, anhängen,...
2. Der Befehl lautet: $datei = fopen("xxx","r");
Das heißt, wir öffnen die Datei mit dem Namen xxx und wollen darin lesen ("r"). Die
technischen Details lassen wir dabei von der Variablen $datei regeln, d.h. wenn wir später
aus der Datei lesen wollen, so benützen wir die Variable $datei.
3. Nun lesen wir zeilenweise den Inhalt der Datei, und zwar so lange, bis wir ans Ende der Datei
gelangt sind:
while (!feof($datei)) {
$zeile = fgets($datei,1000);
echo $zeile;9
}
4. Schließlich muß die Datei noch geschlossen werden:
fclose($datei);
|
feof($datei) ist wahr, sobald wir an das Datei-Ende gelangt sind. $zeile = fgets($datei,1000); liest maximal die nächsten 1000 Zeichen, hört aber auf, sobald eine neue Zeile beginnt, oder das Ende der Datei erreicht ist.echo $zeile; gibt einfach das Gelesene wieder aus.
Folgende Möglichkeiten gibt es, eine Datei zu öffnen:
"r": nur lesen, begonnen wird am Dateianfang.
"r+": lesen und schreiben, begonnen wird am Dateianfang.
"w": nur schreiben. Existiert die Datei bereits, wird der bisherige Inhalt gelöscht.
Existiert sie nicht, wird versucht. sie zu erzeugen.
"w+": lesen und schreiben. Ansonsten wie "w".
"a": nur schreiben. Begonnen wird am Ende der Datei (a wie append, anhängen). Existiert sie nicht, wird versucht. sie zu erzeugen.
"a+": lesen und schreiben. Ansonsten wie "a". Achtung: Es wird beim Lesen natürlich auch am Ende der Datei begonnen (dort steht natürlich nichts mehr...)
Mit dem Befehl:
|
fwrite($datei, "Ein Text");
|
kann der String Ein Text in die Datei geschrieben werden.

Mit PHP können wir nicht nur HTML-Text erzeugen, wir können sogar Bilder dynamisch erzeugen.
Zum Beispiel können wir eine Datei "bild.php3" erstellen, die ein Bild zurückliefern wird.
In diese Datei schreiben wir keine HTML-Befehle, sondern ausschließlich PHP-Befehle.
Ausschließlich heißt auch, daß vor dem ersten <?-Befehl nichts, auch kein Leerzeichen oder
Leerzeile, stehen darf. Ansonsten ist der Browser sofort der Überzeugung, daß ein Textdokument ankommt.
Beispiel:
<?
Header( "Content-type: image/gif");
$im = imagecreate(200,100);
$blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF);
ImageFilledRectangle($im,0,0,200,100,$blue);
ImageGif($im);
ImageDestroy($im);
?>
|
Ruft man diese Datei auf, so erscheint ein blaues Rechteck.
Natürlich kann diese Datei auch mit <IMG SRC="bild.php3"> in eine HTML-Seite eingebunden werden.
Der Befehl bewirkt im einzelnen:
Header( "Content-type: image/gif"); teilt dem Browser mit, daß nun ein GIF-Bild kommen wird.
$im = imagecreate(200,100); erzeugt ein Bild, das 200 Pixel breit und 100 Pixel hoch ist.
$blue = ImageColorAllocate($im, 0x2c,0x6D,0xAF); berechnet die Farbe
ImageFilledRectangle($im,0,0,200,100,$blue); zeichnen wir ein ausgefülltes Rechteck,
das bei 0,0 (links oben) beginnt und 200 Pixel nach rechts und 100 Pixel nach unten endet,
und in der eben erzeugten Farbe $blue gefüllt ist.
ImageGif($im); erzeugen zuerst ein GIF-Bild
ImageDestroy($im); gibt den internen Speicherplatz für das Bild frei.
|