cvs: phpdoc-de /language control-structures.xml /language/oop5 magic.xml /reference/info/functions getenv.xml /reference/outcontrol/functions
ob-start.xml /reference/sem/functions sem-get.xml /reference/xslt constants.xml /security database.xml filesystem.xml globals.xml variables.xml
| From: | Hartmut Holzgraefe | Date: | Mon, 24 Mar 2008 21:53:51 +0000 |
| Subject: | cvs: phpdoc-de /language control-structures.xml /language/oop5 magic.xml /reference/info/functions getenv.xml /reference/outcontrol/functions ob-start.xml /reference/sem/functions sem-get.xml /reference/xslt constants.xml /security database.xml filesystem.xml globals.xml variables.xml |
||
| Groups: | php.doc.de | ||
| Request: | Send a blank email to doc-de+get-2607@lists.php.net to get a copy of this message | ||
hholzgra Mon Mar 24 21:53:51 2008 UTC
Modified files:
/phpdoc-de/language control-structures.xml
/phpdoc-de/language/oop5 magic.xml
/phpdoc-de/reference/info/functions getenv.xml
/phpdoc-de/reference/outcontrol/functions ob-start.xml
/phpdoc-de/reference/sem/functions sem-get.xml
/phpdoc-de/reference/xslt constants.xml
/phpdoc-de/security database.xml filesystem.xml globals.xml
variables.xml
Log:
translation updates
http://cvs.php.net/viewvc.cgi/phpdoc-de/language/control-structures.xml?r1=1.44&r2=1.45&diff_format=u Index: phpdoc-de/language/control-structures.xml diff -u phpdoc-de/language/control-structures.xml:1.44 phpdoc-de/language/control-structures.xml:1.45 --- phpdoc-de/language/control-structures.xml:1.44 Sun Mar 23 00:02:34 2008 +++ phpdoc-de/language/control-structures.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.44 $ --> -<!-- EN-Revision: 1.94 Maintainer: hholzgra Status: ready --> +<!-- $Revision: 1.45 $ --> +<!-- EN-Revision: 1.114 Maintainer: hholzgra Status: ready --> <!-- CREDITS: tzwenny, betz --> <chapter xml:id="language.control-structures" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> @@ -296,13 +296,13 @@ </para> </sect1> <sect1 xml:id="control-structures.do.while"> - <title><literal>do..while</literal></title> + <title><literal>do-while</literal></title> <simpara> - <literal>do..while</literal>-Schleifen sind den <literal>while</literal> + <literal>do-while</literal>-Schleifen sind den <literal>while</literal> -Schleifen sehr ähnlich, außer dass der Wahrheitsgehalt des Ausdrucks erst am Ende jedes Durchlaufs geprüft wird, statt am Anfang. Der Hauptunterschied zu gewöhnlichen <literal>while</literal>-Schleifen ist der, dass die Schleife - bei <literal>do..while</literal> in jeden Fall einmal durchlaufen wird + bei <literal>do-while</literal> in jeden Fall einmal durchlaufen wird (die Bedingung wird erst am Ende eines Durchlaufs geprüft).Bei <literal>while</literal>-Schleifen hingegen kann es durchaus passieren, dass die Schleife nie durchlaufen wird (die Bedingung wird immer am Anfang @@ -310,7 +310,7 @@ ausgewertet endet die Ausführung der Schleife sofort). </simpara> <para> - Es gibt nur eine Syntax für <literal>do..while</literal>-Schleifen: + Es gibt nur eine Syntax für <literal>do-while</literal>-Schleifen: <informalexample> <programlisting role="php"> <![CDATA[ @@ -332,7 +332,7 @@ </simpara> <para> Erfahrene C-Anwender kennen auch die Möglichkeit, Programm-Blöcke - mit <literal>do..while</literal> (0) einzuschliessen und dann die + mit <literal>do-while</literal> (0) einzuschliessen und dann die <link linkend="control-structures.break"><literal>break</literal></link> Anweisung zu benutzen. Der folgende Programm-Ausschnitt zeigt diese Möglichkeit: @@ -459,23 +459,12 @@ </programlisting> </informalexample> </para> - <para> - Andere Sprachen haben für das Durchlaufen eines Hashs oder Arrays eine - <literal>foreach</literal>-Anweisung. PHP 3 hat dies nicht; im Gegensatz - zu PHP 4 (vgl. - <link linkend="control-structures.foreach">foreach</link>). - In PHP 3 können Sie für diesen Zweck - <link linkend="control-structures.while">while</link> mit der - <function>list</function>- und <function>each</function>-Funktion - kombinieren. Beispiele finden Sie in der Dokumentation zu diesen - Funktionen. - </para> </sect1> <sect1 xml:id="control-structures.foreach"> <title><literal>foreach</literal></title> <para> - PHP 4 (nicht PHP 3) enthält ein <literal>foreach</literal> Konstrukt, + Mit PHP 4 wurde ein <literal>foreach</literal> Konstrukt eingeführt, genau wie Perl und einige andere Sprachen. Diese ermöglicht es, auf einfache Weise ein Array zu durchlaufen. <literal>foreach</literal> funktioniert nur in Verbindung mit Arrays. Wenn Sie versuchen @@ -528,6 +517,27 @@ foreach-Schleife ist komplett abgearbeitet, wird der interne Arrayzeiger (des originalen Arrays) auf das letzte Element zeigen. </para> + <para> + Beginnend mit PHP 5 können Sie die Arrayelemente einfach ändern + wenn Sie der <literal>$value</literal> Variable ein & voranstellen. + Hierdurch werden die Elemente per <link linkend="language.references">reference</link> + zugewiesen und nicht als Kopie des Wertes. + <informalexample> + <programlisting role="php"> +<![CDATA[ +<?php +$arr = array(1, 2, 3, 4); +foreach ($arr as &$value) { + $value = $value * 2; +} +// $arr ist nun array(2, 4, 6, 8) +?> +]]> + </programlisting> + </informalexample> + Dies ist nur möglich wenn das Array referenziert werden kann + (d.h. veränderbar ist). + </para> </note> </para> <note> @@ -615,7 +625,7 @@ } /* foreach Beispiel 4: multidimensionale Arrays */ - +$a = array(); $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; @@ -644,7 +654,7 @@ <simpara> <literal>break</literal> bricht die Ausführung der aktuellen <literal>for</literal>, <literal>foreach</literal> - <literal>while</literal>, <literal>do..while</literal> Schleife oder einer + <literal>while</literal>, <literal>do-while</literal> Schleife oder einer <literal>switch</literal> Anweisungssequenz ab. </simpara> <simpara> @@ -807,7 +817,8 @@ das Gleiche zu erreichen. Einmal werden <literal>if</literal> und <literal>elseif</literal> Anweisungen benutzt, das andere Mal eine <literal>switch</literal>-Anweisung: - <informalexample> + <example> + <title><literal>switch</literal> Struktur</title> <programlisting role="php"> <![CDATA[ <?php @@ -833,7 +844,27 @@ ?> ]]> </programlisting> - </informalexample> + </example> + <example> + <title><literal>switch</literal> erlaubt die Nutzung von Strings</title> + <programlisting role="php"> +<![CDATA[ +<?php +switch ($i) { +case "apple": + echo "i is apple"; + break; +case "bar": + echo "i is bar"; + break; +case "cake": + echo "i is cake"; + break; +} +?> +]]> + </programlisting> + </example> </para> <para> Es ist wichtig, die Ausführung einer <literal>switch</literal>-Anweisung @@ -1227,7 +1258,8 @@ weiterhin ausgeführt. Stellen Sie außerdem sicher, dass Sie einen gültigen <link linkend="ini.include-path">include_path</link> gesetzt haben. Beachten Sie, dass eine Parse Error in einer Datei, die mit require - eingebunden wurde, die Ausführung ihre Skripts nicht unterbricht. + eingebunden wurde, die Ausführung ihre Skripts vor PHP 4.3.5 nicht unterbricht. + Beginnend mit PHP 4.3.5 wird das Skript in diesem Fall abgebrochen. </simpara> <simpara> Dateien die mit include eingebunden werden, werden zuerst im include_path @@ -1241,6 +1273,8 @@ <filename>b.php</filename> zuerst im Verzeichnis <filename class="directory">/www/</filename> gesucht und danach im Verzeichnis <filename class="directory">/www/include/</filename>. + Beginnt der Pfad mit <literal>../</literal> so wird der include_path + nur relativ zum aktuellen Verzeichnis durchsucht. </simpara> <simpara> Wenn eine Datei eingebunden wird, erbt der enthaltene Code den @@ -1418,6 +1452,30 @@ diese werden dann an dem Punkt Ihres Skripts eingeführt, von wo aus der Aufruf mit include erfolgt ist. </simpara> + <para> + Da <function>include</function> ein spezielles Sprachkonstrukt ist + kann das Argument auch ohne Klammern übergeben werden. Sie sollten + dies beachten falls Sie den Rückgabewert vergleichen wollen. + <example> + <title>Prüfung des Rückgabewerts von include</title> + <programlisting role="php"> +<![CDATA[ +<?php +// das folgende funktioniert nicht, es wird als +// include(('vars.php') == 'OK'), d.h. include(''), ausgewertet +if (include('vars.php') == 'OK') { + echo 'OK'; +} + +// das folgende funktioniert +if ((include 'vars.php') == 'OK') { + echo 'OK'; +} +?> +]]> + </programlisting> + </example> + </para> <note> <simpara> In PHP 3 darf eine return-Anweisung nicht innerhalb eines Blocks @@ -1467,7 +1525,24 @@ <literal>$bar</literal> hat den Wert <literal>1</literal>, weil include erfolgreich war. Beachten Sie die Unterschiede in den obigen Beispielen. Das erste nutzt <function>return</function> innerhalb der eingebundenen - Datei im Gegensatz zum zweiten Beispiel. Weitere Möglichkeiten Dateien in + Datei im Gegensatz zum zweiten Beispiel. + Kann die Datei nicht eingebunden werden wird &false; zurückgegeben + und eine <literal>E_WARNING</literal> Warnung ausgegeben. + </simpara> + <para> + Funktionen die innerhalb einer Include-Datei definiert werden können + unabhängig davon ob sie vor oder nach der <function>return</function> + Anweisung stehen in der Hauptdatei benutzt werden. + PHP 5 bricht mit einem fatalen Fehler ab wenn die Datei zweimal eingebunden + wird da die enthaltenen Funktionen bereits definiert sind, PHP 4 dagegen + ignoriert funktionen die nach der <function>return</function> Anweisung + definiert werden. + Es wird empfohlen <function>include_once</function> zu benutzen und nicht + selbst innerhalb der eingebundenen Datei zu prüfen ob die Datei bereits + eingebunden wurde und mit einer bedingten return Anweisung abzubrechen. + </para> + <simpara> + Weitere Möglichkeiten Dateien in Variablen "einzubinden" bieten ihnen die Funktionen <function>fopen</function> und <function>file</function> oder <function>include</function> im Zusammenspiel mit den @@ -1509,11 +1584,15 @@ <link xlink:href="&url.php.pear;">PEAR</link>-Code entnehmen, welcher im aktuellsten PHP-Sourcecode enthalten ist. </para> - <note> <para> - <function>require_once</function> steht ab PHP 4.01pl2 zur - Verfügung. + Der Rückgabewert entspricht dem von <function>include</function>. + Wurde die Datei bereits eingebunden wird &true; zurückgegeben. </para> + <note> + <para> + <function>require_once</function> steht ab PHP 4.01pl2 zur + Verfügung. + </para> </note> <note> <para> @@ -1531,11 +1610,15 @@ <![CDATA[ <?php require_once("a.php"); // bindet a.php ein -require_once("A.php"); // bindet a.php auf Windows nochmal ein! +require_once("A.php"); // bindet a.php auf Windows nochmal ein! (nur PHP 4) ?> ]]> </programlisting> </example> + Dieses Verhalten hat sich in PHP 5 geändert - der Pfad wird zuerst + normalisiert so dass <filename>C:\PROGRA~1\A.php</filename> und + <filename>C:\Program Files\a.php</filename> als gleich erkannt + werden und so die Datei nur einmal eingebunden wird. </para> </note> &warn.no-win32-fopen-wrapper; @@ -1573,6 +1656,10 @@ <link xlink:href="&url.php.pear;">PEAR</link>-Code entnehmen, welcher im aktuellsten PHP-Source-Code enthalten ist. </para> + <para> + Der Rückgabewert entspricht dem von <function>include</function>. + Wurde die Datei bereits eingebunden wird &true; zurückgegeben. + </para> <note> <para> <function>include_once</function> steht ab PHP 4.01pl2 zur @@ -1595,11 +1682,15 @@ <![CDATA[ <?php include_once("a.php"); // bindet a.php ein -include_once("A.php"); // bindet a.php auf Windows nochmal ein! +include_once("A.php"); // bindet a.php auf Windows nochmal ein! (nur PHP 4) ?> ]]> </programlisting> </example> + Dieses Verhalten hat sich in PHP 5 geändert - der Pfad wird zuerst + normalisiert so dass <filename>C:\PROGRA~1\A.php</filename> und + <filename>C:\Program Files\a.php</filename> als gleich erkannt + werden und so die Datei nur einmal eingebunden wird. </para> </note> &warn.no-win32-fopen-wrapper; http://cvs.php.net/viewvc.cgi/phpdoc-de/language/oop5/magic.xml?r1=1.9&r2=1.10&diff_format=u Index: phpdoc-de/language/oop5/magic.xml diff -u phpdoc-de/language/oop5/magic.xml:1.9 phpdoc-de/language/oop5/magic.xml:1.10 --- phpdoc-de/language/oop5/magic.xml:1.9 Sun Mar 23 00:02:34 2008 +++ phpdoc-de/language/oop5/magic.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.9 $ --> -<!-- EN-Revision: 1.15 Maintainer: hholzgra Status: ready --> +<!-- $Revision: 1.10 $ --> +<!-- EN-Revision: 1.20 Maintainer: hholzgra Status: ready --> <!-- Credits: simp --> <sect1 xml:id="language.oop5.magic" xmlns="http://docbook.org/ns/docbook"> <title>Magische Methoden</title> @@ -10,6 +10,7 @@ <literal>__destruct</literal> (siehe auch <link linkend="language.oop5.decon">Konstruktoren und Destruktoren</link>), <literal>__call</literal>, + <literal>__callStatic</literal>, <literal>__get</literal>, <literal>__set</literal>, <literal>__isset</literal>, @@ -18,9 +19,8 @@ <literal>__sleep</literal>, <literal>__wakeup</literal>, <literal>__toString</literal>, - <literal>__set_state</literal>, - <link linkend="language.oop5.cloning">__clone</link> und - <link linkend="language.oop5.autoload">__autoload</link> + <literal>__set_state</literal> und + <link linkend="language.oop5.cloning">__clone</link> sind in PHP Klassen magisch. Man kann keine Funktionen gleichen Namens in einer seiner Klassen haben, wenn man nicht die magische Funktionalität, die sie mit sich bringen, haben will. http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/info/functions/getenv.xml?r1=1.5&r2=1.6&diff_format=u Index: phpdoc-de/reference/info/functions/getenv.xml diff -u phpdoc-de/reference/info/functions/getenv.xml:1.5 phpdoc-de/reference/info/functions/getenv.xml:1.6 --- phpdoc-de/reference/info/functions/getenv.xml:1.5 Sat Jun 23 13:21:38 2007 +++ phpdoc-de/reference/info/functions/getenv.xml Mon Mar 24 21:53:51 2008 @@ -1,38 +1,89 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.5 $ --> -<!-- EN-Revision: 1.1 Maintainer: nobody Status: ready --> - <refentry xml:id="function.getenv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> - <refnamediv> - <refname>getenv</refname> - <refpurpose> - Zeigt den Wert einer Umgebungsvariablen an - </refpurpose> - </refnamediv> - <refsect1> - <title>Beschreibung</title> - <methodsynopsis> - <type>string</type><methodname>getenv</methodname> - <methodparam><type>string</type><parameter>varname</parameter></methodparam> - </methodsynopsis> - <para> - Zeigt den Wert der Umgebungsvariablen - <parameter>varname</parameter> an oder &false; bei einem Fehler. - <informalexample> - <programlisting role="php"> -$ip = getenv ("REMOTE_ADDR"); // get the ip number of the user - </programlisting> - </informalexample> - </para> - <para> - Eine Liste aller Umgebungsvariablen wird mit - <function>phpinfo</function> angezeigt. Ein Überlick über viele - Umgebungsvariablen und deren Bedeutung findet sich unter den - <link xlink:href="&url.cgispecs;">CGI Spezificationen</link>, speziell - auf der Seite der <link xlink:href="&url.cgispec;">Umgebungsvariablen - </link>. - </para> - </refsect1> - </refentry> +<!-- $Revision: 1.6 $ --> +<!-- EN-Revision: 1.12 Maintainer: hholzgra Status: ready --> + +<refentry xml:id="function.getenv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> + <refnamediv> + <refname>getenv</refname> + <refpurpose>Liefert den Wert einer Umgebungsvariable</refpurpose> + </refnamediv> + + <refsect1 role="description"> + &reftitle.description; + <methodsynopsis> + <type>string</type><methodname>getenv</methodname> + <methodparam><type>string</type><parameter>varname</parameter></methodparam> + </methodsynopsis> + <para> + Liefert den Wert einer Umgebungsvariable. + </para> + <para> + Eine Liste aller Umgebungsvariablen können Sie über die Funktion + <function>phpinfo</function> anzeigen lassen. + Die Bedeutung vieler dieser Variablen können Sie in der + <link xlink:href="&url.cgispecs;">CGI Spezifikation</link> + im Abschnitt über <link xlink:href="&url.cgispec;" + >Umgebungsvariablen</link>. + </para> + </refsect1> + + <refsect1 role="parameters"> + &reftitle.parameters; + <para> + <variablelist> + <varlistentry> + <term><parameter>varname</parameter></term> + <listitem> + <para> + Der Variablenname + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + </refsect1> + + <refsect1 role="returnvalues"> + &reftitle.returnvalues; + <para> + Gibt den Wert der Umgebungsvariable + <parameter>varname</parameter> zurück + oder &false; bei Fehlern + </para> + </refsect1> + + <refsect1 role="examples"> + &reftitle.examples; + <para> + <example> + <title><function>getenv</function> Beispiel</title> + <programlisting role="php"> +<![CDATA[ +<?php +// nutzen Sie getenv() ... +$ip = getenv('REMOTE_ADDR'); + +// ... oder einfache die superglobalen Arrays ($_SERVER oder $_ENV) +$ip = $_SERVER['REMOTE_ADDR']; +?> +]]> + </programlisting> + </example> + </para> + </refsect1> + + <refsect1 role="seealso"> + &reftitle.seealso; + <para> + <simplelist> + <member><function>putenv</function></member> + <member><function>apache_getenv</function></member> + <member><link linkend="language.variables.superglobals">Superglobals</link></member> + </simplelist> + </para> + </refsect1> + +</refentry> <!-- Keep this comment at the end of the file Local variables: http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/outcontrol/functions/ob-start.xml?r1=1.7&r2=1.8&diff_format=u Index: phpdoc-de/reference/outcontrol/functions/ob-start.xml diff -u phpdoc-de/reference/outcontrol/functions/ob-start.xml:1.7 phpdoc-de/reference/outcontrol/functions/ob-start.xml:1.8 --- phpdoc-de/reference/outcontrol/functions/ob-start.xml:1.7 Sat Jun 23 13:21:44 2007 +++ phpdoc-de/reference/outcontrol/functions/ob-start.xml Mon Mar 24 21:53:51 2008 @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.7 $ --> +<!-- $Revision: 1.8 $ --> <!-- EN-Revision: 1.20 Maintainer: hholzgra Status: ready --> <refentry xml:id="function.ob-start" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>ob_start</refname> <refpurpose>Ausgabepufferung aktivieren</refpurpose> </refnamediv> - <refsect1> - <title>Description</title> + <refsect1 role="description"> + &reftitle.description; <methodsynopsis> <type>bool</type><methodname>ob_start</methodname> <methodparam choice="opt"><type>callback</type><parameter>output_callback</parameter></methodparam> http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/sem/functions/sem-get.xml?r1=1.6&r2=1.7&diff_format=u Index: phpdoc-de/reference/sem/functions/sem-get.xml diff -u phpdoc-de/reference/sem/functions/sem-get.xml:1.6 phpdoc-de/reference/sem/functions/sem-get.xml:1.7 --- phpdoc-de/reference/sem/functions/sem-get.xml:1.6 Sat Jun 23 13:21:47 2007 +++ phpdoc-de/reference/sem/functions/sem-get.xml Mon Mar 24 21:53:51 2008 @@ -1,49 +1,123 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.6 $ --> -<!-- EN-Revision: 1.9 Maintainer: hholzgra Status: ready --> - <refentry xml:id="function.sem-get" xmlns="http://docbook.org/ns/docbook"> - <refnamediv> - <refname>sem_get</refname> - <refpurpose>Zugriff auf ein Semaphor anfordern</refpurpose> - </refnamediv> - <refsect1> - <title>Beschreibung</title> - <methodsynopsis> - <type>resource</type><methodname>sem_get</methodname> - <methodparam><type>int</type><parameter>key</parameter></methodparam> - <methodparam choice="opt"><type>int</type><parameter>max_acquire</parameter></methodparam> - <methodparam choice="opt"><type>int</type><parameter>perm</parameter></methodparam> - <methodparam choice="opt"><type>int</type><parameter>auto_release</parameter></methodparam> - </methodsynopsis> - <para> - <function>sem_get</function> liefert eine ID die für den Zugriff - auf das System V Semaphor mit dem gegebenen <parameter>key</parameter> - benutzt werden kann. Der Semaphor wird mit den in <parameter>perm</parameter> - angegebenen Zugriffsrechten angelegt falls nötig. Die Anzahlder Prozesse - die gleichzeitig Zugriff auf den Semaphor erhalten können wird mit - <parameter>max_acquire</parameter> festgelegt (Default: 1). - </para> - <para> - Der optionale Parameter <parameter>auto_release</parameter> legt - fest ob der Semaphor zum Scriptende automatisch entfernt werden - soll. Der Parameter existiert seit PHP 4.3.0. - </para> - <para> - Liefert eine positive Semaphor ID be Erfolg oder &false; im - Fehlerfall. - </para> - <para> - Weitere Aufrufe von <function>sem_get</function> für den - gleichen Key liefern unterschiedliche Semaphor IDs, diese - greifen aber auf den gleichen darunterliegenden Semaphor - zu. - </para> - <para> - Siehe auch<function>sem_acquire</function>, - <function>sem_release</function> und <function>ftok</function>. - </para> - </refsect1> - </refentry> +<!-- $Revision: 1.7 $ --> +<!-- EN-Revision: 1.12 Maintainer: hholzgra Status: ready --> +<refentry xml:id="function.sem-get" xmlns="http://docbook.org/ns/docbook"> + <refnamediv> + <refname>sem_get</refname> + <refpurpose>Zugriff auf ein Semaphor anfordern</refpurpose> + </refnamediv> + <refsect1 role="description"> + &reftitle.description; + <methodsynopsis> + <type>resource</type><methodname>sem_get</methodname> + <methodparam><type>int</type><parameter>key</parameter></methodparam> + <methodparam choice="opt"><type>int</type><parameter>max_acquire</parameter></methodparam> + <methodparam choice="opt"><type>int</type><parameter>perm</parameter></methodparam> + <methodparam choice="opt"><type>int</type><parameter>auto_release</parameter></methodparam> + </methodsynopsis> + <para> + <function>sem_get</function> liefert eine ID die für den Zugriff + auf das System V Semaphor mit dem gegebenen <parameter>key</parameter> + benutzt werden kann. + </para> + <para> + Weitere Aufrufe von <function>sem_get</function> für den + gleichen Key liefern unterschiedliche Semaphor IDs, diese + greifen aber auf den gleichen darunterliegenden Semaphor + zu. + </para> + </refsect1> + + <refsect1 role="parameters"> + &reftitle.parameters; + <para> + <variablelist> + <varlistentry> + <term><parameter>key</parameter></term> + <listitem> + <para> + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><parameter>max_acquire</parameter></term> + <listitem> + <para> + Die Anzahl der Prozesse die gleichzeitig Zugriff auf den + Semaphor erhalten können wird durch den Parameter + <parameter>max_acquire</parameter> festgelegt + (Vorgabewert ist 1). + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><parameter>perm</parameter></term> + <listitem> + <para> + Die Zugriffsrechte für den Semaphore. Vorgabewert ist 0777. + Der Wert wird nur gesetzt wenn der aktuelle Prozess der einzige + ist der in diesem Augenblick mit dem Semaphor verknüpft ist. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><parameter>auto_release</parameter></term> + <listitem> + <para> + Legt fest ob der Semaphor am Skriptende automatisch freigegeben + werden soll. + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + </refsect1> + + <refsect1 role="returnvalues"> + &reftitle.returnvalues; + <para> + Gibt einen positiven Semaphor Identifier zrück oder &false; + bei Fehlern. + </para> + </refsect1> + + <refsect1 role="changelog"> + &reftitle.changelog; + <para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>4.3.0</entry> + <entry> + Der <parameter>auto_release</parameter> Parameter + wurde hinzugefügt. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + </refsect1> + + <refsect1 role="seealso"> + &reftitle.seealso; + <para> + <simplelist> + <member><function>sem_acquire</function></member> + <member><function>sem_release</function></member> + <member><function>ftok</function></member> + </simplelist> + </para> + </refsect1> + +</refentry> <!-- Keep this comment at the end of the file Local variables: http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/xslt/constants.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/reference/xslt/constants.xml diff -u phpdoc-de/reference/xslt/constants.xml:1.2 phpdoc-de/reference/xslt/constants.xml:1.3 --- phpdoc-de/reference/xslt/constants.xml:1.2 Tue Mar 11 22:59:20 2008 +++ phpdoc-de/reference/xslt/constants.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.1 Maintainer: hholzgra Status: working --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.6 Maintainer: hholzgra Status: ready --> <appendix xml:id="xslt.constants" xmlns="http://docbook.org/ns/docbook"> &reftitle.constants; @@ -13,8 +13,9 @@ </term> <listitem> <simpara> - Drop all logging and error reporting. This is a generic option - for all backends that may be added in the future. + Deaktiviert Protokol- und Fehlerausgaben. Dies ist eine + generische Option für alle Backends die möglicherweise + in einer zukünfitgen Version hinzugefügt wird. </simpara> </listitem> </varlistentry> @@ -25,8 +26,9 @@ </term> <listitem> <para> - Tell <productname>Sablotron</productname> to parse public entities. - By default this has been turned off. + Gibt <productname>Sablotron</productname> Anweisung + öffentliche Entitäten einzulesen. Dies ist normalerweise + deaktiviert. </para> </listitem> </varlistentry> @@ -37,9 +39,9 @@ </term> <listitem> <para> - Do not add the meta tag "Content-Type" for HTML output. - The default is set during compilation of - <productname>Sablotron</productname>. + Kein "Content-Type" Metatag zur HTML Ausgabe + hinzufügen. Der Vorgabewert wird beim kompilieren von + <productname>Sablotron</productname> festgelegt. </para> </listitem> </varlistentry> @@ -50,7 +52,8 @@ </term> <listitem> <simpara> - Suppress the whitespace stripping (on data files only). + Deaktiviert das Entfernen von Leerzeichen (nur bei + Datendateien). </simpara> </listitem> </varlistentry> @@ -61,7 +64,8 @@ </term> <listitem> <simpara> - Consider unresolved documents (the document() function) non-lethal. + Betrachte nicht auflösbare Dokumente (document() Funktion) + als nicht kritisch. </simpara> </listitem> </varlistentry> @@ -82,8 +86,8 @@ </term> <listitem> <simpara> - Error return code, for <link - linkend="function.xslt-set-scheme-handlers">scheme handlers</link>. + Fehlerkode zur Rückgabe aus <link + linkend="function.xslt-set-scheme-handlers">Schema Handlern</link>. </simpara> </listitem> </varlistentry> http://cvs.php.net/viewvc.cgi/phpdoc-de/security/database.xml?r1=1.4&r2=1.5&diff_format=u Index: phpdoc-de/security/database.xml diff -u phpdoc-de/security/database.xml:1.4 phpdoc-de/security/database.xml:1.5 --- phpdoc-de/security/database.xml:1.4 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/database.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.4 $ --> -<!-- EN-Revision: 1.5 Maintainer: tom Status: ready --> +<!-- $Revision: 1.5 $ --> +<!-- EN-Revision: 1.13 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.database" xmlns="http://docbook.org/ns/docbook"> <title>Datenbank - Sicherheit</title> @@ -125,18 +126,17 @@ <![CDATA[ // Speichern des Passwort hash $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", - addslashes($username), md5($password)); -$result = pg_exec($connection, $query); + pg_escape_string($username), md5($password)); +$result = pg_query($connection, $query); // Afragen, ob der User das richtige Passwort übermittelt hat $query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';", - addslashes($username), md5($password)); -$result = pg_exec($connection, $query); + pg_escape_string($username), md5($password)); +$result = pg_query($connection, $query); -if (pg_numrows($result) > 0) { +if (pg_num_rows($result) > 0) { echo "Welcome, $username!"; -} -else { +} else { echo "Authentication failed for $username."; } ]]> @@ -175,10 +175,10 @@ </title> <programlisting role="php"> <![CDATA[ -$offset = argv[0]; // Vorsicht, keine Validierung des Input ! +$offset = $argv[0]; // Vorsicht, keine Validierung des Input ! $query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;"; // mit PostgreSQL -$result = pg_exec($conn, $query); +$result = pg_query($conn, $query); // mit MySQL $result = mysql_query($query); ]]> @@ -403,9 +403,13 @@ </listitem> <listitem> <simpara> - Escapen Sie jeden nicht numerischen Input, welcher zur Datenbank - weitergereicht werden soll mit <function>addslashes</function> - oder <function>addcslashes</function>. Siehe auch <link + Escapen Sie jede nicht numerische Benutzereingabe, welcher zur Datenbank + weitergereicht werden soll mit der jeweiligen datenbankspezifischen + Escape-Funktion (z.B. <function>mysql_escape_string</function>, + <function>sql_escape_string</function> usw.). Wenn keine + datenbankspezifischen Escapemechanismen existieren können in der + Regel (je nach Datenbanktyp) auch die Funktion <function>addslashes</function> + und <function>addcslashes</function> von Nutzen sein. Siehe auch <link linkend="security.database.storage">das erste Beispiel</link>. Wie dieses Beispiel zeigt, sind in den statischen Teil der Abfrage eingebrachten Escapes nicht genug, und können leicht gehacked werden. http://cvs.php.net/viewvc.cgi/phpdoc-de/security/filesystem.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/security/filesystem.xml diff -u phpdoc-de/security/filesystem.xml:1.2 phpdoc-de/security/filesystem.xml:1.3 --- phpdoc-de/security/filesystem.xml:1.2 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/filesystem.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.3 Maintainer: tom Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.3 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.filesystem" xmlns="http://docbook.org/ns/docbook"> <title>Dateisystem - Sicherheit</title> <simpara> http://cvs.php.net/viewvc.cgi/phpdoc-de/security/globals.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/security/globals.xml diff -u phpdoc-de/security/globals.xml:1.2 phpdoc-de/security/globals.xml:1.3 --- phpdoc-de/security/globals.xml:1.2 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/globals.xml Mon Mar 24 21:53:51 2008 @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.3 Maintainer: tom Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.8 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.globals" xmlns="http://docbook.org/ns/docbook"> <title>Verwendung von Register Globals</title> + &warn.deprecated.removed-6-0-0; <para> Ein Feature von PHP zur Erhöhung der Sicherheit ist die Konfiguration von PHP mit <link linkend="ini.register-globals">register_globals</link> = off. @@ -81,6 +83,11 @@ <function>error_reporting</function> so einstellen, dass Fehler des Levels <constant>E_NOTICE</constant> angezeigt werden. </para> + <para> + Sie knnen die On und Off Einstellungen von register_globals + emulieren, nheres hierzu finden Sie in den <link + linkend="faq.misc.registerglobals">FAQ</link>. + </para> ¬e.superglobals; http://cvs.php.net/viewvc.cgi/phpdoc-de/security/variables.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/security/variables.xml diff -u phpdoc-de/security/variables.xml:1.2 phpdoc-de/security/variables.xml:1.3 --- phpdoc-de/security/variables.xml:1.2 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/variables.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.3 Maintainer: tom Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.5 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.variables" xmlns="http://docbook.org/ns/docbook"> <title>Vom Nutzer übermittelte Daten</title> <para> @@ -31,6 +32,8 @@ ]]> </programlisting> </example> + </para> + <para> Sie sollten Ihren Code immer sorgfältig kontrollieren, um eine sorgfältige Prüfung irgendwelcher von einem Web-Browser übertragenen Variablen sicherzustellen, und sich selbst folgende Fragen stellen: @@ -62,6 +65,8 @@ </simpara> </listitem> </itemizedlist> + </para> + <para> Wenn Sie sich diese Fragen anstatt danach schon während dem Schreiben des Skriptes stellen, ersparen Sie sich das unangenehme Umschreiben, wenn eine Erhöhung der Sicherheit erforderlich wird. Mit dieser Art
http://cvs.php.net/viewvc.cgi/phpdoc-de/language/control-structures.xml?r1=1.44&r2=1.45&diff_format=u Index: phpdoc-de/language/control-structures.xml diff -u phpdoc-de/language/control-structures.xml:1.44 phpdoc-de/language/control-structures.xml:1.45 --- phpdoc-de/language/control-structures.xml:1.44 Sun Mar 23 00:02:34 2008 +++ phpdoc-de/language/control-structures.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.44 $ --> -<!-- EN-Revision: 1.94 Maintainer: hholzgra Status: ready --> +<!-- $Revision: 1.45 $ --> +<!-- EN-Revision: 1.114 Maintainer: hholzgra Status: ready --> <!-- CREDITS: tzwenny, betz --> <chapter xml:id="language.control-structures" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> @@ -296,13 +296,13 @@ </para> </sect1> <sect1 xml:id="control-structures.do.while"> - <title><literal>do..while</literal></title> + <title><literal>do-while</literal></title> <simpara> - <literal>do..while</literal>-Schleifen sind den <literal>while</literal> + <literal>do-while</literal>-Schleifen sind den <literal>while</literal> -Schleifen sehr ähnlich, außer dass der Wahrheitsgehalt des Ausdrucks erst am Ende jedes Durchlaufs geprüft wird, statt am Anfang. Der Hauptunterschied zu gewöhnlichen <literal>while</literal>-Schleifen ist der, dass die Schleife - bei <literal>do..while</literal> in jeden Fall einmal durchlaufen wird + bei <literal>do-while</literal> in jeden Fall einmal durchlaufen wird (die Bedingung wird erst am Ende eines Durchlaufs geprüft).Bei <literal>while</literal>-Schleifen hingegen kann es durchaus passieren, dass die Schleife nie durchlaufen wird (die Bedingung wird immer am Anfang @@ -310,7 +310,7 @@ ausgewertet endet die Ausführung der Schleife sofort). </simpara> <para> - Es gibt nur eine Syntax für <literal>do..while</literal>-Schleifen: + Es gibt nur eine Syntax für <literal>do-while</literal>-Schleifen: <informalexample> <programlisting role="php"> <![CDATA[ @@ -332,7 +332,7 @@ </simpara> <para> Erfahrene C-Anwender kennen auch die Möglichkeit, Programm-Blöcke - mit <literal>do..while</literal> (0) einzuschliessen und dann die + mit <literal>do-while</literal> (0) einzuschliessen und dann die <link linkend="control-structures.break"><literal>break</literal></link> Anweisung zu benutzen. Der folgende Programm-Ausschnitt zeigt diese Möglichkeit: @@ -459,23 +459,12 @@ </programlisting> </informalexample> </para> - <para> - Andere Sprachen haben für das Durchlaufen eines Hashs oder Arrays eine - <literal>foreach</literal>-Anweisung. PHP 3 hat dies nicht; im Gegensatz - zu PHP 4 (vgl. - <link linkend="control-structures.foreach">foreach</link>). - In PHP 3 können Sie für diesen Zweck - <link linkend="control-structures.while">while</link> mit der - <function>list</function>- und <function>each</function>-Funktion - kombinieren. Beispiele finden Sie in der Dokumentation zu diesen - Funktionen. - </para> </sect1> <sect1 xml:id="control-structures.foreach"> <title><literal>foreach</literal></title> <para> - PHP 4 (nicht PHP 3) enthält ein <literal>foreach</literal> Konstrukt, + Mit PHP 4 wurde ein <literal>foreach</literal> Konstrukt eingeführt, genau wie Perl und einige andere Sprachen. Diese ermöglicht es, auf einfache Weise ein Array zu durchlaufen. <literal>foreach</literal> funktioniert nur in Verbindung mit Arrays. Wenn Sie versuchen @@ -528,6 +517,27 @@ foreach-Schleife ist komplett abgearbeitet, wird der interne Arrayzeiger (des originalen Arrays) auf das letzte Element zeigen. </para> + <para> + Beginnend mit PHP 5 können Sie die Arrayelemente einfach ändern + wenn Sie der <literal>$value</literal> Variable ein & voranstellen. + Hierdurch werden die Elemente per <link linkend="language.references">reference</link> + zugewiesen und nicht als Kopie des Wertes. + <informalexample> + <programlisting role="php"> +<![CDATA[ +<?php +$arr = array(1, 2, 3, 4); +foreach ($arr as &$value) { + $value = $value * 2; +} +// $arr ist nun array(2, 4, 6, 8) +?> +]]> + </programlisting> + </informalexample> + Dies ist nur möglich wenn das Array referenziert werden kann + (d.h. veränderbar ist). + </para> </note> </para> <note> @@ -615,7 +625,7 @@ } /* foreach Beispiel 4: multidimensionale Arrays */ - +$a = array(); $a[0][0] = "a"; $a[0][1] = "b"; $a[1][0] = "y"; @@ -644,7 +654,7 @@ <simpara> <literal>break</literal> bricht die Ausführung der aktuellen <literal>for</literal>, <literal>foreach</literal> - <literal>while</literal>, <literal>do..while</literal> Schleife oder einer + <literal>while</literal>, <literal>do-while</literal> Schleife oder einer <literal>switch</literal> Anweisungssequenz ab. </simpara> <simpara> @@ -807,7 +817,8 @@ das Gleiche zu erreichen. Einmal werden <literal>if</literal> und <literal>elseif</literal> Anweisungen benutzt, das andere Mal eine <literal>switch</literal>-Anweisung: - <informalexample> + <example> + <title><literal>switch</literal> Struktur</title> <programlisting role="php"> <![CDATA[ <?php @@ -833,7 +844,27 @@ ?> ]]> </programlisting> - </informalexample> + </example> + <example> + <title><literal>switch</literal> erlaubt die Nutzung von Strings</title> + <programlisting role="php"> +<![CDATA[ +<?php +switch ($i) { +case "apple": + echo "i is apple"; + break; +case "bar": + echo "i is bar"; + break; +case "cake": + echo "i is cake"; + break; +} +?> +]]> + </programlisting> + </example> </para> <para> Es ist wichtig, die Ausführung einer <literal>switch</literal>-Anweisung @@ -1227,7 +1258,8 @@ weiterhin ausgeführt. Stellen Sie außerdem sicher, dass Sie einen gültigen <link linkend="ini.include-path">include_path</link> gesetzt haben. Beachten Sie, dass eine Parse Error in einer Datei, die mit require - eingebunden wurde, die Ausführung ihre Skripts nicht unterbricht. + eingebunden wurde, die Ausführung ihre Skripts vor PHP 4.3.5 nicht unterbricht. + Beginnend mit PHP 4.3.5 wird das Skript in diesem Fall abgebrochen. </simpara> <simpara> Dateien die mit include eingebunden werden, werden zuerst im include_path @@ -1241,6 +1273,8 @@ <filename>b.php</filename> zuerst im Verzeichnis <filename class="directory">/www/</filename> gesucht und danach im Verzeichnis <filename class="directory">/www/include/</filename>. + Beginnt der Pfad mit <literal>../</literal> so wird der include_path + nur relativ zum aktuellen Verzeichnis durchsucht. </simpara> <simpara> Wenn eine Datei eingebunden wird, erbt der enthaltene Code den @@ -1418,6 +1452,30 @@ diese werden dann an dem Punkt Ihres Skripts eingeführt, von wo aus der Aufruf mit include erfolgt ist. </simpara> + <para> + Da <function>include</function> ein spezielles Sprachkonstrukt ist + kann das Argument auch ohne Klammern übergeben werden. Sie sollten + dies beachten falls Sie den Rückgabewert vergleichen wollen. + <example> + <title>Prüfung des Rückgabewerts von include</title> + <programlisting role="php"> +<![CDATA[ +<?php +// das folgende funktioniert nicht, es wird als +// include(('vars.php') == 'OK'), d.h. include(''), ausgewertet +if (include('vars.php') == 'OK') { + echo 'OK'; +} + +// das folgende funktioniert +if ((include 'vars.php') == 'OK') { + echo 'OK'; +} +?> +]]> + </programlisting> + </example> + </para> <note> <simpara> In PHP 3 darf eine return-Anweisung nicht innerhalb eines Blocks @@ -1467,7 +1525,24 @@ <literal>$bar</literal> hat den Wert <literal>1</literal>, weil include erfolgreich war. Beachten Sie die Unterschiede in den obigen Beispielen. Das erste nutzt <function>return</function> innerhalb der eingebundenen - Datei im Gegensatz zum zweiten Beispiel. Weitere Möglichkeiten Dateien in + Datei im Gegensatz zum zweiten Beispiel. + Kann die Datei nicht eingebunden werden wird &false; zurückgegeben + und eine <literal>E_WARNING</literal> Warnung ausgegeben. + </simpara> + <para> + Funktionen die innerhalb einer Include-Datei definiert werden können + unabhängig davon ob sie vor oder nach der <function>return</function> + Anweisung stehen in der Hauptdatei benutzt werden. + PHP 5 bricht mit einem fatalen Fehler ab wenn die Datei zweimal eingebunden + wird da die enthaltenen Funktionen bereits definiert sind, PHP 4 dagegen + ignoriert funktionen die nach der <function>return</function> Anweisung + definiert werden. + Es wird empfohlen <function>include_once</function> zu benutzen und nicht + selbst innerhalb der eingebundenen Datei zu prüfen ob die Datei bereits + eingebunden wurde und mit einer bedingten return Anweisung abzubrechen. + </para> + <simpara> + Weitere Möglichkeiten Dateien in Variablen "einzubinden" bieten ihnen die Funktionen <function>fopen</function> und <function>file</function> oder <function>include</function> im Zusammenspiel mit den @@ -1509,11 +1584,15 @@ <link xlink:href="&url.php.pear;">PEAR</link>-Code entnehmen, welcher im aktuellsten PHP-Sourcecode enthalten ist. </para> - <note> <para> - <function>require_once</function> steht ab PHP 4.01pl2 zur - Verfügung. + Der Rückgabewert entspricht dem von <function>include</function>. + Wurde die Datei bereits eingebunden wird &true; zurückgegeben. </para> + <note> + <para> + <function>require_once</function> steht ab PHP 4.01pl2 zur + Verfügung. + </para> </note> <note> <para> @@ -1531,11 +1610,15 @@ <![CDATA[ <?php require_once("a.php"); // bindet a.php ein -require_once("A.php"); // bindet a.php auf Windows nochmal ein! +require_once("A.php"); // bindet a.php auf Windows nochmal ein! (nur PHP 4) ?> ]]> </programlisting> </example> + Dieses Verhalten hat sich in PHP 5 geändert - der Pfad wird zuerst + normalisiert so dass <filename>C:\PROGRA~1\A.php</filename> und + <filename>C:\Program Files\a.php</filename> als gleich erkannt + werden und so die Datei nur einmal eingebunden wird. </para> </note> &warn.no-win32-fopen-wrapper; @@ -1573,6 +1656,10 @@ <link xlink:href="&url.php.pear;">PEAR</link>-Code entnehmen, welcher im aktuellsten PHP-Source-Code enthalten ist. </para> + <para> + Der Rückgabewert entspricht dem von <function>include</function>. + Wurde die Datei bereits eingebunden wird &true; zurückgegeben. + </para> <note> <para> <function>include_once</function> steht ab PHP 4.01pl2 zur @@ -1595,11 +1682,15 @@ <![CDATA[ <?php include_once("a.php"); // bindet a.php ein -include_once("A.php"); // bindet a.php auf Windows nochmal ein! +include_once("A.php"); // bindet a.php auf Windows nochmal ein! (nur PHP 4) ?> ]]> </programlisting> </example> + Dieses Verhalten hat sich in PHP 5 geändert - der Pfad wird zuerst + normalisiert so dass <filename>C:\PROGRA~1\A.php</filename> und + <filename>C:\Program Files\a.php</filename> als gleich erkannt + werden und so die Datei nur einmal eingebunden wird. </para> </note> &warn.no-win32-fopen-wrapper; http://cvs.php.net/viewvc.cgi/phpdoc-de/language/oop5/magic.xml?r1=1.9&r2=1.10&diff_format=u Index: phpdoc-de/language/oop5/magic.xml diff -u phpdoc-de/language/oop5/magic.xml:1.9 phpdoc-de/language/oop5/magic.xml:1.10 --- phpdoc-de/language/oop5/magic.xml:1.9 Sun Mar 23 00:02:34 2008 +++ phpdoc-de/language/oop5/magic.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.9 $ --> -<!-- EN-Revision: 1.15 Maintainer: hholzgra Status: ready --> +<!-- $Revision: 1.10 $ --> +<!-- EN-Revision: 1.20 Maintainer: hholzgra Status: ready --> <!-- Credits: simp --> <sect1 xml:id="language.oop5.magic" xmlns="http://docbook.org/ns/docbook"> <title>Magische Methoden</title> @@ -10,6 +10,7 @@ <literal>__destruct</literal> (siehe auch <link linkend="language.oop5.decon">Konstruktoren und Destruktoren</link>), <literal>__call</literal>, + <literal>__callStatic</literal>, <literal>__get</literal>, <literal>__set</literal>, <literal>__isset</literal>, @@ -18,9 +19,8 @@ <literal>__sleep</literal>, <literal>__wakeup</literal>, <literal>__toString</literal>, - <literal>__set_state</literal>, - <link linkend="language.oop5.cloning">__clone</link> und - <link linkend="language.oop5.autoload">__autoload</link> + <literal>__set_state</literal> und + <link linkend="language.oop5.cloning">__clone</link> sind in PHP Klassen magisch. Man kann keine Funktionen gleichen Namens in einer seiner Klassen haben, wenn man nicht die magische Funktionalität, die sie mit sich bringen, haben will. http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/info/functions/getenv.xml?r1=1.5&r2=1.6&diff_format=u Index: phpdoc-de/reference/info/functions/getenv.xml diff -u phpdoc-de/reference/info/functions/getenv.xml:1.5 phpdoc-de/reference/info/functions/getenv.xml:1.6 --- phpdoc-de/reference/info/functions/getenv.xml:1.5 Sat Jun 23 13:21:38 2007 +++ phpdoc-de/reference/info/functions/getenv.xml Mon Mar 24 21:53:51 2008 @@ -1,38 +1,89 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.5 $ --> -<!-- EN-Revision: 1.1 Maintainer: nobody Status: ready --> - <refentry xml:id="function.getenv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> - <refnamediv> - <refname>getenv</refname> - <refpurpose> - Zeigt den Wert einer Umgebungsvariablen an - </refpurpose> - </refnamediv> - <refsect1> - <title>Beschreibung</title> - <methodsynopsis> - <type>string</type><methodname>getenv</methodname> - <methodparam><type>string</type><parameter>varname</parameter></methodparam> - </methodsynopsis> - <para> - Zeigt den Wert der Umgebungsvariablen - <parameter>varname</parameter> an oder &false; bei einem Fehler. - <informalexample> - <programlisting role="php"> -$ip = getenv ("REMOTE_ADDR"); // get the ip number of the user - </programlisting> - </informalexample> - </para> - <para> - Eine Liste aller Umgebungsvariablen wird mit - <function>phpinfo</function> angezeigt. Ein Überlick über viele - Umgebungsvariablen und deren Bedeutung findet sich unter den - <link xlink:href="&url.cgispecs;">CGI Spezificationen</link>, speziell - auf der Seite der <link xlink:href="&url.cgispec;">Umgebungsvariablen - </link>. - </para> - </refsect1> - </refentry> +<!-- $Revision: 1.6 $ --> +<!-- EN-Revision: 1.12 Maintainer: hholzgra Status: ready --> + +<refentry xml:id="function.getenv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> + <refnamediv> + <refname>getenv</refname> + <refpurpose>Liefert den Wert einer Umgebungsvariable</refpurpose> + </refnamediv> + + <refsect1 role="description"> + &reftitle.description; + <methodsynopsis> + <type>string</type><methodname>getenv</methodname> + <methodparam><type>string</type><parameter>varname</parameter></methodparam> + </methodsynopsis> + <para> + Liefert den Wert einer Umgebungsvariable. + </para> + <para> + Eine Liste aller Umgebungsvariablen können Sie über die Funktion + <function>phpinfo</function> anzeigen lassen. + Die Bedeutung vieler dieser Variablen können Sie in der + <link xlink:href="&url.cgispecs;">CGI Spezifikation</link> + im Abschnitt über <link xlink:href="&url.cgispec;" + >Umgebungsvariablen</link>. + </para> + </refsect1> + + <refsect1 role="parameters"> + &reftitle.parameters; + <para> + <variablelist> + <varlistentry> + <term><parameter>varname</parameter></term> + <listitem> + <para> + Der Variablenname + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + </refsect1> + + <refsect1 role="returnvalues"> + &reftitle.returnvalues; + <para> + Gibt den Wert der Umgebungsvariable + <parameter>varname</parameter> zurück + oder &false; bei Fehlern + </para> + </refsect1> + + <refsect1 role="examples"> + &reftitle.examples; + <para> + <example> + <title><function>getenv</function> Beispiel</title> + <programlisting role="php"> +<![CDATA[ +<?php +// nutzen Sie getenv() ... +$ip = getenv('REMOTE_ADDR'); + +// ... oder einfache die superglobalen Arrays ($_SERVER oder $_ENV) +$ip = $_SERVER['REMOTE_ADDR']; +?> +]]> + </programlisting> + </example> + </para> + </refsect1> + + <refsect1 role="seealso"> + &reftitle.seealso; + <para> + <simplelist> + <member><function>putenv</function></member> + <member><function>apache_getenv</function></member> + <member><link linkend="language.variables.superglobals">Superglobals</link></member> + </simplelist> + </para> + </refsect1> + +</refentry> <!-- Keep this comment at the end of the file Local variables: http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/outcontrol/functions/ob-start.xml?r1=1.7&r2=1.8&diff_format=u Index: phpdoc-de/reference/outcontrol/functions/ob-start.xml diff -u phpdoc-de/reference/outcontrol/functions/ob-start.xml:1.7 phpdoc-de/reference/outcontrol/functions/ob-start.xml:1.8 --- phpdoc-de/reference/outcontrol/functions/ob-start.xml:1.7 Sat Jun 23 13:21:44 2007 +++ phpdoc-de/reference/outcontrol/functions/ob-start.xml Mon Mar 24 21:53:51 2008 @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.7 $ --> +<!-- $Revision: 1.8 $ --> <!-- EN-Revision: 1.20 Maintainer: hholzgra Status: ready --> <refentry xml:id="function.ob-start" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>ob_start</refname> <refpurpose>Ausgabepufferung aktivieren</refpurpose> </refnamediv> - <refsect1> - <title>Description</title> + <refsect1 role="description"> + &reftitle.description; <methodsynopsis> <type>bool</type><methodname>ob_start</methodname> <methodparam choice="opt"><type>callback</type><parameter>output_callback</parameter></methodparam> http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/sem/functions/sem-get.xml?r1=1.6&r2=1.7&diff_format=u Index: phpdoc-de/reference/sem/functions/sem-get.xml diff -u phpdoc-de/reference/sem/functions/sem-get.xml:1.6 phpdoc-de/reference/sem/functions/sem-get.xml:1.7 --- phpdoc-de/reference/sem/functions/sem-get.xml:1.6 Sat Jun 23 13:21:47 2007 +++ phpdoc-de/reference/sem/functions/sem-get.xml Mon Mar 24 21:53:51 2008 @@ -1,49 +1,123 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.6 $ --> -<!-- EN-Revision: 1.9 Maintainer: hholzgra Status: ready --> - <refentry xml:id="function.sem-get" xmlns="http://docbook.org/ns/docbook"> - <refnamediv> - <refname>sem_get</refname> - <refpurpose>Zugriff auf ein Semaphor anfordern</refpurpose> - </refnamediv> - <refsect1> - <title>Beschreibung</title> - <methodsynopsis> - <type>resource</type><methodname>sem_get</methodname> - <methodparam><type>int</type><parameter>key</parameter></methodparam> - <methodparam choice="opt"><type>int</type><parameter>max_acquire</parameter></methodparam> - <methodparam choice="opt"><type>int</type><parameter>perm</parameter></methodparam> - <methodparam choice="opt"><type>int</type><parameter>auto_release</parameter></methodparam> - </methodsynopsis> - <para> - <function>sem_get</function> liefert eine ID die für den Zugriff - auf das System V Semaphor mit dem gegebenen <parameter>key</parameter> - benutzt werden kann. Der Semaphor wird mit den in <parameter>perm</parameter> - angegebenen Zugriffsrechten angelegt falls nötig. Die Anzahlder Prozesse - die gleichzeitig Zugriff auf den Semaphor erhalten können wird mit - <parameter>max_acquire</parameter> festgelegt (Default: 1). - </para> - <para> - Der optionale Parameter <parameter>auto_release</parameter> legt - fest ob der Semaphor zum Scriptende automatisch entfernt werden - soll. Der Parameter existiert seit PHP 4.3.0. - </para> - <para> - Liefert eine positive Semaphor ID be Erfolg oder &false; im - Fehlerfall. - </para> - <para> - Weitere Aufrufe von <function>sem_get</function> für den - gleichen Key liefern unterschiedliche Semaphor IDs, diese - greifen aber auf den gleichen darunterliegenden Semaphor - zu. - </para> - <para> - Siehe auch<function>sem_acquire</function>, - <function>sem_release</function> und <function>ftok</function>. - </para> - </refsect1> - </refentry> +<!-- $Revision: 1.7 $ --> +<!-- EN-Revision: 1.12 Maintainer: hholzgra Status: ready --> +<refentry xml:id="function.sem-get" xmlns="http://docbook.org/ns/docbook"> + <refnamediv> + <refname>sem_get</refname> + <refpurpose>Zugriff auf ein Semaphor anfordern</refpurpose> + </refnamediv> + <refsect1 role="description"> + &reftitle.description; + <methodsynopsis> + <type>resource</type><methodname>sem_get</methodname> + <methodparam><type>int</type><parameter>key</parameter></methodparam> + <methodparam choice="opt"><type>int</type><parameter>max_acquire</parameter></methodparam> + <methodparam choice="opt"><type>int</type><parameter>perm</parameter></methodparam> + <methodparam choice="opt"><type>int</type><parameter>auto_release</parameter></methodparam> + </methodsynopsis> + <para> + <function>sem_get</function> liefert eine ID die für den Zugriff + auf das System V Semaphor mit dem gegebenen <parameter>key</parameter> + benutzt werden kann. + </para> + <para> + Weitere Aufrufe von <function>sem_get</function> für den + gleichen Key liefern unterschiedliche Semaphor IDs, diese + greifen aber auf den gleichen darunterliegenden Semaphor + zu. + </para> + </refsect1> + + <refsect1 role="parameters"> + &reftitle.parameters; + <para> + <variablelist> + <varlistentry> + <term><parameter>key</parameter></term> + <listitem> + <para> + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><parameter>max_acquire</parameter></term> + <listitem> + <para> + Die Anzahl der Prozesse die gleichzeitig Zugriff auf den + Semaphor erhalten können wird durch den Parameter + <parameter>max_acquire</parameter> festgelegt + (Vorgabewert ist 1). + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><parameter>perm</parameter></term> + <listitem> + <para> + Die Zugriffsrechte für den Semaphore. Vorgabewert ist 0777. + Der Wert wird nur gesetzt wenn der aktuelle Prozess der einzige + ist der in diesem Augenblick mit dem Semaphor verknüpft ist. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><parameter>auto_release</parameter></term> + <listitem> + <para> + Legt fest ob der Semaphor am Skriptende automatisch freigegeben + werden soll. + </para> + </listitem> + </varlistentry> + </variablelist> + </para> + </refsect1> + + <refsect1 role="returnvalues"> + &reftitle.returnvalues; + <para> + Gibt einen positiven Semaphor Identifier zrück oder &false; + bei Fehlern. + </para> + </refsect1> + + <refsect1 role="changelog"> + &reftitle.changelog; + <para> + <informaltable> + <tgroup cols="2"> + <thead> + <row> + <entry>&Version;</entry> + <entry>&Description;</entry> + </row> + </thead> + <tbody> + <row> + <entry>4.3.0</entry> + <entry> + Der <parameter>auto_release</parameter> Parameter + wurde hinzugefügt. + </entry> + </row> + </tbody> + </tgroup> + </informaltable> + </para> + </refsect1> + + <refsect1 role="seealso"> + &reftitle.seealso; + <para> + <simplelist> + <member><function>sem_acquire</function></member> + <member><function>sem_release</function></member> + <member><function>ftok</function></member> + </simplelist> + </para> + </refsect1> + +</refentry> <!-- Keep this comment at the end of the file Local variables: http://cvs.php.net/viewvc.cgi/phpdoc-de/reference/xslt/constants.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/reference/xslt/constants.xml diff -u phpdoc-de/reference/xslt/constants.xml:1.2 phpdoc-de/reference/xslt/constants.xml:1.3 --- phpdoc-de/reference/xslt/constants.xml:1.2 Tue Mar 11 22:59:20 2008 +++ phpdoc-de/reference/xslt/constants.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.1 Maintainer: hholzgra Status: working --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.6 Maintainer: hholzgra Status: ready --> <appendix xml:id="xslt.constants" xmlns="http://docbook.org/ns/docbook"> &reftitle.constants; @@ -13,8 +13,9 @@ </term> <listitem> <simpara> - Drop all logging and error reporting. This is a generic option - for all backends that may be added in the future. + Deaktiviert Protokol- und Fehlerausgaben. Dies ist eine + generische Option für alle Backends die möglicherweise + in einer zukünfitgen Version hinzugefügt wird. </simpara> </listitem> </varlistentry> @@ -25,8 +26,9 @@ </term> <listitem> <para> - Tell <productname>Sablotron</productname> to parse public entities. - By default this has been turned off. + Gibt <productname>Sablotron</productname> Anweisung + öffentliche Entitäten einzulesen. Dies ist normalerweise + deaktiviert. </para> </listitem> </varlistentry> @@ -37,9 +39,9 @@ </term> <listitem> <para> - Do not add the meta tag "Content-Type" for HTML output. - The default is set during compilation of - <productname>Sablotron</productname>. + Kein "Content-Type" Metatag zur HTML Ausgabe + hinzufügen. Der Vorgabewert wird beim kompilieren von + <productname>Sablotron</productname> festgelegt. </para> </listitem> </varlistentry> @@ -50,7 +52,8 @@ </term> <listitem> <simpara> - Suppress the whitespace stripping (on data files only). + Deaktiviert das Entfernen von Leerzeichen (nur bei + Datendateien). </simpara> </listitem> </varlistentry> @@ -61,7 +64,8 @@ </term> <listitem> <simpara> - Consider unresolved documents (the document() function) non-lethal. + Betrachte nicht auflösbare Dokumente (document() Funktion) + als nicht kritisch. </simpara> </listitem> </varlistentry> @@ -82,8 +86,8 @@ </term> <listitem> <simpara> - Error return code, for <link - linkend="function.xslt-set-scheme-handlers">scheme handlers</link>. + Fehlerkode zur Rückgabe aus <link + linkend="function.xslt-set-scheme-handlers">Schema Handlern</link>. </simpara> </listitem> </varlistentry> http://cvs.php.net/viewvc.cgi/phpdoc-de/security/database.xml?r1=1.4&r2=1.5&diff_format=u Index: phpdoc-de/security/database.xml diff -u phpdoc-de/security/database.xml:1.4 phpdoc-de/security/database.xml:1.5 --- phpdoc-de/security/database.xml:1.4 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/database.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.4 $ --> -<!-- EN-Revision: 1.5 Maintainer: tom Status: ready --> +<!-- $Revision: 1.5 $ --> +<!-- EN-Revision: 1.13 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.database" xmlns="http://docbook.org/ns/docbook"> <title>Datenbank - Sicherheit</title> @@ -125,18 +126,17 @@ <![CDATA[ // Speichern des Passwort hash $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", - addslashes($username), md5($password)); -$result = pg_exec($connection, $query); + pg_escape_string($username), md5($password)); +$result = pg_query($connection, $query); // Afragen, ob der User das richtige Passwort übermittelt hat $query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';", - addslashes($username), md5($password)); -$result = pg_exec($connection, $query); + pg_escape_string($username), md5($password)); +$result = pg_query($connection, $query); -if (pg_numrows($result) > 0) { +if (pg_num_rows($result) > 0) { echo "Welcome, $username!"; -} -else { +} else { echo "Authentication failed for $username."; } ]]> @@ -175,10 +175,10 @@ </title> <programlisting role="php"> <![CDATA[ -$offset = argv[0]; // Vorsicht, keine Validierung des Input ! +$offset = $argv[0]; // Vorsicht, keine Validierung des Input ! $query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;"; // mit PostgreSQL -$result = pg_exec($conn, $query); +$result = pg_query($conn, $query); // mit MySQL $result = mysql_query($query); ]]> @@ -403,9 +403,13 @@ </listitem> <listitem> <simpara> - Escapen Sie jeden nicht numerischen Input, welcher zur Datenbank - weitergereicht werden soll mit <function>addslashes</function> - oder <function>addcslashes</function>. Siehe auch <link + Escapen Sie jede nicht numerische Benutzereingabe, welcher zur Datenbank + weitergereicht werden soll mit der jeweiligen datenbankspezifischen + Escape-Funktion (z.B. <function>mysql_escape_string</function>, + <function>sql_escape_string</function> usw.). Wenn keine + datenbankspezifischen Escapemechanismen existieren können in der + Regel (je nach Datenbanktyp) auch die Funktion <function>addslashes</function> + und <function>addcslashes</function> von Nutzen sein. Siehe auch <link linkend="security.database.storage">das erste Beispiel</link>. Wie dieses Beispiel zeigt, sind in den statischen Teil der Abfrage eingebrachten Escapes nicht genug, und können leicht gehacked werden. http://cvs.php.net/viewvc.cgi/phpdoc-de/security/filesystem.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/security/filesystem.xml diff -u phpdoc-de/security/filesystem.xml:1.2 phpdoc-de/security/filesystem.xml:1.3 --- phpdoc-de/security/filesystem.xml:1.2 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/filesystem.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.3 Maintainer: tom Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.3 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.filesystem" xmlns="http://docbook.org/ns/docbook"> <title>Dateisystem - Sicherheit</title> <simpara> http://cvs.php.net/viewvc.cgi/phpdoc-de/security/globals.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/security/globals.xml diff -u phpdoc-de/security/globals.xml:1.2 phpdoc-de/security/globals.xml:1.3 --- phpdoc-de/security/globals.xml:1.2 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/globals.xml Mon Mar 24 21:53:51 2008 @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.3 Maintainer: tom Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.8 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.globals" xmlns="http://docbook.org/ns/docbook"> <title>Verwendung von Register Globals</title> + &warn.deprecated.removed-6-0-0; <para> Ein Feature von PHP zur Erhöhung der Sicherheit ist die Konfiguration von PHP mit <link linkend="ini.register-globals">register_globals</link> = off. @@ -81,6 +83,11 @@ <function>error_reporting</function> so einstellen, dass Fehler des Levels <constant>E_NOTICE</constant> angezeigt werden. </para> + <para> + Sie knnen die On und Off Einstellungen von register_globals + emulieren, nheres hierzu finden Sie in den <link + linkend="faq.misc.registerglobals">FAQ</link>. + </para> ¬e.superglobals; http://cvs.php.net/viewvc.cgi/phpdoc-de/security/variables.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-de/security/variables.xml diff -u phpdoc-de/security/variables.xml:1.2 phpdoc-de/security/variables.xml:1.3 --- phpdoc-de/security/variables.xml:1.2 Sat Jun 23 13:21:53 2007 +++ phpdoc-de/security/variables.xml Mon Mar 24 21:53:51 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.3 Maintainer: tom Status: ready --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.5 Maintainer: hholzgra Status: ready --> +<!-- Credits: tom --> <chapter xml:id="security.variables" xmlns="http://docbook.org/ns/docbook"> <title>Vom Nutzer übermittelte Daten</title> <para> @@ -31,6 +32,8 @@ ]]> </programlisting> </example> + </para> + <para> Sie sollten Ihren Code immer sorgfältig kontrollieren, um eine sorgfältige Prüfung irgendwelcher von einem Web-Browser übertragenen Variablen sicherzustellen, und sich selbst folgende Fragen stellen: @@ -62,6 +65,8 @@ </simpara> </listitem> </itemizedlist> + </para> + <para> Wenn Sie sich diese Fragen anstatt danach schon während dem Schreiben des Skriptes stellen, ersparen Sie sich das unangenehme Umschreiben, wenn eine Erhöhung der Sicherheit erforderlich wird. Mit dieser Art