cvs: phpdoc-de /chapters tutorial.xml /faq html.xml mailinglist.xml using.xml
| From: | Mark Wiesemann | Date: | Fri, 21 Mar 2003 21:19:24 +0000 |
| Subject: | cvs: phpdoc-de /chapters tutorial.xml /faq html.xml mailinglist.xml using.xml | ||
| Groups: | php.doc.de | ||
| Request: | Send a blank email to doc-de+get-571@lists.php.net to get a copy of this message | ||
wiesemann Fri Mar 21 16:19:24 2003 EDT
Modified files:
/phpdoc-de/chapters tutorial.xml
/phpdoc-de/faq html.xml mailinglist.xml using.xml
Log:
sync to en
Index: phpdoc-de/chapters/tutorial.xml diff -u phpdoc-de/chapters/tutorial.xml:1.2 phpdoc-de/chapters/tutorial.xml:1.3 --- phpdoc-de/chapters/tutorial.xml:1.2 Fri Jan 24 11:06:55 2003 +++ phpdoc-de/chapters/tutorial.xml Fri Mar 21 16:19:24 2003 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.10 Maintainer: wiesemann Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.11 Maintainer: wiesemann Status: ready --> <chapter id="tutorial"> <title>Kleines Tutorial</title> @@ -34,14 +34,31 @@ 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 linkend="install.apache">Apache</link> und natürlich + <ulink url="&url.php.downloads;">PHP</ulink> installieren. + Sehr empfehlenswert ist auch die Installation einer Datenbank + wie z.B. <ulink url="&url.mysql.docs;">MySQL</ulink>. Sie + können diese Programm entweder eins nach dem anderen selbst + installieren oder nach einem <ulink + url="&url.installkits;">vorkonfigurierten Paket</ulink> suchen, + dass automatisch alle benötigen Programme mit einigen wenigen + Mausklicks installieren kann. + Es ist sehr einfach, einen Webserver mit PHP-Support unter + jedem Betriebssystem, wie Linux oder Windows, zu installieren. + Unter Linux ist <ulink url="&url.rpmfind;">rpmfind</ulink> + nützlich, um RPMs zu finden. + </para> </sect1> <sect1 id="tutorial.firstpage"> <title>Ihre erste PHP-erweiterte Seite</title> <para> Erstellen Sie eine Datei mit dem Namen <filename>hallo.php</filename> - unterhalb des Root-Verzeichnisses Ihres Web-Servers mit dem folgenden - Inhalt: + und speichern Sie sie im Root-Verzeichnis Ihres Webservers + (<varname>DOCUMENT_ROOT</varname>) mit dem folgenden Inhalt: </para> <para> <example> @@ -53,13 +70,28 @@ <title>PHP-Test</title> </head> <body> - <?php echo "Hallo Welt<p>"; ?> + <?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 "/halle.php" 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. + Sie können sich auch die Direktiven + <varname>DocumentRoot</varname> und + <varname>ServerName</varname> in der Konfigurationsdatei Ihres + Webservers für weitere Informationen anschauen (bei Apache + lautet der Name dieser Datei <filename>httpd.conf</filename>). + Wenn Sie alles korrekt installiert haben, wird die Datei von + PHP geparst und Sie werden die folgende Ausgabe in Ihrem + Browser sehen: + </simpara> <para> - Dieses Skript wird folgende Ausgabe erzeugen: <screen role="html"> <![CDATA[ <html> @@ -67,7 +99,7 @@ <title>PHP-Test</title> </head> <body> - Hallo Welt<p> + <p>Hallo Welt</p> </body> </html> ]]> @@ -95,10 +127,11 @@ dass auf Ihrem Server PHP nicht aktiviert ist. Fragen Sie in diesem Fall Ihren Administrator und weisen Sie ihn auf das <link linkend="installation">Installations-Kapitel</link> hin. - Wenn Sie PHP-Skripte lokal entwickeln möchten, dann schauen Sie - auf die <ulink url="&url.php.downloads;">Download-Seite</ulink>. - Sie können lokal auf jedem Betriebssystem entwickeln, aber sie - müssen natürlich auch einen passenden Web-Server installieren. + Wenn Sie lokal entwickeln, lesen Sie bitte das Installations-Kapitel, + um festzustellen, ob alles richtig konfiguriert wurde. + Sollten Ihre Probleme nach Lesen dieses Kapitels immer noch bestehen, + zögern Sie nicht und nutzen Sie eines der vielen <ulink + url="&url.php.support;">Support</ulink>-Angebote. </para> <para> Der wichtigste Punkt im Beispiel ist, Ihnen das spezielle PHP Tag-Format @@ -106,7 +139,9 @@ 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. + 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>Anmerkung zu Text-Editoren</title> @@ -118,6 +153,8 @@ 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> @@ -126,9 +163,6 @@ <para> Textverarbeitungen wie StarOffice Writer, Microsoft Word und Abiword sind keine gute Wahl, um PHP-Dateien zu bearbeiten. - </para> - - <para> Wenn Sie eines dieser Programme für dieses Test-Skript nutzen möchten, dann müssen Sie sicherstellen, dass die Datei als "Nur Text"-Datei gespeichert wird, da PHP sonst das Skript nicht lesen und nicht @@ -144,21 +178,26 @@ werden. (Notepad fügt die Endung <filename>.txt</filename> automatisch an den Dateinamen an, wenn Sie das nicht mit einem der folgenden Schritte verhindern.) - </para> - - <para> 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>). - </para> - - <para> + "<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> + </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> </sect1> <sect1 id="tutorial.useful"> Index: phpdoc-de/faq/html.xml diff -u phpdoc-de/faq/html.xml:1.1 phpdoc-de/faq/html.xml:1.2 --- phpdoc-de/faq/html.xml:1.1 Fri Jan 24 12:07:45 2003 +++ phpdoc-de/faq/html.xml Fri Mar 21 16:19:24 2003 @@ -1,13 +1,17 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> -<!-- EN-Revision: 1.17 Maintainer: wiesemann Status: ready --> +<!-- $Revision: 1.2 $ --> +<!-- EN-Revision: 1.19 Maintainer: wiesemann Status: ready --> <chapter id="faq.html"> <title>PHP und HTML</title> <titleabbrev>PHP und HTML</titleabbrev> <para> PHP und HTML interagieren stark: PHP kann HTML generieren und HTML kann Informationen - an PHP weitergeben. + an PHP weitergeben. Bevor Sie diese FAQ lesen, sollten Sie verstanden haben, wie + Sie auf <link linkend="language.variables.external">Variablen außerhalb von + PHP</link> zugreifen können. Die Manual-Seite zu diesem Thema enthält viele Beispiele, + die das Verständnis erleichtern. Besonders wichtig ist weiterhin, zu wissen, was + die <literal>register_globals</literal>-Einstellung für Sie bedeutet. </para> <qandaset> @@ -131,7 +135,8 @@ <question> <para> Ich versuche ein <input type="image">-Tag zu benutzen, aber die Variablen - $foo.x and $foo.y sind nicht verfügbar. Wo finde ich diese? + <varname>$foo.x</varname> and <varname>$foo.y</varname> sind nicht verfügbar. + Auch <varname>$_GET['foo.x']</varname> existiert nicht. Wo finde ich diese? </para> </question> <answer> @@ -148,10 +153,13 @@ und <varname>foo.y</varname>. </para> <para> - Da <varname>$foo.x</varname> und <varname>$foo.y</varname> in PHP keine gültigen - Namen für Variablen sind, werden Sie automatisch in <varname>$foo_x</varname> - und <varname>$foo_y</varname> konvertiert. Die Punkte werden also durch - Unterstriche ersetzt. + Da <varname>foo.x</varname> und <varname>foo.y</varname> in PHP ungültige + Variablennamen erzeugen würden, werden Sie automatisch in + <varname>$foo_x</varname> und <varname>$foo_y</varname> konvertiert. Die + Punkte werden also durch Unterstriche ersetzt. Sie können auf diese + Variablen also genauso wie im Abschnitt <link + linkend="language.variables.external">Variablen außerhalb von PHP</link> + zugreifen, z.B. <varname>$_GET['foo_x']</varname>. </para> </answer> </qandaentry> Index: phpdoc-de/faq/mailinglist.xml diff -u phpdoc-de/faq/mailinglist.xml:1.1 phpdoc-de/faq/mailinglist.xml:1.2 --- phpdoc-de/faq/mailinglist.xml:1.1 Fri Jan 3 10:53:41 2003 +++ phpdoc-de/faq/mailinglist.xml Fri Mar 21 16:19:24 2003 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> -<!-- EN-Revision: 1.13 Maintainer: wiesemann Status: ready --> +<!-- $Revision: 1.2 $ --> +<!-- EN-Revision: 1.14 Maintainer: wiesemann Status: ready --> <chapter id="faq.mailinglist"> <title>Mailing-Listen</title> <titleabbrev>Mailing-Liste</titleabbrev> @@ -113,6 +113,11 @@ Wenn Sie jetzt immer noch keine Antwort gefunden haben, können Sie Ihre Frage gerne an die Mailing-Liste schicken. </para> + <para> + Bevor Sie eine Frage stellen, schauen Sie sich bitte die Seite + <ulink url="&faqurl.smart.questions;">How To Ask Questions The Smart + Way</ulink> an. + </para> </answer> </qandaentry> @@ -146,6 +151,11 @@ Betreff-Zeile zusammenfassen. Ein Betreff wie "Hilfe!" oder "Was ist das Problem hier?" wird mit Sicherheit von einem Großteil der Leser ignoriert werden. + </para> + <para> + Außerdem bitten wie Sie, die Seite <ulink url="&faqurl.smart.questions;">How + To Ask Questions The Smart Way</ulink> zu lesen, da dies auch für Sie selbst + eine große Hilfe sein kann. </para> </answer> </qandaentry> Index: phpdoc-de/faq/using.xml diff -u phpdoc-de/faq/using.xml:1.1 phpdoc-de/faq/using.xml:1.2 --- phpdoc-de/faq/using.xml:1.1 Fri Jan 3 15:16:17 2003 +++ phpdoc-de/faq/using.xml Fri Mar 21 16:19:24 2003 @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <!-- EN-Revision: 1.20 Maintainer: wiesemann Status: ready --> <chapter id="faq.using"> <title>PHP benutzen</title> <titleabbrev>PHP benutzen</titleabbrev> <para> - Diese Rubrik behandelt die beim Schreiben von PHP-Skripten am häufigsten - auftretenden Fehler. + Diese Rubrik behandelt viele beim Schreiben von PHP-Skripten auftretende + Fehler. </para> <qandaset> @@ -15,45 +15,91 @@ <question> <para> Ich möchte ein PHP-Skript schreiben, das Daten von beliebigen Formularen - verarbeiten kann. Woher weiß ich, welche Variablen über die POST-Methode verfügbar sind? + verarbeiten kann. Woher weiß ich, welche Variablen über die POST-Methode + verfügbar sind? </para> </question> <answer> <para> - Stellen Sie sicher, dass <link linkend="ini.track-vars">track_vars</link> - in Ihrer &php.ini; aktiviert ist (Standardeinstellung seit PHP 4.0.3). - Wenn <literal>track_vars</literal> aktiviert ist, erstellt PHP einige - assoziative Arrays. Das wichtige Array ist in diesem Fall <literal>$_POST</literal> - (in PHP-Versionen vor 4.1.0 war der Name hierfür <literal>$HTTP_POST_VARS</literal>). - Wenn Sie ein PHP-Skript schreiben möchten, das die Variablen, die über die - POST-Methode verfügbar sind, verarbeitet, dann müssen Sie ähnlich wie im folgenden - Beispiel vorgehen: + PHP bietet viele <link linkend="language.variables.predefined">vordefinierte + Variablen</link>, wie das superglobale <varname>$_POST</varname>. Sie + können <varname>$_POST</varname> mit einer Schleife durchlaufen, da es sich + um ein assoziatives Array mit allen über die POST-Methode übertragenen + Variablen handelt. Als Beispiel benutzen wir die <link + linkend="control-structures.foreach">foreach</link>-Schleife, um auf + leere Werte (mit der <function>empty</function>-Funktion) zu prüfen + und geben diese Werte aus. <programlisting role="php"> <![CDATA[ -foreach ($_POST as $var => $value) { - echo "$var = $value<br>\n"; +<?php +$empty = $post = array(); +foreach ($_POST as $varname => $varvalue) { + if (empty($varvalue)) { + $empty[$varname] = $varvalue; + } else { + $post[$varname] = $varvalue; + } } + +print "<pre>"; +if (empty($empty)) { + print "Keiner der POST-Werte ist leer. Die Werte sind:\n"; + var_dump($post); +} else { + print "Wir haben " . count($empty) . " leere Werte:\n"; + print "Alle Werte:\n"; var_dump($post); + print "Leer:\n"; var_dump($empty); + exit; +} +?> ]]> </programlisting> </para> </answer> </qandaentry> - <qandaentry id="faq.using.singlequotes"> + <qandaentry id="faq.using.addslashes"> + <question> + <para> + Ich möchte alle einfachen Anführungszeichen (') in einen + Backslash gefolgt von einem einfachen Anführungszeichen (') + ersetzen lassen. Wie kann ich das mit einem regulären + Ausdruck machen? Ich möchte außerdem " zu \" und \ zu \\ + konvertieren. + </para> + </question> + <answer> + <para> + Die Funktion <function>addslashes</function> erledigt genau das. + Siehe auch <function>mysql_escape_string</function>. Mit der + Funktion <function>stripslashes</function> können Sie die + Backslash-Zeichen wieder entfernen. + </para> + + ¬e.magicquotes.gpc; + + </answer> + </qandaentry> + + <qandaentry id="faq.using.stripslashes"> <question> <para> - Ich möchte alle einfachen Anführungszeichen (') in einen Backslash - gefolgt von einem einfachen Anführungszeichen konvertieren. Wie kann ich - das mit einem regulären Ausdruck machen? + Alle meine " werden in \" und meine ' werden in \' konvertiert. + Wie kann ich den nicht gewünschten Backslash entfernen? Warum und + wie sind diese Zeichen überhaupt konvertiert worden? </para> </question> <answer> <para> - Schauen Sie sich die <function>addslashes</function>-Funktion an, die - genau das macht. Sie sollten sich ebenfalls die - <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>-Direktive - in Ihrer &php.ini; anschauen. + Die PHP-Funktion <function>stripslashes</function> entfernt solche + Backslash-Zeichen aus Ihrem <type>String</type>. In den meisten + Fällen existieren diese Zeichen automatisch, weil die <link + linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>-Direktive + auf on steht. </para> + + ¬e.magicquotes.gpc; + </answer> </qandaentry> @@ -63,12 +109,16 @@ Wenn ich den folgenden Code ausführe, wird die Ausgabe in der falschen Reihenfolge ausgegeben: <programlisting role="php"> +<![CDATA[ +<?php function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); +?> +]]> </programlisting> Woran liegt das? </para> @@ -119,17 +169,21 @@ <qandaentry id="faq.using.headers-sent"> <question> <para> - Ich bekommen die Meldung 'Warning: Cannot send session cookie - headers already + Ich bekomme die Meldung 'Warning: Cannot send session cookie - headers already sent...' oder 'Cannot add header information - headers already sent...'. </para> </question> <answer> <para> Die Funktionen <function>header</function>, - <function>setcookie</function> und die Session-Funktionen müssen Header + <function>setcookie</function> und die <link + linkend="ref.session">Session-Funktionen</link> müssen Header dem Output-Stream hinzufügen. Header können aber nur gesendet werden, wenn Sie - vor allen anderen Daten gesendet werden. Prüfen Sie also, ob Ihr Skript Header - sendet, nachdem bereits irgendetwas ausgegeben wurde. + vor allen anderen Daten gesendet werden. Vor dem Aufruf dieser Funktionen darf + also keine Ausgabe (wie z.B. HTML-Code) stattfinden. Die Funktion + <function>headers_sent</function> prüft, ob Ihr Skript bereits Header gesendet + hat. Nützlich sind in diesem Zusammenhang auch die <link + linkend="ref.outcontrol">Funktionen zur Ausgabesteuerung</link>. </para> </answer> </qandaentry> @@ -147,13 +201,21 @@ Der folgende Code gibt alle Request-Header aus: <programlisting role="php"> <![CDATA[ +<?php $headers = getallheaders(); foreach ($headers as $name => $content) { echo "headers[$name] = $content<br>\n"; } +?> ]]> </programlisting> </para> + <para> + Siehe auch + <function>apache_lookup_uri</function>, + <function>apache_response_headers</function> und + <function>fsockopen</function>. + </para> </answer> </qandaentry> @@ -176,7 +238,9 @@ Dieses Problem tritt mit dem ISAPI-Modul nicht auf. Auch auf anderen NT-Web-Servern sollte dieses Problem nicht auftauchen. Weitere Informationen finden Sie auch hier: - <ulink url="&faqurl.iis;">&faqurl.iis;</ulink>. + <ulink url="&faqurl.iis;">&faqurl.iis;</ulink>. Lesen Sie auch den + Manual-Abschnitt zur <link + linkend="features.http-auth">HTTP-Authentifizierung mit PHP</link>. </para> </answer> </qandaentry> @@ -194,7 +258,7 @@ Netscape verarbeitet HTML-Tags (z.B. Tabellen) strenger als der IE. Meist ist es hilfreich, wenn Sie Ihre HTML-Ausgabe mit einem HTML-Validator (z.B. - <ulink url="&faqurl.w3.validator;">validator.w3.org</ulink>) + <ulink url="&url.w3.validator;">validator.w3.org</ulink>) prüfen. Z.B. kann ein fehlendes </table> den Fehler verursachen. </para> <para> @@ -217,15 +281,19 @@ <question> <para> Wie kann ich XML und PHP mischen? PHP beschwert sich über meine - <?xml>-Tags! + <?xml-Tags! </para> </question> <answer> <para> - Sie müssen die Kurzform der öffnenden PHP-Tags abschalten, indem - Sie in Ihrer &php.ini; <link linkend="ini.short-open-tag">short_tags</link> - auf 0 setzen oder indem Sie die gleichwertige Apache-Direktive benutzen. - Sie können dies auch innerhalb einer <File>-Sektion machen. + Um <?xml in Ihren PHP-Code einzufügen müssen Sie die Kurzform der + öffnenden PHP-Tags abschalten, indem Sie in Ihrer &php.ini; <link + linkend="ini.short-open-tag">short_tags</link> auf <literal>0</literal> + setzen. Sie können diese Direktive nicht mit der Funktion + <function>ini_set</function> setzen. Sie können unabhängig davon, ob + <link linkend="ini.short-open-tag">short_open_tags</link> auf on oder + off gesetzt ist, z.B. <literal><?php echo '<?xml'; ?></literal> + benutzen. Der Standardwert für diese Direktive ist on. </para> </answer> </qandaentry> @@ -252,21 +320,26 @@ <qandaentry id="faq.using.variables"> <question> <para> - Wo kann ich eine komplette Liste der mir zur Verfügung stehenden Variablen - finden und warum sind diese Variablen nicht in der PHP-Dokumentation - zu finden? + Wo kann ich eine komplette Liste der mir zur Verfügung stehenden + Variablen finden? </para> </question> <answer> <para> - Die beste Lösung ist, <literal><?php phpinfo(); ?></literal> - in ein PHP-Skript einzufügen und sich die Ausgabe anschauen. - Sie finden dort dann viele Informationen über Ihr PHP-Setup und - eine Liste sowohl der Umgebungsvariablen als auch der speziellen - Variablen, die Ihr Webserver zur Verfügung stellt. - Diese Liste kann nicht in der PHP-Dokumentation dokumentiert werden, - da sie stark vom verwendet Server abhängt. + Lesen Sie die Manual-Seite zu <link + linkend="language.variables.predefined">vordefinierten Variablen</link>, + die eine (unvollständige) Liste der vordefinierten Variablen, die Ihren + Skripten zur Verfügung stehen, enthält. Eine komplette Liste der + verfügbaren Variablen (und viele weitere Informationen) können Sie + sehen, wenn Sie die Funktion <function>phpinfo</function> aufrufen. + Beachten Sie auch den Abschnitt zu <link + linkend="language.variables.external">Variablen außerhalb von PHP</link>, + der verschiedene Szenarien für externen Variablen wie HTML-Formulare, + Cookies oder den URL beschreibt. </para> + + ¬e.registerglobals; + </answer> </qandaentry> @@ -281,19 +354,29 @@ </question> <answer> <para> - Umgebungsvariablen sind normale Variablen. Sie müssen diese Variablen - daher entweder in Ihrer Funktion als globale Variable deklarieren (z.B. - mit "<literal>global $DOCUMENT_ROOT;</literal>") oder das globale - Variablen-Array benutzen (z.B. "<literal>$GLOBALS["DOCUMENT_ROOT"]</literal>"). - </para> - <note> - <para> - Seit PHP 4.1.0 können Sie auch das superglobale Array - <literal>$_SERVER</literal> benutzen. Dieses Array steht Ihnen innerhalb - jeder Funktion zur Verfügung. Statt auf <literal>$DOCUMENT_ROOT</literal> - können Sie also auf <literal>$_SERVER["DOCUMENT_ROOT"]</literal> zugreifen. - </para> - </note> + Es ist wichtig, zu verstehen, dass die PHP-Direktive <link + linkend="ini.register-globals">register_globals</link> auch + Server- und Umgebungsvariablen betrifft. Wenn + register_globals = off (Standardwert seit PHP 4.2.0), dann + existiert <varname>$DOCUMENT_ROOT</varname> nicht. Stattdessen + können Sie <varname>$_SERVER['DOCUMENT_ROOT']</varname> + benutzen. Wenn register_globals = on, dann existieren auch + die Variablen <varname>$DOCUMENT_ROOT</varname> und + <varname>$GLOBALS['DOCUMENT_ROOT']</varname>. + </para> + <para> + Wenn Sie sicher sind, dass register_globals = on, und sich wundern, + warum <varname>$DOCUMENT_ROOT</varname> innerhalb von Funktionen + nicht verfügbar ist: das liegt daran, dass es sich dabei um eine + Variable wie jede andere handelt und sie deswegen innerhalb der + Funktion zunächst <literal>global $DOCUMENT_ROOT</literal> + benutzen müssen. Siehe auch die Manual-Seite zum <link + linkend="language.variables.scope">Geltungsbereich von Variablen</link>. + Empfehlenswert ist, register_globals = off zu verwenden. + </para> + + ¬e.superglobals; + </answer> </qandaentry>
Index: phpdoc-de/chapters/tutorial.xml diff -u phpdoc-de/chapters/tutorial.xml:1.2 phpdoc-de/chapters/tutorial.xml:1.3 --- phpdoc-de/chapters/tutorial.xml:1.2 Fri Jan 24 11:06:55 2003 +++ phpdoc-de/chapters/tutorial.xml Fri Mar 21 16:19:24 2003 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.10 Maintainer: wiesemann Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.11 Maintainer: wiesemann Status: ready --> <chapter id="tutorial"> <title>Kleines Tutorial</title> @@ -34,14 +34,31 @@ 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 linkend="install.apache">Apache</link> und natürlich + <ulink url="&url.php.downloads;">PHP</ulink> installieren. + Sehr empfehlenswert ist auch die Installation einer Datenbank + wie z.B. <ulink url="&url.mysql.docs;">MySQL</ulink>. Sie + können diese Programm entweder eins nach dem anderen selbst + installieren oder nach einem <ulink + url="&url.installkits;">vorkonfigurierten Paket</ulink> suchen, + dass automatisch alle benötigen Programme mit einigen wenigen + Mausklicks installieren kann. + Es ist sehr einfach, einen Webserver mit PHP-Support unter + jedem Betriebssystem, wie Linux oder Windows, zu installieren. + Unter Linux ist <ulink url="&url.rpmfind;">rpmfind</ulink> + nützlich, um RPMs zu finden. + </para> </sect1> <sect1 id="tutorial.firstpage"> <title>Ihre erste PHP-erweiterte Seite</title> <para> Erstellen Sie eine Datei mit dem Namen <filename>hallo.php</filename> - unterhalb des Root-Verzeichnisses Ihres Web-Servers mit dem folgenden - Inhalt: + und speichern Sie sie im Root-Verzeichnis Ihres Webservers + (<varname>DOCUMENT_ROOT</varname>) mit dem folgenden Inhalt: </para> <para> <example> @@ -53,13 +70,28 @@ <title>PHP-Test</title> </head> <body> - <?php echo "Hallo Welt<p>"; ?> + <?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 "/halle.php" 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. + Sie können sich auch die Direktiven + <varname>DocumentRoot</varname> und + <varname>ServerName</varname> in der Konfigurationsdatei Ihres + Webservers für weitere Informationen anschauen (bei Apache + lautet der Name dieser Datei <filename>httpd.conf</filename>). + Wenn Sie alles korrekt installiert haben, wird die Datei von + PHP geparst und Sie werden die folgende Ausgabe in Ihrem + Browser sehen: + </simpara> <para> - Dieses Skript wird folgende Ausgabe erzeugen: <screen role="html"> <![CDATA[ <html> @@ -67,7 +99,7 @@ <title>PHP-Test</title> </head> <body> - Hallo Welt<p> + <p>Hallo Welt</p> </body> </html> ]]> @@ -95,10 +127,11 @@ dass auf Ihrem Server PHP nicht aktiviert ist. Fragen Sie in diesem Fall Ihren Administrator und weisen Sie ihn auf das <link linkend="installation">Installations-Kapitel</link> hin. - Wenn Sie PHP-Skripte lokal entwickeln möchten, dann schauen Sie - auf die <ulink url="&url.php.downloads;">Download-Seite</ulink>. - Sie können lokal auf jedem Betriebssystem entwickeln, aber sie - müssen natürlich auch einen passenden Web-Server installieren. + Wenn Sie lokal entwickeln, lesen Sie bitte das Installations-Kapitel, + um festzustellen, ob alles richtig konfiguriert wurde. + Sollten Ihre Probleme nach Lesen dieses Kapitels immer noch bestehen, + zögern Sie nicht und nutzen Sie eines der vielen <ulink + url="&url.php.support;">Support</ulink>-Angebote. </para> <para> Der wichtigste Punkt im Beispiel ist, Ihnen das spezielle PHP Tag-Format @@ -106,7 +139,9 @@ 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. + 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>Anmerkung zu Text-Editoren</title> @@ -118,6 +153,8 @@ 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> @@ -126,9 +163,6 @@ <para> Textverarbeitungen wie StarOffice Writer, Microsoft Word und Abiword sind keine gute Wahl, um PHP-Dateien zu bearbeiten. - </para> - - <para> Wenn Sie eines dieser Programme für dieses Test-Skript nutzen möchten, dann müssen Sie sicherstellen, dass die Datei als "Nur Text"-Datei gespeichert wird, da PHP sonst das Skript nicht lesen und nicht @@ -144,21 +178,26 @@ werden. (Notepad fügt die Endung <filename>.txt</filename> automatisch an den Dateinamen an, wenn Sie das nicht mit einem der folgenden Schritte verhindern.) - </para> - - <para> 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>). - </para> - - <para> + "<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> + </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> </sect1> <sect1 id="tutorial.useful"> Index: phpdoc-de/faq/html.xml diff -u phpdoc-de/faq/html.xml:1.1 phpdoc-de/faq/html.xml:1.2 --- phpdoc-de/faq/html.xml:1.1 Fri Jan 24 12:07:45 2003 +++ phpdoc-de/faq/html.xml Fri Mar 21 16:19:24 2003 @@ -1,13 +1,17 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> -<!-- EN-Revision: 1.17 Maintainer: wiesemann Status: ready --> +<!-- $Revision: 1.2 $ --> +<!-- EN-Revision: 1.19 Maintainer: wiesemann Status: ready --> <chapter id="faq.html"> <title>PHP und HTML</title> <titleabbrev>PHP und HTML</titleabbrev> <para> PHP und HTML interagieren stark: PHP kann HTML generieren und HTML kann Informationen - an PHP weitergeben. + an PHP weitergeben. Bevor Sie diese FAQ lesen, sollten Sie verstanden haben, wie + Sie auf <link linkend="language.variables.external">Variablen außerhalb von + PHP</link> zugreifen können. Die Manual-Seite zu diesem Thema enthält viele Beispiele, + die das Verständnis erleichtern. Besonders wichtig ist weiterhin, zu wissen, was + die <literal>register_globals</literal>-Einstellung für Sie bedeutet. </para> <qandaset> @@ -131,7 +135,8 @@ <question> <para> Ich versuche ein <input type="image">-Tag zu benutzen, aber die Variablen - $foo.x and $foo.y sind nicht verfügbar. Wo finde ich diese? + <varname>$foo.x</varname> and <varname>$foo.y</varname> sind nicht verfügbar. + Auch <varname>$_GET['foo.x']</varname> existiert nicht. Wo finde ich diese? </para> </question> <answer> @@ -148,10 +153,13 @@ und <varname>foo.y</varname>. </para> <para> - Da <varname>$foo.x</varname> und <varname>$foo.y</varname> in PHP keine gültigen - Namen für Variablen sind, werden Sie automatisch in <varname>$foo_x</varname> - und <varname>$foo_y</varname> konvertiert. Die Punkte werden also durch - Unterstriche ersetzt. + Da <varname>foo.x</varname> und <varname>foo.y</varname> in PHP ungültige + Variablennamen erzeugen würden, werden Sie automatisch in + <varname>$foo_x</varname> und <varname>$foo_y</varname> konvertiert. Die + Punkte werden also durch Unterstriche ersetzt. Sie können auf diese + Variablen also genauso wie im Abschnitt <link + linkend="language.variables.external">Variablen außerhalb von PHP</link> + zugreifen, z.B. <varname>$_GET['foo_x']</varname>. </para> </answer> </qandaentry> Index: phpdoc-de/faq/mailinglist.xml diff -u phpdoc-de/faq/mailinglist.xml:1.1 phpdoc-de/faq/mailinglist.xml:1.2 --- phpdoc-de/faq/mailinglist.xml:1.1 Fri Jan 3 10:53:41 2003 +++ phpdoc-de/faq/mailinglist.xml Fri Mar 21 16:19:24 2003 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> -<!-- EN-Revision: 1.13 Maintainer: wiesemann Status: ready --> +<!-- $Revision: 1.2 $ --> +<!-- EN-Revision: 1.14 Maintainer: wiesemann Status: ready --> <chapter id="faq.mailinglist"> <title>Mailing-Listen</title> <titleabbrev>Mailing-Liste</titleabbrev> @@ -113,6 +113,11 @@ Wenn Sie jetzt immer noch keine Antwort gefunden haben, können Sie Ihre Frage gerne an die Mailing-Liste schicken. </para> + <para> + Bevor Sie eine Frage stellen, schauen Sie sich bitte die Seite + <ulink url="&faqurl.smart.questions;">How To Ask Questions The Smart + Way</ulink> an. + </para> </answer> </qandaentry> @@ -146,6 +151,11 @@ Betreff-Zeile zusammenfassen. Ein Betreff wie "Hilfe!" oder "Was ist das Problem hier?" wird mit Sicherheit von einem Großteil der Leser ignoriert werden. + </para> + <para> + Außerdem bitten wie Sie, die Seite <ulink url="&faqurl.smart.questions;">How + To Ask Questions The Smart Way</ulink> zu lesen, da dies auch für Sie selbst + eine große Hilfe sein kann. </para> </answer> </qandaentry> Index: phpdoc-de/faq/using.xml diff -u phpdoc-de/faq/using.xml:1.1 phpdoc-de/faq/using.xml:1.2 --- phpdoc-de/faq/using.xml:1.1 Fri Jan 3 15:16:17 2003 +++ phpdoc-de/faq/using.xml Fri Mar 21 16:19:24 2003 @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.1 $ --> +<!-- $Revision: 1.2 $ --> <!-- EN-Revision: 1.20 Maintainer: wiesemann Status: ready --> <chapter id="faq.using"> <title>PHP benutzen</title> <titleabbrev>PHP benutzen</titleabbrev> <para> - Diese Rubrik behandelt die beim Schreiben von PHP-Skripten am häufigsten - auftretenden Fehler. + Diese Rubrik behandelt viele beim Schreiben von PHP-Skripten auftretende + Fehler. </para> <qandaset> @@ -15,45 +15,91 @@ <question> <para> Ich möchte ein PHP-Skript schreiben, das Daten von beliebigen Formularen - verarbeiten kann. Woher weiß ich, welche Variablen über die POST-Methode verfügbar sind? + verarbeiten kann. Woher weiß ich, welche Variablen über die POST-Methode + verfügbar sind? </para> </question> <answer> <para> - Stellen Sie sicher, dass <link linkend="ini.track-vars">track_vars</link> - in Ihrer &php.ini; aktiviert ist (Standardeinstellung seit PHP 4.0.3). - Wenn <literal>track_vars</literal> aktiviert ist, erstellt PHP einige - assoziative Arrays. Das wichtige Array ist in diesem Fall <literal>$_POST</literal> - (in PHP-Versionen vor 4.1.0 war der Name hierfür <literal>$HTTP_POST_VARS</literal>). - Wenn Sie ein PHP-Skript schreiben möchten, das die Variablen, die über die - POST-Methode verfügbar sind, verarbeitet, dann müssen Sie ähnlich wie im folgenden - Beispiel vorgehen: + PHP bietet viele <link linkend="language.variables.predefined">vordefinierte + Variablen</link>, wie das superglobale <varname>$_POST</varname>. Sie + können <varname>$_POST</varname> mit einer Schleife durchlaufen, da es sich + um ein assoziatives Array mit allen über die POST-Methode übertragenen + Variablen handelt. Als Beispiel benutzen wir die <link + linkend="control-structures.foreach">foreach</link>-Schleife, um auf + leere Werte (mit der <function>empty</function>-Funktion) zu prüfen + und geben diese Werte aus. <programlisting role="php"> <![CDATA[ -foreach ($_POST as $var => $value) { - echo "$var = $value<br>\n"; +<?php +$empty = $post = array(); +foreach ($_POST as $varname => $varvalue) { + if (empty($varvalue)) { + $empty[$varname] = $varvalue; + } else { + $post[$varname] = $varvalue; + } } + +print "<pre>"; +if (empty($empty)) { + print "Keiner der POST-Werte ist leer. Die Werte sind:\n"; + var_dump($post); +} else { + print "Wir haben " . count($empty) . " leere Werte:\n"; + print "Alle Werte:\n"; var_dump($post); + print "Leer:\n"; var_dump($empty); + exit; +} +?> ]]> </programlisting> </para> </answer> </qandaentry> - <qandaentry id="faq.using.singlequotes"> + <qandaentry id="faq.using.addslashes"> + <question> + <para> + Ich möchte alle einfachen Anführungszeichen (') in einen + Backslash gefolgt von einem einfachen Anführungszeichen (') + ersetzen lassen. Wie kann ich das mit einem regulären + Ausdruck machen? Ich möchte außerdem " zu \" und \ zu \\ + konvertieren. + </para> + </question> + <answer> + <para> + Die Funktion <function>addslashes</function> erledigt genau das. + Siehe auch <function>mysql_escape_string</function>. Mit der + Funktion <function>stripslashes</function> können Sie die + Backslash-Zeichen wieder entfernen. + </para> + + ¬e.magicquotes.gpc; + + </answer> + </qandaentry> + + <qandaentry id="faq.using.stripslashes"> <question> <para> - Ich möchte alle einfachen Anführungszeichen (') in einen Backslash - gefolgt von einem einfachen Anführungszeichen konvertieren. Wie kann ich - das mit einem regulären Ausdruck machen? + Alle meine " werden in \" und meine ' werden in \' konvertiert. + Wie kann ich den nicht gewünschten Backslash entfernen? Warum und + wie sind diese Zeichen überhaupt konvertiert worden? </para> </question> <answer> <para> - Schauen Sie sich die <function>addslashes</function>-Funktion an, die - genau das macht. Sie sollten sich ebenfalls die - <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>-Direktive - in Ihrer &php.ini; anschauen. + Die PHP-Funktion <function>stripslashes</function> entfernt solche + Backslash-Zeichen aus Ihrem <type>String</type>. In den meisten + Fällen existieren diese Zeichen automatisch, weil die <link + linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>-Direktive + auf on steht. </para> + + ¬e.magicquotes.gpc; + </answer> </qandaentry> @@ -63,12 +109,16 @@ Wenn ich den folgenden Code ausführe, wird die Ausgabe in der falschen Reihenfolge ausgegeben: <programlisting role="php"> +<![CDATA[ +<?php function myfunc($argument) { echo $argument + 10; } $variable = 10; echo "myfunc($variable) = " . myfunc($variable); +?> +]]> </programlisting> Woran liegt das? </para> @@ -119,17 +169,21 @@ <qandaentry id="faq.using.headers-sent"> <question> <para> - Ich bekommen die Meldung 'Warning: Cannot send session cookie - headers already + Ich bekomme die Meldung 'Warning: Cannot send session cookie - headers already sent...' oder 'Cannot add header information - headers already sent...'. </para> </question> <answer> <para> Die Funktionen <function>header</function>, - <function>setcookie</function> und die Session-Funktionen müssen Header + <function>setcookie</function> und die <link + linkend="ref.session">Session-Funktionen</link> müssen Header dem Output-Stream hinzufügen. Header können aber nur gesendet werden, wenn Sie - vor allen anderen Daten gesendet werden. Prüfen Sie also, ob Ihr Skript Header - sendet, nachdem bereits irgendetwas ausgegeben wurde. + vor allen anderen Daten gesendet werden. Vor dem Aufruf dieser Funktionen darf + also keine Ausgabe (wie z.B. HTML-Code) stattfinden. Die Funktion + <function>headers_sent</function> prüft, ob Ihr Skript bereits Header gesendet + hat. Nützlich sind in diesem Zusammenhang auch die <link + linkend="ref.outcontrol">Funktionen zur Ausgabesteuerung</link>. </para> </answer> </qandaentry> @@ -147,13 +201,21 @@ Der folgende Code gibt alle Request-Header aus: <programlisting role="php"> <![CDATA[ +<?php $headers = getallheaders(); foreach ($headers as $name => $content) { echo "headers[$name] = $content<br>\n"; } +?> ]]> </programlisting> </para> + <para> + Siehe auch + <function>apache_lookup_uri</function>, + <function>apache_response_headers</function> und + <function>fsockopen</function>. + </para> </answer> </qandaentry> @@ -176,7 +238,9 @@ Dieses Problem tritt mit dem ISAPI-Modul nicht auf. Auch auf anderen NT-Web-Servern sollte dieses Problem nicht auftauchen. Weitere Informationen finden Sie auch hier: - <ulink url="&faqurl.iis;">&faqurl.iis;</ulink>. + <ulink url="&faqurl.iis;">&faqurl.iis;</ulink>. Lesen Sie auch den + Manual-Abschnitt zur <link + linkend="features.http-auth">HTTP-Authentifizierung mit PHP</link>. </para> </answer> </qandaentry> @@ -194,7 +258,7 @@ Netscape verarbeitet HTML-Tags (z.B. Tabellen) strenger als der IE. Meist ist es hilfreich, wenn Sie Ihre HTML-Ausgabe mit einem HTML-Validator (z.B. - <ulink url="&faqurl.w3.validator;">validator.w3.org</ulink>) + <ulink url="&url.w3.validator;">validator.w3.org</ulink>) prüfen. Z.B. kann ein fehlendes </table> den Fehler verursachen. </para> <para> @@ -217,15 +281,19 @@ <question> <para> Wie kann ich XML und PHP mischen? PHP beschwert sich über meine - <?xml>-Tags! + <?xml-Tags! </para> </question> <answer> <para> - Sie müssen die Kurzform der öffnenden PHP-Tags abschalten, indem - Sie in Ihrer &php.ini; <link linkend="ini.short-open-tag">short_tags</link> - auf 0 setzen oder indem Sie die gleichwertige Apache-Direktive benutzen. - Sie können dies auch innerhalb einer <File>-Sektion machen. + Um <?xml in Ihren PHP-Code einzufügen müssen Sie die Kurzform der + öffnenden PHP-Tags abschalten, indem Sie in Ihrer &php.ini; <link + linkend="ini.short-open-tag">short_tags</link> auf <literal>0</literal> + setzen. Sie können diese Direktive nicht mit der Funktion + <function>ini_set</function> setzen. Sie können unabhängig davon, ob + <link linkend="ini.short-open-tag">short_open_tags</link> auf on oder + off gesetzt ist, z.B. <literal><?php echo '<?xml'; ?></literal> + benutzen. Der Standardwert für diese Direktive ist on. </para> </answer> </qandaentry> @@ -252,21 +320,26 @@ <qandaentry id="faq.using.variables"> <question> <para> - Wo kann ich eine komplette Liste der mir zur Verfügung stehenden Variablen - finden und warum sind diese Variablen nicht in der PHP-Dokumentation - zu finden? + Wo kann ich eine komplette Liste der mir zur Verfügung stehenden + Variablen finden? </para> </question> <answer> <para> - Die beste Lösung ist, <literal><?php phpinfo(); ?></literal> - in ein PHP-Skript einzufügen und sich die Ausgabe anschauen. - Sie finden dort dann viele Informationen über Ihr PHP-Setup und - eine Liste sowohl der Umgebungsvariablen als auch der speziellen - Variablen, die Ihr Webserver zur Verfügung stellt. - Diese Liste kann nicht in der PHP-Dokumentation dokumentiert werden, - da sie stark vom verwendet Server abhängt. + Lesen Sie die Manual-Seite zu <link + linkend="language.variables.predefined">vordefinierten Variablen</link>, + die eine (unvollständige) Liste der vordefinierten Variablen, die Ihren + Skripten zur Verfügung stehen, enthält. Eine komplette Liste der + verfügbaren Variablen (und viele weitere Informationen) können Sie + sehen, wenn Sie die Funktion <function>phpinfo</function> aufrufen. + Beachten Sie auch den Abschnitt zu <link + linkend="language.variables.external">Variablen außerhalb von PHP</link>, + der verschiedene Szenarien für externen Variablen wie HTML-Formulare, + Cookies oder den URL beschreibt. </para> + + ¬e.registerglobals; + </answer> </qandaentry> @@ -281,19 +354,29 @@ </question> <answer> <para> - Umgebungsvariablen sind normale Variablen. Sie müssen diese Variablen - daher entweder in Ihrer Funktion als globale Variable deklarieren (z.B. - mit "<literal>global $DOCUMENT_ROOT;</literal>") oder das globale - Variablen-Array benutzen (z.B. "<literal>$GLOBALS["DOCUMENT_ROOT"]</literal>"). - </para> - <note> - <para> - Seit PHP 4.1.0 können Sie auch das superglobale Array - <literal>$_SERVER</literal> benutzen. Dieses Array steht Ihnen innerhalb - jeder Funktion zur Verfügung. Statt auf <literal>$DOCUMENT_ROOT</literal> - können Sie also auf <literal>$_SERVER["DOCUMENT_ROOT"]</literal> zugreifen. - </para> - </note> + Es ist wichtig, zu verstehen, dass die PHP-Direktive <link + linkend="ini.register-globals">register_globals</link> auch + Server- und Umgebungsvariablen betrifft. Wenn + register_globals = off (Standardwert seit PHP 4.2.0), dann + existiert <varname>$DOCUMENT_ROOT</varname> nicht. Stattdessen + können Sie <varname>$_SERVER['DOCUMENT_ROOT']</varname> + benutzen. Wenn register_globals = on, dann existieren auch + die Variablen <varname>$DOCUMENT_ROOT</varname> und + <varname>$GLOBALS['DOCUMENT_ROOT']</varname>. + </para> + <para> + Wenn Sie sicher sind, dass register_globals = on, und sich wundern, + warum <varname>$DOCUMENT_ROOT</varname> innerhalb von Funktionen + nicht verfügbar ist: das liegt daran, dass es sich dabei um eine + Variable wie jede andere handelt und sie deswegen innerhalb der + Funktion zunächst <literal>global $DOCUMENT_ROOT</literal> + benutzen müssen. Siehe auch die Manual-Seite zum <link + linkend="language.variables.scope">Geltungsbereich von Variablen</link>. + Empfehlenswert ist, register_globals = off zu verwenden. + </para> + + ¬e.superglobals; + </answer> </qandaentry>