| Die wichtigste und bekannteste Anwendung von PHP ist die Erzeugung dynamischer Webseiten: Ihr Quelltext wird nicht als Datei erzeugt, sondern als HTML-Datenstrom vom Webserver an den Browser gesendet. | PHP kann nicht nur Webseiten erzeugen, sondern jeden beliebigen Datenstrom. Beispiele und Anregungen finden sie auf dieser Seite. |
PHP
|
PHP Hypertext Processor |
| Datenstrom | Erzeugen und Senden eines beliebigen Datenstroms |
| HTML | Dynamische Webseiten oder -Teile als HTML-(Text)-Datenstrom |
| XML | XML-'Programme' und Daten als XML-(Text)-Datenstrom |
| RSS | Nachrichten (News) als XML-(Text)-Datenstrom |
| SVG | Objekt-Grafik als XML-(Text)-Datenstrom |
| Javascript | Dynamischer Javascript-Code als Text-Datenstrom |
| Pixel-Grafik | GIF-, JPEG-, PNG-Grafik als binärer Datenstrom |
Datenstrom in kurzen Fragen |
|
|
Das kleine PHP Script-Programm rechts sendet die Zeichenkette
"Das ist ein Test". Der jeweilige Ausgabe-Kanal bestimmt, wo das Ziel dieses Strings ist - Im Normalfall ein Browser, d.h. der Text wird als Teil einer Webseite interpretiert. Die Beispiele dieser Seite zeigen, dass es auch andere Möglichkeiten gibt. |
Ausgabe einer Zeichenkette (String) mit PHP
<?php
print 'Das ist ein Test';
?>
|
Was ist ein Datenstrom ?Eine Kette von Daten (Bytes) in einem Zustand der Bewegung. Im Gegensatz zu einer Datei existiert der Datenstrom nur während der kurzen Zeit, in welcher er erzeugt und an sein Ziel transportiert wird.Sein Schicksal richtet sich nach der Anwendung: In den hier besprochenen Fällen wird der Datenstrom zu einem Browser geleitet, welcher daraus eine Webseite erstellt. Wenn man die mit Datenstrom erzeugte Webseite am eigenen PC speichert, endet der Strom in einer Datei am eigenen PC. Wenn man das Fenster schließt oder eine andere Webseite ladet, dann sind die Daten verloren. Wie wird ein Datenstrom erzeugt ?Fast jedes PHP-Script erzeugt einen Datenstrom: Jede print oder echo Anweisung sendet einen 'String' an den Ausgabe-Kanal. |
Wozu soll das gut sein ?• Die Mehrzahl aller Daten ist für eine dauerhafte Verwendung vorgesehen. Dazu werden sie in Dateien oder Datenbanken gespeichert.• In einigen Fällen ist das Speichern aber sinnlos, weil die Informationen für den 'sofortigen Verbrauch' bestimmt sind, oder weil sie nur für einen bestimmten Zweck zusammengestellt wurden: In solchen Fällen wäre das Speichern eine Vergeudung von Resourcen. Daher wird viel einfacher und schneller ein Datenstrom erzeugt und an sein Ziel gesendet. Beispiel Datenbank-Abfrage:
Der Zugriff auf moderne Datenbanken erfolgt über Webseiten.Die Anfragen an eine Datenbank sind fast unbegrenzt vielfältig: Jede/r AnwenderIn will andere Daten suchen und anzeigen. Daher wäre es sinnlos, für jede mögliche Anfrage, Ausgabe, etc, eigene Webseiten zu speichern - Vielmehr werden solche 'dynamischen' Webseiten für die einmalige Verwendung erzeugt und als Datenstrom abgesendet. |
Woraus besteht ein Ausgabe-String ?Ein Ausgabe-String besteht aus einer 'Zeichenkette', d.h. einer Anzahl von Bytes. Dafür bestehen kaum Einschränkungen:• Der String kann fast beliebig lang sein, aber auch sehr kurz, sogar leer - d.h. er kann null Bytes enthalten. • Ein Ausgabe-String kann jedes mögliche Byte enthalten, d.h. alle Werte zwischen dezimal 0 und 255 oder hexadezimal #00 und #FF - Das umfasst zusätzlich zu den druckbaren Zeichen alle nicht druckbaren Zeichen, Steuerzeichen etc. • Ein Programm kann darüber hinaus fast beliebig viele Strings erzeugen und senden. |
Gibt es noch andere Ausgabe-Kanäle ?Mit entsprechenden Befehlen kann jedes PHP-Programm weitere Ausgabe-Kanäle öffnen, z.B. zur → Erzeugung von Dateien mit PHP.Die Ausgabe der fwrite-Anweisungen wird an das gewünschte Ziel (z.B. Ausgabe-Datei) weitergeleitet. Insgesamt sind zahlreiche unterschiedliche Kanäle möglich. Damit lassen sich die erzeugten Daten an viele verschiedene Empfänger (Browser, Dateien, ...) senden. |
Was ist der Standard Ausgabe-Kanal ?Das ist lediglich ein Name für den Empfänger der Ausgabe-Daten.Normalerweise werden PHP-Script-Programme am → Webserver ausgeführt. In diesem Fall gelangen die erzeugten Daten zu jenem Browser, welcher das Dokument (z.B. durch Klick auf einen Link) anforderte. Es gibt aber auch andere Möglichkeiten: Wenn PHP-Script-Programme auf der → System-Konsole ausgeführt werden (Linux-Shell, Windows cmd.exe, dann wird der Ausgabe-Strom an die Konsole gesendet. Solche Programme kann man z.B. zur → System-Verwaltung einsetzen. |
Welche anderen Datenströme kann man erzeugen ?Dafür gibt es keine Beschränkung.Beispiele: ↓ HTML(das ist Standard), einfacher Text, SQL, Grafik (GIF, JPEG, PNG, SVG), Sound, XML, CSS, Javascript, ... Alle genannten Beispiele werden im Normalfall als gewöhnliche 'statische' Dateien verwendet. Wenn es einen Grund gibt, sie erst zum Zeitpunkt der Anforderung oder maßgeschneidert für jede einzelne Anforderung zu erzeugen, dann ist ein PHP-Datenstrom eine gute Lösungsmöglichkeit. Oft besteht die Möglichkeit, die Daten in eine statische Datei und in einen PHP-erzeugten Datenstrom aufzuteilen. Das ist empfehlenswert, um die Belastung des Webservers möglichst gering zu halten. |
Wie erzeugt man mit PHP andere als HTML-Datenströme ?Die ↓ Kapitel dieser Webseite zeigen, wie das gemacht wird.Der Unterschied liegt nicht in der Erzeugung der Daten, sondern in der 'Ankündigung' der Daten für den Webserver. |
Kann man den Datenstrom an Webseiten senden ?Ein PHP-Datenstrom kann in jede 'normale' HTML-Webseite eingebettet werden, z.B. als dynamische Grafik.Die Empfänger-Webseite muss keine dynamische PHP-Webseite sein ! Beispiel: Die gerade angezeigte statische (!) Webseite: Hier sind mehrere dynamische Teile eingebettet, jeder davon wurde als Datenstrom von PHP erzeugt und an ihren Browser gesendet. |
HTML-Datenstrom |
|
|
Die Ausgabe eines HTML-Datenstroms ist der Standard-Fall.
Dieser Fall wird ohne weitere Vereinbarung angenommen.
In einem PHP-Script treten 3 verschiedene Fälle auf: ● (1) Jeder im Script enthaltene Text wird unverändert in den Datenstrom übernommen und durchläuft den Standard-Ausgabe-Kanal:
Vom PHP-Script zum Webserver, von dort über das Netzwerk zum Client-PC,
dort zum Browser.
Das trifft für alle in dunkelgrau gehaltenen Zeichen des Beispiels (rechts) zu.Diese Texte gelangen daher exakt genauso in den Datenstrom wie wenn sie der Webserver von einer HTML-Datei lesen würde. ● (2) Die Text-Marken <?php ?> dienen zur Erkennung von Anfang und Ende eines PHP-Programms. Sie werden nicht im Datenstrom gesendet, sondern an das PHP-Interpreter-Programm zur Ausführung übergeben. Jede Datei kann beliebig viele PHP-Programmteile enthalten, solange Anfang und Ende jedes einzelnen Teils markiert werden. ● (3) Der rot gedruckte Text enthält ein (kurzes) PHP Script-Programm. Der Programm-Text wird an das PHP Interpreter-Programm gesendet und dort ausgeführt. Wenn dabei Daten ausgegeben werden (hier vom print-Befehl), dann werden diese in den Datenstrom übernommen. Das PHP-Programm selbst gelangt niemals in den Datenstrom, nur die von ihm erzeugten Ausgabe-Strings. |
HTTP-HeaderDas ist ein kurzer Text-Block, den der Webserver automatisch vor jeder Art von Daten sendet. Bei der Erzeugung von Webseiten kümmert man sich darum nicht, weil der Webserver diese Arbeit automatisch erledigt.Der → HTTP-Header dient u.a. zur Ankündigung der → MIME-Type der nachfolgenden Daten: Ohne weitere Maßnahme verwendet der Webserver normalerweise die MIME-Type für normale Webseiten text/html HTML-TextNach dem HTTP-Header wird der HTML-Text (dunkelgrau) unverändert gesendet. Disen 'Quelltext' können sie mit Rechtsklick in eine beliebige Webseite anzeigen.Jedes in der Datei enthaltene PHP-Programm (rot) wird nicht gesendet, sondern nur der vom Programm erzeugte Ausgabe-Text (Hier ist PHP<br />). Beachten sie, dass man mit PHP sowohl HTML-Elemente (<br />) als auch Daten erzeugen kann. Muster einer Datei demo.php, die einen HTML-Datenstrom erzeugt:
<html>
<head> <title>Test</title> </head> <body> <?php
print 'Hier ist PHP<br />';
?>
</body></html> |
Was kommt an ?Der Browser (am Ziel des Datenstroms) empfängt die gesendeten Daten als HTML-Quelltext. An dieser Stelle kann man nicht mehr unterscheiden, was aus dem (statischen) Text einer Datei stammt und welcher Teil durch das PHP-Programm erzeugt wurde.Der am Ziel ankommende Text enthält an Stelle des PHP-Programms nur die von diesem Programm erzeugte Ausgabe. |
Test: Mit Rechtsklick in eine Webseite können sie den HTML-Quelltext ansehen. Dabei sehen sie niemals PHP-Programme. |
Normale Webseite mit dynamischen TeilenUm variable Teile auf einer Webseite anzuzeigen, ist es nicht notwendig, die ganze Datei als PHP-Dokument zu speichern.Ein praktischer Weg, dynamische Teile in normale statische Webseiten einzubetten ist die Verwendung von → Innenrahmen (HTML-<iframe>). Durch diese Technik wird der Webserver entlastet, und der dynamisch erstellte Inhalt kommt schneller am Ziel (z.B. auf dieser statischen Webseite) an. Rechts ein Beispiel für die Einbettung eines dynamischen Teiles. ● Klicken sie hier, um die eingebettete Datei neu zu erzeugen und als HTML-Datenstrom an ihren Browser zu senden. |
|
XML Datenstrom |
|
|
Mit PHP kann man Daten für alle Mitglieder der
→ XML-Familie erzeugen. • XML-Daten enthalten nur 'einfachen Text' (text/plain). • Ein XML-Text besteht (ähnlich wie ein HTML-Quelltext) aus Auszeichnungs-Elementen <tags> (XML-'Anweisungen') und Daten. |
Je nach Anwendung werden jedoch unterschiedliche Elemente verwendet, z.B. <h1></h1> für eine Überschrift auf einer → XHTML-Webseite oder <circle /> für einen Kreis in ↓ SVG-Grafik. |
HTTP-HeaderVor den eigentlichen Daten sendet der Webserver einen kurzen Text-Block, den → HTTP-Header. Dieser hat hauptsächlich den Zweck, die → MIME-Type der nachfolgenden Daten anzugeben.► Mit der header-Funktion von PHP wird die MIME-Type der erzeugten Daten angegeben. Die Anweisung muss erfolgen, bevor irgendein anderer Text ausgegeben wird, d.h. unbedingt am Anfang des Script-Programms. Ersetzen sie die Mime-Type text/xml durch jene Datei-Type, die erzeugt werden soll. |
Festlegung der MIME-Type am Anfang des PHP Script-Programms: <?php
header('Content-type: text/xml');
?>
Als erste Ausgabe folgt normalerweise die XML-Deklaration ( ↓ nächster Absatz). |
XML-DeklarationJede → XML-Datei (und jeder XML-Datenstrom) beginnt mit der XML-Deklaration.
Die XML Deklaration muss in der ersten Zeile enthalten sein.
Davor sind keine anderen Daten zulässig, nicht einmal Leerzeichen
oder eine Leerzeile.
● Je nach Konfiguration des → Webservers wird die Zeichenfolge <? evtl. als Beginn eines PHP Programms interpretiert. In diesem Fall ergibt sich bei Anforderung der Seite ein schwerwiegender Abbruch-Fehler in der ersten Zeile. Wenn man die Zeichenfolge mit einer print-Anweisung erzeugt (sichere Variante rechts), dann kann das nicht passieren. ♣ Tipp: Verwenden sie diesem Trick auch dann, wenn auf ihrem eigenen Webserver kein Fehler gemeldet wird. Der Webserver ihres Providers könnte anders konfiguriert sein, oder in Zukunft anders konfiguriert werden. |
XML-Deklaration
<?xml version="1.0" ?>
(In diesem Element können zusätzlich weitere Attribute
enthalten sein.)<?php
print '<?xml version="1.0"
encoding="utf-8"?>'."\n";
?>
|
XML-Auszeichnungen und DatenDer weitere Datenstrom besteht aus den je nach XML-Type unterschiedlichen <tag></tag> Auszeichnungen und den dazwischen liegenden Daten. |
Für XML-Daten wird normalerweise der utf-8 Zeichensatz (eine Art der → Unicode-Codierung) verwendet. Damit werden auch Sonderzeichen (z.B. äöüÄÖÜß) global eindeutig dargestellt. |
| ♦ Details zu XML, XHTML, XML-Daten | ♦ Details zu Zeichensätzen, ASCII, Unicode, UTF-8 |
|
|
HeaderPHP kann beliebige Daten in seinem Ausgabe-Datenstrom senden. → RSS ist ein besonders einfacher Fall, da RSS als Mitglied der → XML-Familie aus lesbarem Text besteht (RSS transportiert Nachrichten (News) über das Internet).In diesem Fall muss man sich jedoch selbst um jene Details kümmern, die bei einem HTML-Datenstrom automatisch erledigt werden, z.B. um die korrekte "Ankündigung" des Datenstroms an den Browser. |
Festlegung der → MIME-Type am Anfang des Script-Programms: <?php
header('Content-type: application/rss+xml');
?>
|
XML-DeklarationJede XML-Datei (und jeder XML-Datenstrom) beginnt mit der XML-Deklaration. Sie muss als erste Zeile enthalten sein, davor sind keine anderen Daten zulässig, nicht einmal Leerzeichen oder eine Leerzeile.● Je nach Konfiguration des Webservers kann die Zeichenfolge <? als Beginn eines PHP Programm-Teils interpretiert werden. In diesem Fall ergibt sich bei Anforderung der Seite (durch einem Browser) ein schwerwiegender Abbruch-Fehler in der ersten Zeile. Wenn man die Zeichenfolge trennt (Sichere Variante rechts), dann kann das nicht passieren. ● Verwenden sie diesem Trick auch dann, wenn auf ihrem eigenen Webserver kein Fehler gemeldet wird. Der Webserver ihres Providers könnte anders konfiguriert sein, oder in Zukunft anders konfiguriert werden. |
XML-Deklaration <?xml version="1.0" ?>
(In diesem Element könne auch andere Attribute enthalten sein.)Sichere Variante in PHP-Dateien: <?php
print '<?xml version="1.0"
encoding="utf-8"?>'."\n";
?>
|
XML-Elemente und DatenDer weitere Datenstrom besteht aus den je nach XML-Type unterschiedlichen <tag></tag> Auszeichnungen (Elementen) und den dazwischen liegenden Daten.♦ Details zu XML, XHTML, XML-Daten, RSS |
Nach der XML-Deklaration folgt das RSS-Element mit den RSS-Daten:
<rss version="2.0">
<channel>
</rss>
...
</channel>
<item>...</item> <item>...</item> |
DatenbankRSS-Daten werden fast immer aus einer Datenbank entnommen. Die Programme zur Erzeugung eines RSS Datenstroms verwenden z.B. das PHP-Modul mysqli für den Zugriff auf einen → MySQL Datenbank Server. |
♦ Details zur Anwendung von PHP mit Datenbanken, Datenbank-Server, MySQL. |
| Für XML-Daten wird normalerweise der utf-8 Zeichensatz (eine Art der → Unicode-Codierung) verwendet. Damit werden auch Sonderzeichen (z.B. äöüÄÖÜß) global eindeutig dargestellt. | ♦ Details zu Zeichensätzen, ASCII, Unicode, UTF-8 |
SVG-Grafik als Datenstrom |
|
|
SVG (Objekt-Grafik) ist
ebenfalls Mitglied der
→ XML-Familie und
besteht daher aus einfachem Text (text/plain). Auch in diesem Fall muss man sich selbst um den Header kümmern, d.h. um die korrekte "Ankündigung" des Datenstroms an den Browser. ► Alle modernen Browser können SVG-Grafik darstellen. Lediglich der veraltete M$IE Browser benötigt dazu ein Hilfsprogramm (Adobe SVG Plugin). |
►
Alle XML-Mitglieder sind miteinander kompatibel. Daher kann man
SVG-Anweisungen direkt in den Quelltext einer
→
XHTML-Webseite eingebettenn. Das funktioniert mit allen modernen Browsern. ▼ Der veraltete M$IE Browser kann SVG auch mit dem Adobe SVG Plugin nur dann anzeigen, wenn die SVG-Grafik in einer eigenen Datei *.svg angelegt wurde. An Stelle dieser Datei kann auch ein durch PHP erzeugter Datenstrom gesendet werden. |
HeaderVor den eigentlichen Daten (der Grafik) muss der Webserver den → HTTP-Header senden. Das ist ein kurzer Text-Block, welcher u.a. die → MIME-Type der nachfolgenden Daten ankündigt.Die korrekte MIME-Type für SVG Objekt-Grafik lautet image/svg+xml
|
Die PHP-Anweisung zur Erzeugung des HTTP-Headers: <?php
header('Content-type: image/svg+xml');
?>
|
SVG-GrafikDie SVG-Grafik (rechts) wird nur dann angezeigt, wenn ihr Browser SVG beherrscht. Das trifft für alle modernen Browser zu, ausgenommen M$IE. Auch mit M$IE wird die SVG-Grafik angezeigt, wenn ein Hilfsprogramm (Adobe SVG Viewer) geladen ist.♦ Details zu SVG-Objektgrafik. |
•
Mit Rechtsklick können sie den mit PHP erzeugten Quelltext der
SVG-Grafik anzeigen. • Dieses Beispiel erzeugt eine statische SVG-Grafik. Man kann die Grafik nachladen - Sie wird dann vom Webserver erneut als Datenstrom erzeugt und an ihren Browser gesendet. |
Einbettung in HTMLMit diesem HTML-Quelltext kann man eine 'gewöhnliche' SVG-Grafik in eine Webseite einbetten (2 alternative Varianten):
<embed src="svg_demo.svg"></embed>
<iframe src="svg_demo.svg"></iframe> |
Mit diesem HTML-Quelltext wird die mit PHP als Datenstrom erzeugte SVG-Grafik in diese Webseite eingebettet:
<embed src="svg_stream.php"></embed>
<iframe src="svg_stream.php"></iframe> ♦ Details zum Thema Einbettung in HTML- oder XHTML-Webseiten |
|
Die Datei svg_stream.php besteht wie jedes andere
PHP Script-Programm aus lesbarem Text (rechts). • Die erste (!) PHP-Anweisung muss mit der PHP Funktion header den HTTP-Header erzeugen - In diesem Fall mit der → MIME-Type image/svg+xml für eine SVG-Grafik. • Darauf folgt die XML-Deklaration, so wie im ↑ Kapitel 'XML-Datenstrom' vorgestellt. • Die übrige Datei besteht hauptsächlich aus SVG-Anweisungen. Sie werden unverändert weitergeleitet. • An einer Stelle ist noch ein kleines PHP-Programm enthalten, welches die aktuelle Zeit als Text in die Grafik einsetzt (→ PHP Datum & Zeit) • Das SVG Grafik-Programm wird als Quelltext an ihren Browser gesendet, wo man es mit Rechtsklick anzeigen kann. |
Quelltext der Datei svg_stream.php (stark vereinfacht).
<?php
header('Content-type: image/svg+xml'); print '<?xml version="1.0" ?>'."\n"; ?>
<svg xmlns="http://www.w3.org/2000/svg">
<circle cx='20' cy='20' r='15' />
</svg>
<text x='45' y='20'>Server-Zeit</text> <text x='45' y='35'> <?php
$st = strftime('%H:%M:%S',time()); print $st; ?>
</text>
Die angezeigte Grafik enthält zusätzlich noch Uhrzeiger - SVG-Linien, die mit PHP um den aktuellen Winkel gedreht werden. |
Server-TricksWenn sie über einen eigenen Webserver verfügen, dann gibt es einige Tricks, mit denen sich die Schwächen des M$IE Browsers (z.B. mit SVG-Grafik) teilweise kompensieren lassen.(Stichworte: PHP SVG Apache) |
Solche Maßnahmen werden hier nicht vorgestellt, da die Anforderungen zu speziell sind. Internet-Provider können niemals zustimmen, ihren Server zu manipulieren - Daher sind derartige Tricks nur am eigenen Server möglich und nicht im Internet. |
|
Eine SVG-Grafik kann beliebig komplex sein. Das Beispiel rechts zeigt eine
etwas komfortabler ausgestattete Analog-Uhr. In dem von PHP erzeugten SVG-Datenstrom einige kleine → Javascript-Programme enthalten, die an ihrem eigenen PC ausgeführt werden und die Grafik laufend aktualisieren. |
Diese Grafik zeigt auch nach ihrer Erzeugung die Zeit Live an. Das wird durch eine Kombination von PHP+Javascript erreicht, deren Prinzip im Kapitel ↓ Javascript-Datenstrom demonstriert wird. Die Methode funktioniert auch dann, wenn die System-Zeit ihres PC falsch eingestellt ist. |
Pixel-Grafik als Datenstrom |
|
|
PHP kann mit Hilfe der Grafik-Bibliothek gdlib
Pixel-Grafik aller gängigen Formate (gif, jpeg, png, ..) erzeugen,
verändern und als Datenstrom an den Browser senden. ♦ Details zur Erzeugung und Verarbeitung von Pixel-Grafik mit PHP. |
Der HTML-Quelltext zur Einbindung der mit PHP Live erzeugten PNG-Grafik in diese Webseite: <img src="png_img.php">
|
PNG-GrafikDie Datei png_img.php besteht wie jedes andere PHP-Script-Programm aus lesbarem Text (rechts).Sie enthält ausschließlich das gezeigte PHP-Programm, beginnt und endet daher mit den PHP-Marken. • Die erste (!) PHP-Anweisung muss mit der PHP Funktion header den HTTP-Header erzeugen - In diesem Fall mit der → MIME-Type image/png für eine PNG-Grafik. • Eine Pixel-Grafik Datei besteht nicht aus lesbarem Text sondern aus binären Daten. Zu ihrer programmierten Erzeugung werden die Funktionen der → Grafik-Bibliothek gdlib verwendet. Als Nachweis für die Live-Erzeugung wird die aktuelle Uhrzeit des Webservers in der Grafik angezeigt. |
Quelltext der Datei png_img.php zur >Erzeugung eines binären PNG-Datenstroms: <?php
header('Content-type: image/png');
$img = imagecreate(200,30);$fbg = imagecolorallocate($img,255,208,0); $ftxt = imagecolorallocate($img,0,0,0); $s = strftime("Server-Zeit %H:%M:%S",time()); imagestring($img,3,15,10,$s,$ftxt); imagepng($img); imagedestroy($img); ?>
Man kann die Grafik - wie jedes andere Bild - mit Rechtsklick am eigenen PC speichern. Im Gegensatz zu einem HTML- oder SVG-Datenstrom kann man jedoch keinen Quelltext anzeigen, da die Grafik binär codiert ist. |
|
Beachten sie einige Details dieses Demo-Beispiels: • Ein Browser kann diese erzeugte und übersendete Grafik nicht von einer 'statischen' Grafik (aus einer Grafik-Datei) unterscheiden. • Man kann das Bild wie jedes andere mit Rechtsklick als Datei am eigenen PC speichern. |
•
Das PHP-Programm, welches die Grafik erzeugte, ist wie
jedes andere PHP-Programm für den Browser vollkommen unzugänglich. • Eine Live-Animation (ähnlich wie in der ↑ SVG Objektgrafik demonstriert) ist mit einer Pixel-Grafik praktisch unmöglich, zumindest jedoch extrem aufwändig. |
GIF-GrafikAuf fast genau gleiche Weise wird eine Pixel-Grafik im GIF-Format erzeugt. Lediglich die letzte PHP-Anweisung wird ausgetauscht:An Stelle von imagepng (sendet einen PNG-Datenstrom) wird imagegif (sendet einen GIF-Datenstrom) gesetzt. GIF ist zwar nicht mehr lizenzpflichtig, trotzdem ist der technisch überlegene Standard PNG zu bevorzugen. |
JPEG-Grafikauf ganz ähnliche Weise wird eine Pixel-Grafik im JPEG-Format erzeugt. JPEG eignet sich besonders für Bilder mit 'unendlich' vielen verschiedenen Farben, z.B. Portrait, Landschaft, etc.♦ Details zur Erzeugung von Pixel-Grafik mit PHP |
Javascript als Datenstrom |
|
|
Es gibt 2 sinnvolle Varianten, um
→ Javascript
(JS) Programme in einer Webseite zu verwenden: • Ein <script>-Element mit dem JS-Quelltext wird in das <head>-Element einer Webseiten-Datei eingefügt. • Die JS-Anweisungen sind in einer eigenen Text-Datei (z.B. test.js ) oder in einem äquivalenten Datenstrom (z.B. test.php ) enthalten. |
•
Beide Methoden lassen sich kombinieren, d.h. man kann Standard-Programme aus einer
JS-Datei zusammen mit individuellen JS-Programmen aus einem
<script>-Element verwenden. • Beide Methoden sind nicht nur für HTML-Webseiten sondern für alle Mitglieder der → XML-Familie verwendbar. ● Beide Varianten lassen sich ganz oder teilweise durch PHP-Programme herstellen. Sie werden in den beiden folgenden Beispielen (mit identischer Wirkung) vorgestellt. |
|
Beispiel
Beide folgenden Beispiele erzeugen lediglich diese einzige Javascript-Anweisung:
var uts=0;
Der Javascript-Variablen uts wird eine ganze Zahl zugewiesen,
und zwar ein
→ UNIX-Timestamp der aktuellen Zeit, multipliziert mit 1000 (Javascript
verwendet Millisekunden).• Mit dieser Methode kann man Daten von PHP an JS übergeben, wenn sie bereits am Beginn des PHP-Programms vorliegen. |
Das Beispiel kann man verwenden, um einem JS-Programm die aktuelle Zeit des Servers mitzuteilen. Das JS-Programm kann nur die System-Zeit des jeweiligen Client-PC verwenden, die leider oft ungenau ist. Mit Hilfe der Variablen uts berechnet JS daraus die Differenz und kann damit die lokale System-Zeit korrigieren. Die Methode wird in diesem Web verwendet, um alle Zeit-kritischen Arbeiten zwar mit Javascript auszuführen, jedoch mit der sehr zuverlässigen System-Zeit des Servers. ♣ Achten sie auf die ; Strichpunkte: Sowohl PHP- als auch JS-Anweisungen werden damit abgeschlossen ! |
<script>-ElementKleine JS-Programme mit lediglich lokaler Bedeutung werden in ein <script>-Element in den <head> einer Webseite eingefügt.• Die MIME-Type der Datei lautet text/html wie für jede andere Webseite und muss daher mit PHP nicht deklariert werden. • Bei sauberer Programmierung begrenzt man den Inhalt des Elements mit XML-konformen [CDATA]-Marken. • PHP-Programme können an jeder beliebigen Stelle eingefügt werden, hier z.B. zur Berechnung einer PHP-Variablen $uts und danach zur Ausgabe innerhalb des <script>-Elements. |
Erzeugung von Javascript-Quelltext innerhalb eines HTML-Datenstroms:
<head>
<?php
$uts = time()*1000;
?>
// <![CDATA[
var uts=<?php
print $uts; ?>;
// ]]>
</script></head> |
Javascript-Datenstrom• Die → MIME-Type für einen Javascript-Datenstrom isttext/application x-javascript
Sie muss vor jeder Ausgabe mit einer PHP
header-Anweisung deklariert werden.• Der Datenstrom enthält kein <script>-Element sondern nur reinen JS-Quelltext. • Sie können den Datenstrom probeweise durch Klicken dieses Links in einem eigenen Tab ihres Browsers anzeigen. |
Quelltext der Datei) uts.php zur Erzeugung eines
Javascript-Datenstroms:
<?php
header('Content-type: application/x-javascript');
$uts = time()*1000; print 'var uts='.$uts.";\n"; ?>
Einbindung des JS-Datenstroms in den <head> einer Webseite: <script type="text/javascript"
src="uts.php"></script>
|
Ajax und JSONDiese Begriffe bezeichnen Javascript-Elemente, welche besonders oft als Datenstrom durch PHP-Programme erzeugt werden.• Diese Methoden sind u.a. geeignet, auch solche Daten von PHP an JS zu übergeben, die erst nach dem Laden einer Webseite vorliegen. |
Moderne Pakete von Webserver-Programmen (Web2) benutzen diese Technik häufig. ♦ Details zu Ajax und JSON |
| ♦ Details zur Erzeugung eines Javascript-Datenstroms. | ♦ Anwendungs-Beispiel: Verwendung der Server-Zeit mit Javascript. |
|