mirror of
https://github.com/php/doc-de.git
synced 2026-03-24 07:12:15 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/de/trunk@341308 c90b9560-bf6c-de11-be94-00142212c4b1
588 lines
24 KiB
XML
588 lines
24 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: ca7fbbaddcf091178e666a6586f4181d6e429b4d Maintainer: cmb Status: ready -->
|
|
<chapter xml:id="tutorial" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<info><title>Ein kleines Tutorial</title></info>
|
|
|
|
<para>
|
|
Auf diesen Seiten möchten wir Ihnen die Grundlagen von PHP in einem
|
|
kleinen Tutorial vorstellen. Dieser Text behandelt nur das Erstellen
|
|
von dynamischen Web-Seiten, obwohl PHP natürlich nicht nur dafür
|
|
geeignet ist. Weitere Informationen finden Sie im Abschnitt
|
|
<link linkend="intro-whatcando">Was kann PHP?</link>.
|
|
</para>
|
|
<para>
|
|
Mit PHP erweiterte Web-Seiten werden wie normale HTML-Seiten
|
|
behandelt. Sie können sie genauso wie normale HTML-Seiten erstellen
|
|
und bearbeiten.
|
|
</para>
|
|
|
|
<section xml:id="tutorial.requirements">
|
|
<info><title>Was brauche ich?</title></info>
|
|
<para>
|
|
In diesem Tutorial gehen wir davon aus, dass auf Ihrem Server
|
|
die PHP-Unterstützung aktiviert ist und dass die Dateiendung
|
|
<filename>.php</filename> PHP zugeordnet ist. Auf den meisten
|
|
Servern ist dies die Standardeinstellung für PHP-Dateien, aber
|
|
fragen Sie bitte Ihren Server-Administrator, um sicherzugehen.
|
|
Wenn Ihr Server PHP unterstützt, müssen Sie nichts machen.
|
|
Erstellen Sie einfach Ihre <filename>.php</filename>-Dateien
|
|
und legen Sie diese in Ihr Web-Verzeichnis - der Server wird
|
|
sie dann für Sie parsen. Sie müssen nichts kompilieren und
|
|
auch keine Zusatz-Tools installieren. Stellen Sie sich diese
|
|
PHP-erweiterten Dateien wie normale HTML-Seiten mit einer
|
|
ganzen Familie von "magischen" Tags, die Sie verschiedenste
|
|
Dinge tun lassen, vor.
|
|
</para>
|
|
<para>
|
|
Angenommen, Sie möchten Bandbreite sparen und lokal entwickeln.
|
|
In diesem Fall müssen Sie einen Webserver wie z.B.
|
|
<link xlink:href="&url.apache;">Apache</link> und natürlich
|
|
<link xlink:href="&url.php.downloads;">PHP</link> installieren.
|
|
Sehr empfehlenswert ist auch die Installation einer Datenbank
|
|
wie z.B. <link xlink:href="&url.mysql.docs;">MySQL</link>.
|
|
</para>
|
|
<para>
|
|
Sie können diese Programme entweder eins nach dem anderen selbst
|
|
installieren oder den folgenden einfacheren Weg gehen. Unser
|
|
Handbuch bietet ausführliche <link
|
|
linkend="install">Installationsanweisungen für PHP</link> (dabei
|
|
gehen wir davon aus, dass Sie schon einen Webserver installiert
|
|
haben). Falls Sie Probleme bei der Installation von PHP haben,
|
|
dann empfehlen wir Ihnen, dass Sie Ihre Fragen auf unserer
|
|
<link
|
|
xlink:href="&url.php.mailing-lists;">Installations-Mailingliste</link>
|
|
stellen. Noch einfacher ist es, <link
|
|
xlink:href="&url.installkits;">vorkonfigurierte Pakete</link> für Ihr
|
|
Betriebssystem zu benutzen, die alle oben genannten Programme mit
|
|
einigen wenigen Mausklicks installieren. Es ist ziemlich einfach,
|
|
einen Webserver mit PHP-Unterstützung auf jedem Betriebssystem,
|
|
wie MacOSX, Linux oder Windows, aufzusetzen. Unter Linux sind
|
|
<link xlink:href="&url.rpmfind;">rpmfind</link> und
|
|
<link xlink:href="&url.rpmfind.pbone;">PBone</link> hilfreich, wenn
|
|
Sie RPM-Pakete suchen. Wenn Sie Pakete für Debian suchen, dann
|
|
besuchen Sie bitte <link xlink:href="&url.apt-get;">apt-get</link>.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.firstpage">
|
|
<title>Ihre erste PHP-erweiterte Seite</title>
|
|
<para>
|
|
Erstellen Sie eine Datei mit dem Namen <filename>hallo.php</filename>
|
|
und speichern Sie diese im Root-Verzeichnis Ihres Webservers
|
|
(<varname>DOCUMENT_ROOT</varname>) mit dem folgenden Inhalt:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Unser erstes PHP-Skript: <filename>hallo.php</filename></title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<html>
|
|
<head>
|
|
<title>PHP-Test</title>
|
|
</head>
|
|
<body>
|
|
<?php echo '<p>Hallo Welt</p>'; ?>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</programlisting>
|
|
<simpara>
|
|
Benutzen Sie Ihren Browser, um die Datei über den Webserver-URL
|
|
aufzurufen. Der URL muss mit <literal>/hallo.php</literal> enden. Wenn Sie lokal
|
|
entwickeln, sieht der URL z.B. so aus:
|
|
<literal>http://localhost/hallo.php</literal> oder
|
|
<literal>http://127.0.0.1/hallo.php</literal> - andere Adressen
|
|
sind aber, abhängig vom Webserver, auch möglich.
|
|
Wenn Sie alles korrekt installiert haben, wird die Datei von
|
|
PHP geparst und Sie werden die folgende Ausgabe in Ihrem
|
|
Browser sehen:
|
|
</simpara>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<html>
|
|
<head>
|
|
<title>PHP-Test</title>
|
|
</head>
|
|
<body>
|
|
<p>Hallo Welt</p>
|
|
</body>
|
|
</html>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Das Beispiel ist extrem einfach und natürlich brauchen Sie PHP nicht,
|
|
um eine Seite wie diese zu erstellen. Denn es macht nicht mehr, als
|
|
<literal>Hallo Welt</literal> mit der
|
|
<function>echo</function>-Anweisung von PHP auszugeben. Bitte
|
|
beachten Sie, dass die Datei <emphasis>nicht ausführbar</emphasis>
|
|
sein muss. Der Server erkennt anhand der Dateiendung ".php", dass
|
|
sie durch PHP interpretiert werden muss. Stellen Sie sich eine
|
|
normale HTML-Datei vor, die eine Menge von speziellen Tags enthält,
|
|
mit denen Sie einige interessante Dinge tun können.
|
|
</para>
|
|
<para>
|
|
Wenn Sie dieses Beispiel ausprobiert haben und Sie aber keine Ausgabe
|
|
erhalten haben oder zum Download aufgefordert worden sind oder die
|
|
komplette Datei als Text erhalten haben, dann ist es sehr wahrscheinlich,
|
|
dass auf Ihrem Server PHP nicht aktiviert oder falsch konfiguriert ist.
|
|
Fragen Sie in diesem
|
|
Fall Ihren Administrator und weisen Sie ihn auf das
|
|
<link linkend="install">Installations-Kapitel</link> hin.
|
|
Wenn Sie lokal entwickeln, lesen Sie bitte das Installations-Kapitel,
|
|
um festzustellen, ob alles richtig konfiguriert wurde. Stellen Sie
|
|
sicher, dass Sie die Datei über das HTTP-Protokoll aufrufen können.
|
|
Wenn Sie die Datei direkt aus Ihrem Dateisystem aufrufen, wird sie
|
|
nicht durch PHP geparst. Sollten Ihre Probleme nach Lesen dieses
|
|
Kapitels immer noch bestehen, zögern Sie nicht und nutzen Sie eines
|
|
der vielen <link xlink:href="&url.php.support;">Support</link>-Angebote.
|
|
</para>
|
|
<para>
|
|
Der wichtigste Punkt im Beispiel ist, Ihnen das spezielle PHP Tag-Format
|
|
zu zeigen. Im Beispiel wurde <literal><?php</literal> verwendet,
|
|
um den Beginn eines PHP-Tags zu kennzeichnen. Anschließend folgte
|
|
die PHP-Anweisung. Mit dem schließenden Tag, <literal>?></literal>,
|
|
wurde der PHP-Modus wieder verlassen. Sie können an jeder Stelle und so
|
|
oft Sie wollen, in den PHP-Modus wechseln und ihn wieder verlassen. Für
|
|
weitere Details lesen Sie bitte den Abschnitt zu den <link
|
|
linkend="language.basic-syntax">Grundlagen der Syntax</link> von PHP.
|
|
</para>
|
|
|
|
<note>
|
|
<title>Anmerkungen zu Zeilenwechseln</title>
|
|
<para>
|
|
Zeilenwechsel sind in HTML nur von geringer Bedeutung, trotzdem
|
|
ist es sinnvoll HTML Code durch Zeilenwechsel zu formatieren
|
|
um die Lesbarkeit zu erhöhen. Ein Zeilenwechsel, der direkt auf
|
|
ein schließendes <literal>?>></literal> folgt, wird von PHP
|
|
bei der Ausgabe entfernt. Dies ist äußerst nützlich, wenn Sie
|
|
viele PHP-Blöcke einfügen oder Dateien includieren, die keine
|
|
Ausgabe erzeugen sollen. Auf der anderen Seite kann es aber auch
|
|
verwirrend sein. Sie können einen Zeilenwechsel erzwingen, indem
|
|
Sie entweder ein zusätzliches Leerzeichen hinter
|
|
<literal>?></literal> einfügen oder explizit mit echo oder
|
|
print ein Zeilenwechselzeichen am Ende Ihres Codes ausgeben.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Anmerkung zu Text-Editoren</title>
|
|
<para>
|
|
Es gibt eine ganze Reihe von Text-Editoren und Integrated Development
|
|
Environments (IDEs), mit denen Sie Ihre PHP-Dateien erstellen, bearbeiten
|
|
und managen können. Eine Liste solcher Programme finden Sie hier:
|
|
<link xlink:href="&url.phpeditorlist;">PHP Editors List</link>.
|
|
Wenn Sie einen Editor vorschlagen möchten, besuchen Sie bitte die genannte
|
|
Seite und bitten Sie den Betreiber der Seite, dass er den Editor
|
|
der Liste hinzufügt.
|
|
Wir empfehlen Ihnen einen Editor zu benutzen, der Syntax-Highlighting
|
|
bietet.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Anmerkung zu Textverarbeitungsprogrammen</title>
|
|
<para>
|
|
Textverarbeitungsprogramme wie StarOffice Writer, Microsoft Word und Abiword sind
|
|
keine gute Wahl, um PHP-Dateien zu bearbeiten.
|
|
Wenn Sie eines dieser Programme für dieses Test-Skript nutzen möchten,
|
|
dann müssen Sie sicherstellen, dass die Datei als <emphasis>"Nur
|
|
Text"</emphasis>-Datei
|
|
gespeichert wird, da PHP sonst das Skript nicht lesen und nicht
|
|
ausführen kann.
|
|
</para>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Anmerkung zu Notepad, dem Windows-Standard-Editor</title>
|
|
<para>
|
|
Wenn Sie Ihre PHP-Skripte mit Notepad schreiben, müssen Sie sicherstellen,
|
|
dass Ihre Dateien mit der Endung <filename>.php</filename> gespeichert
|
|
werden. (Notepad fügt die Endung <filename>.txt</filename> automatisch
|
|
an den Dateinamen an, wenn Sie das nicht mit einem der folgenden Schritte
|
|
verhindern.)
|
|
Wenn Sie die Datei speichern und einen Namen für die Datei eingeben sollen,
|
|
dann setzen Sie den Dateinamen in Anführungszeichen (z.B.
|
|
"<filename>hallo.php</filename>").
|
|
Alternativ können Sie auch im "Datei speichern"-Fenster in der Drop-Down-Liste
|
|
"Dateityp" die Einstellung auf "Alle Dateien" ändern. Sie können dann den
|
|
Dateinamen ohne Anführungszeichen eingeben.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
Nachdem Sie jetzt erfolgreich ein einfaches, funktionierendes PHP-Skript
|
|
geschrieben haben, wird es Zeit, das berühmteste PHP-Skript zu schreiben.
|
|
Rufen Sie die Funktion <function>phpinfo</function> auf und Sie bekommen
|
|
viele nützliche Informationen über Ihr System und Ihre Installation wie
|
|
z.B. die verfügbaren <link
|
|
linkend="language.variables.predefined">vordefinierten Variablen</link>,
|
|
die geladenen PHP-Module und die <link
|
|
linkend="configuration">Konfigurations</link>-Einstellungen. Nehmen Sie
|
|
sich etwas Zeit und schauen Sie sich diese wichtigen Informationen an.
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Anzeigen von Systeminformationen mit PHP</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php phpinfo(); ?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.useful">
|
|
<title>Etwas nützliches</title>
|
|
<para>
|
|
Kommen wir nun zu einem etwas nützlicheren Beispiel. Wir wollen prüfen,
|
|
welchen Browser der Besucher benutzt.
|
|
Um das zu tun, prüfen wir den "user agent"-String, den der Browser
|
|
als Teil seiner HTTP-Anforderung sendet. Diese Information ist in einer
|
|
<link linkend="language.variables">Variablen</link> abgelegt. In PHP
|
|
beginnen Variablen immer mit einem Dollar-Zeichen. Die Variable, die
|
|
uns jetzt interessiert, ist <varname>$_SERVER['HTTP_USER_AGENT']</varname>.
|
|
</para>
|
|
<note>
|
|
<para>
|
|
<varname>$_SERVER</varname> ist eine speziell reservierte PHP-Variable,
|
|
die alle Informationen über den Webserver enthält. Diese Variable wird
|
|
auch als superglobal bezeichnet. Mehr Informationen darüber finden Sie auf der
|
|
Manual-Seite über <link
|
|
linkend="language.variables.superglobals">Superglobals</link>.
|
|
Diese speziellen Variablen wurden in PHP
|
|
<link xlink:href="&url.php.release4.1.0;">4.1.0</link> eingeführt.
|
|
Vorher wurden stattdessen die älteren <varname>$HTTP_*_VARS</varname>-Arrays
|
|
benutzt, also z.B. <varname>$HTTP_SERVER_VARS</varname>.
|
|
Beginnend mit PHP 5.4.0 wurden diese älteren Variablen entfernt.
|
|
(Beachten Sie auch die Seite <link linkend="tutorial.oldcode">Alten Code
|
|
mit neuen PHP-Versionen benutzen</link>.)
|
|
</para>
|
|
</note>
|
|
<para>
|
|
Um die Variable auszugeben, schreiben Sie einfach:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Variable ausgeben (Array-Element)</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
echo $_SERVER['HTTP_USER_AGENT'];
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Die Ausgabe dieses Beispiels könnte so aussehen:
|
|
<screen role="html">
|
|
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
|
|
</screen>
|
|
</para>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Es gibt viele <link linkend="language.types">Typen</link> von
|
|
Variablen. Im obigen Beispiel haben wir ein <link
|
|
linkend="language.types.array">Array</link>-Element ausgegeben.
|
|
Arrays können sehr nützlich sein.
|
|
</para>
|
|
<para>
|
|
<varname>$_SERVER</varname> ist nur eine von vielen Variablen, die
|
|
Ihnen automatisch von PHP zur Verfügung gestellt werden. Eine Liste
|
|
finden Sie auf der Seite <link linkend="reserved.variables">Reservierte
|
|
Variablen</link> im Manual. Eine vollständige Liste können Sie auch
|
|
bekommen, wenn Sie sich die Ausgabe der
|
|
<function>phpinfo</function>-Funktion ansehen, die im Beispiel des
|
|
vorigen Abschnitts benutzt wurde.
|
|
</para>
|
|
<para>
|
|
Sie können mehrere PHP-Anweisungen innerhalb eines PHP-Tags
|
|
platzieren und so kleine Code-Blöcke schreiben, die mehr
|
|
als nur eine Ausgabe mit <function>echo</function> enthalten.
|
|
Wenn wir zum Beispiel prüfen möchten, ob es sich beim Browser
|
|
des Besuchers um den Internet Explorer handelt, können wir
|
|
folgenden Code benutzen:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Beispiel, das <link
|
|
linkend="language.control-structures">Kontrollstrukturen</link> und
|
|
<link linkend="language.functions">Funktionen</link> benutzt</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
|
|
echo "Sie benutzen Microsofts Internet Explorer.<br />";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Die Ausgabe dieses Skripts könnte so aussehen:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Sie benutzen Microsofts Internet Explorer.<br />
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Hier haben wir Ihnen eine ganze Reihe von neuen Konzepten vorgestellt.
|
|
Wir haben hier zuerst eine <link
|
|
linkend="control-structures.if">if</link>-Anweisung.
|
|
Wenn Sie mit der Grundlagen-Syntax der Programmiersprache C
|
|
vertraut sind, sollte Ihnen dies logisch erscheinen. Andernfalls
|
|
sollten Sie sich ein Buch mit einer
|
|
PHP-Einführung besorgen und die ersten Kapitel lesen. Sie
|
|
können natürlich auch in die <link
|
|
linkend="langref">Sprachreferenz</link> des Manuals schauen.
|
|
</para>
|
|
<para>
|
|
Das zweite hier vorgestellte Konzept ist der Aufruf der Funktion
|
|
<function>strpos</function>. <function>strpos</function> ist eine
|
|
in PHP eingebaute Funktion, die nach einem String in einem anderen
|
|
String sucht. In diesem Fall suchen wir nach <literal>'MSIE'</literal>
|
|
(die so genannte Nadel, engl. needle) in
|
|
<varname>$_SERVER['HTTP_USER_AGENT']</varname> (der so genannte
|
|
Heuhaufen, engl. haystack). Wenn die Nadel im Heuhaufen gefunden
|
|
wird, gibt die Funktion die Position der Nadel relativ zum Start
|
|
des Heuhaufens zurück. Andernfalls wird &false; zurückgegeben.
|
|
Wenn nicht &false; zurückgeben wird, wird die <link
|
|
linkend="control-structures.if">if</link>-Anweisung
|
|
zu &true; ausgewertet und der Code innerhalb der geschweiften Klammern
|
|
wird ausgeführt. Andernfalls wird der Code innerhalb der Klammern
|
|
nicht ausgeführt. Probieren Sie weitere
|
|
ähnliche Beispiele mit <link linkend="control-structures.if">if</link>,
|
|
<link linkend="control-structures.else">else</link> und anderen
|
|
Funktionen wie <function>strtoupper</function> oder
|
|
<function>strlen</function>. Jede dieser Manual-Seiten enthält
|
|
weitere Beispiele. Wenn Sie unsicher sind, wie die Funktionen
|
|
benutzt werden, lesen Sie die Handbuch-Seite <link
|
|
linkend="about.prototypes">Wie sind Funktionsdefinitionen
|
|
(Prototypen) zu lesen?</link> und den Abschnitt zu den
|
|
<link linkend="language.functions">PHP-Funktionen</link>.
|
|
</para>
|
|
<para>
|
|
Wir können jetzt einen Schritt weitergehen und sehen, wie Sie innerhalb
|
|
eines PHP-Blocks den PHP-Modus verlassen und wieder in ihn hinein
|
|
gelangen können:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>HTML- und PHP-Modus vermischt</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
|
|
?>
|
|
<h3>strpos() hat nicht FALSE zurückgegeben</h3>
|
|
<p>Sie benutzen Internet Explorer</p>
|
|
<?php
|
|
} else {
|
|
?>
|
|
<h3>strpos() hat FALSE zurückgegeben</h3>
|
|
<p>Sie benutzen nicht Internet Explorer</p>
|
|
<?php
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Die Ausgabe dieses Skripts könnte so aussehen:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
<h3>strpos() hat nicht FALSE zurückgegeben</h3>
|
|
<p>Sie benutzen Internet Explorer</p>
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Anstatt die PHP echo-Anweisung für die Ausgabe zu benutzen,
|
|
haben wir den PHP-Modus verlassen und normales HTML verwendet. Der wichtige
|
|
Punkt hierbei ist, dass der logische Ablauf des Skripts dadurch nicht
|
|
gestört wird. Nur einer der beiden HTML-Blöcke wird ausgegeben - abhängig
|
|
davon, was <function>strpos</function> zurückgibt bzw.
|
|
ob der String <literal>MSIE</literal> gefunden wird oder nicht.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.forms">
|
|
<title>Formulare verarbeiten</title>
|
|
<para>
|
|
Eine der mächtigsten Funktionen von PHP ist die Art, wie HTML-Formulare
|
|
verarbeitet werden. Sie sollten wissen, dass jedes Element eines Formulars
|
|
automatisch in Ihren PHP-Skripts verfügbar ist. Bitte lesen Sie die Seite
|
|
<link linkend="language.variables.external">Variablen aus externen Quellen</link>
|
|
für weitere Informationen und Beispiele über das Benutzen von Formularen
|
|
mit PHP. Hier ist ein Beispiel-HTML-Formular:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Ein einfaches HTML-Formular</title>
|
|
<programlisting role="html">
|
|
<![CDATA[
|
|
<form action="action.php" method="post">
|
|
<p>Ihr Name: <input type="text" name="name" /></p>
|
|
<p>Ihr Alter: <input type="text" name="alter" /></p>
|
|
<p><input type="submit" /></p>
|
|
</form>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
An diesem Formular ist nichts Besonderes. Es ist ein normales
|
|
HTML-Formular ohne irgendwelche speziellen Tags. Wenn der Benutzer
|
|
das Formular ausfüllt und den Submit-Button anklickt, wird die
|
|
Seite <filename>action.php</filename> aufgerufen. Diese Datei
|
|
könnte so aussehen:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Daten des Formulars ausgeben</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
Hallo <?php echo htmlspecialchars($_POST['name']); ?>.
|
|
Sie sind <?php echo (int)$_POST['alter']; ?> Jahre alt.
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Die Ausgabe des Skripts könnte dann so aussehen:
|
|
</para>
|
|
<screen role="html">
|
|
<![CDATA[
|
|
Hallo Joe. Sie sind 22 Jahre alt.
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
Abgesehen von dem <function>htmlspecialchars</function>-Aufruf
|
|
und dem <literal>(int)</literal> Cast sollte einfach zu verstehen
|
|
sein, was hier geschieht. <function>htmlspecialchars</function>
|
|
stellt sicher, dass die Zeichen, die in HTML eine spezielle Bedeutung
|
|
haben, ordentlich codiert werden, sodass niemand HTML Tags oder
|
|
Javascript-Code in Ihre Seite einschmuggeln kann. Da wir wissen,
|
|
dass das "alter" Feld eine Zahl enthalten soll,
|
|
<link linkend="language.types.typecasting">konvertieren</link>
|
|
wir es in einen <type>integer</type> Wert, wodurch automatisch
|
|
überflüssige Zeichen entfernt werden. Sie können diese Aufgabe
|
|
auch PHP überlassen, indem Sie die
|
|
<link linkend="ref.filter">Filter</link> Extension benutzen.
|
|
Die Variablen <varname>$_POST['name']</varname> und
|
|
<varname>$_POST['alter']</varname> werden für Sie automatisch
|
|
von PHP gesetzt. Weiter oben haben wir das superglobale Array
|
|
<varname>$_SERVER</varname> eingeführt, jetzt benutzen wir hier
|
|
das - ebenfalls superglobale - Array <varname>$_POST</varname>, welches alle
|
|
POST-Daten enthält. Beachten Sie, dass die im Formular verwendete
|
|
<emphasis>Methode</emphasis> POST ist. Hätten wir
|
|
<emphasis>GET</emphasis> verwendet, wären die Daten unseres
|
|
Formulars stattdessen im superglobalen Array <varname>$_GET</varname> verfügbar.
|
|
Sie können auch das superglobale Array <varname>$_REQUEST</varname> benutzen,
|
|
wenn die Quelle der Daten keine Rolle spielt. Dieses Array enthält
|
|
die GET-, POST- und COOKIE-Daten.
|
|
</para>
|
|
<para>
|
|
Sie können ebenfalls die Eingaben von XForms in PHP verarbeiten, auch
|
|
wenn Ihnen die von PHP unterstützten HTML-Formulare bisher gut
|
|
gereicht haben. Auch wenn die Arbeit mit XForms nichts für Anfänger
|
|
ist, sind Sie vielleicht trotzdem daran interessant. In unserem
|
|
Features-Kapitel finden Sie eine <link
|
|
linkend="features.xforms">kurze Einführung</link> in die Verarbeitung
|
|
von XForms-Daten.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.oldcode">
|
|
<title>Alten Code mit neuen PHP-Versionen benutzen</title>
|
|
<para>
|
|
Dadurch, dass PHP eine immer beliebtere Skriptsprache ist, gibt es
|
|
immer mehr öffentliche Quellen und Bibliotheken mit Code, den Sie
|
|
wieder verwenden können. Die PHP-Entwickler haben versucht, den
|
|
größten Teil der Sprache abwärtskompatibel zu halten. Das bedeutet,
|
|
dass ein Skript, das für eine ältere PHP-Version geschrieben wurde,
|
|
(im Idealfall) ohne Änderungen auch unter einer neueren PHP-Version
|
|
läuft. In der Praxis sind aber meist einige Änderungen nötig.
|
|
</para>
|
|
<para>
|
|
Zwei der wichtigsten aktuellen Änderungen, die alten Code betreffen, sind:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<simpara>
|
|
Die alten <varname>$HTTP_*_VARS</varname>-Arrays sind
|
|
ab PHP 5.4.0 nicht mehr verfügbar.
|
|
Die folgenden <link
|
|
linkend="language.variables.superglobals">Superglobalen Arrays</link>
|
|
wurden in PHP <link xlink:href="&url.php.release4.1.0;">4.1.0</link>
|
|
eingeführt: <varname>$_GET</varname>, <varname>$_POST</varname>,
|
|
<varname>$_COOKIE</varname>, <varname>$_SERVER</varname>,
|
|
<varname>$_FILES</varname>, <varname>$_ENV</varname>,
|
|
<varname>$_REQUEST</varname> und <varname>$_SESSION</varname>.
|
|
</simpara>
|
|
</listitem>
|
|
<listitem>
|
|
<simpara>
|
|
Externe Variablen werden standardmäßig nicht mehr im globalen Namensraum
|
|
registriert. Mit anderen Worten, seit PHP
|
|
<link xlink:href="&url.php.release4.2.0;">4.2.0</link> ist <emphasis>off</emphasis>
|
|
die Standard-Einstellung für die PHP-Direktive
|
|
<link linkend="ini.register-globals">register_globals</link>.
|
|
Die empfohlene Methode, auf diese Werte zuzugreifen, ist, die oben genannten
|
|
superglobalen Arrays zu verwenden. Ältere Skripte, Bücher und Tutorials gehen
|
|
eventuell davon aus, dass diese Einstellung auf <emphasis>on</emphasis> steht.
|
|
Wäre die Einstellung z.B. on, dann wäre die Variable <varname>$id</varname> aus
|
|
dem URL <literal>http://www.example.com/foo.php?id=42</literal> verfügbar.
|
|
Unabhängig davon, ob on oder off, ist <varname>$_GET['id']</varname> immer
|
|
verfügbar.
|
|
</simpara>
|
|
</listitem>
|
|
</itemizedlist>
|
|
Für weitere Details über diese Änderungen siehe die Seite über
|
|
<link linkend="language.variables.predefined">vordefinierte Variablen</link>
|
|
und die Links dort.
|
|
</para>
|
|
</section>
|
|
|
|
<section xml:id="tutorial.whatsnext">
|
|
<title>Und weiter?</title>
|
|
<para>
|
|
Mit dem neuen Wissen sollte es Ihnen möglich sein,
|
|
das meiste aus diesem Manual und die vielen Beispiel-Skripte
|
|
in den Beispiel-Archiven zu verstehen.
|
|
</para>
|
|
<para>
|
|
Wenn Sie an verschiedenen Präsentationen, die Ihnen zeigen, was PHP
|
|
alles tun kann, interessiert sind, dann besuchen Sie doch folgende
|
|
Seite: <link xlink:href="&url.php.talks;">&url.php.talks;</link>.
|
|
</para>
|
|
</section>
|
|
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|