cvs: phpdoc-de / Translators /faq html.xml

From: Date: Fri, 24 Jan 2003 17:07:45 +0000
Subject: cvs: phpdoc-de / Translators /faq html.xml
Groups: php.doc.de 
Request: Send a blank email to doc-de+get-459@lists.php.net to get a copy of this message
wiesemann Fri Jan 24 12:07:45 2003 EDT Added files: /phpdoc-de/faq html.xml Modified files: /phpdoc-de Translators Log: initial translation of html faq

Index: phpdoc-de/Translators diff -u phpdoc-de/Translators:1.324 phpdoc-de/Translators:1.325 --- phpdoc-de/Translators:1.324 Sat Jan 4 13:25:27 2003 +++ phpdoc-de/Translators Fri Jan 24 12:07:44 2003 @@ -70,7 +70,7 @@ com.xml database.xml general.xml -html.xml +html.xml Mark Wiesemann fertig (bis 1.17) installation.xml languages.xml Mark Kronsbein in Arbeit mailinglist.xml Mark Wiesemann fertig (bis 1.13) Index: phpdoc-de/faq/html.xml +++ phpdoc-de/faq/html.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.17 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. </para> <qandaset> <qandaentry id="faq.html.encoding"> <question> <para> Wie muss ich enkodieren / dekodieren, wenn ich einen Wert über ein Formular / einen URL weitergeben möchte? </para> </question> <answer> <para> Es gibt mehrere Stufen, für die Enkodierung wichtig ist. Angenommen, Sie haben einen <type>String</type> <varname>$data</varname>, der den String, den Sie in nicht-enkodierter Weise weitergeben möchten, enthält. Dann sind dies die relevanten Stufen: <itemizedlist> <listitem> <para> HTML-Interpretation: Wenn Sie einen zufälligen String angeben wollen, <emphasis>müssen</emphasis> Sie ihn in die doppelte Anführungszeichen einschließen und <function>htmlspecialchars</function> auf den gesamten Wert anwenden. </para> </listitem> <listitem> <para> URL: Ein URL besteht aus mehreren Teilen. Wenn Sie wollen, dass Ihre Daten als ein Element interpretiert werden, dann <emphasis>müssen</emphasis> Sie Ihre Daten mit <function>urlencode</function> enkodieren. </para> </listitem> </itemizedlist> </para> <para> <example> <title>Ein verstecktes HTML-Formular-Element</title> <programlisting role="php"> <![CDATA[ <?php echo "<input type=hidden value=\"" . htmlspecialchars($data) . "\">\n"; ?> ]]> </programlisting> </example> <note> <simpara> Es wäre falsch, <function>urlencode</function> auf <varname>$data</varname> anzuwenden, da es die Aufgabe des Browsers ist, die Daten zu enkodieren. Alle populären Browser machen dies auch korrekt. Beachten Sie, dass dies unabhängig von der verwendeten Methode (also z.B. GET oder POST) geschieht. Feststellen werden Sie dies aber nur bei GET-Anfragen, da POST-Anfragen meist versteckt geschehen. </simpara> </note> <example> <title>Daten, die vom Benutzer bearbeitet werden sollen</title> <programlisting role="php"> <![CDATA[ <?php echo "<textarea name=mydata>\n"; echo htmlspecialchars($data)."\n"; echo "</textarea>"; ?> ]]> </programlisting> </example> <note> <simpara> Die Daten werden wie Browser wie gewünscht ausgegeben, da der Browser die HTML-escapten Symbole interpretiert. </simpara> <simpara> Nach dem Abschicken, egal ob via GET oder POST, werden die Daten für den Transfer enkodiert (mit <function>urlencode</function>) und von PHP direkt wieder dekodiert (mit <function>urldecode</function>). Sie müssen also für die En- und Dekodierung nicht selbst sorgen, die Browser und PHP erledigen dies automatisch für Sie. </simpara> </note> <example> <title>In einem URL</title> <programlisting role="php"> <![CDATA[ <?php echo "<a href=\"" . htmlspecialchars("/nextpage.php?stage=23&data=" . urlencode($data)) . "\">\n"; ?> ]]> </programlisting> </example> <note> <simpara> Hier wird eine HTML-GET-Anfrage gefakt, deswegen müssen Sie die Daten manuell mit <function>urlencode</function> enkodieren. </simpara> </note> <note> <simpara> Sie müssen <function>htmlspecialchars</function> auf den gesamten URL anwenden, da der URL als Wert eines HTML-Attributs auftritt. In diesem Fall wird der Browser zuerst etwas wie "un-<function>htmlspecialchars</function>" auf den Wert anwenden und dann erst den URL weitergeben. PHP wird den URL korrekt verstehen, da Sie die Daten mit <function>urlencode</function> enkodiert haben. </simpara> <simpara> Sie werden feststellen, dass das <literal>&amp;</literal> im URL durch <literal>&amp;amp;</literal> ersetzt wird. Auch wenn die meisten Browser richtig arbeiten, falls Sie diese Ersetzung vergessen sollten, sollten Sie sich trotzdem nicht darauf verlassen. Das bedeutet, dass Sie - auch wenn Ihr URL nicht dynamisch ist - trotzdem <function>htmlspecialchars</function> auf den URL anwenden <emphasis>müssen</emphasis>. </simpara> </note> </para> <!-- TODO: a note about addgpcslashes? --> </answer> </qandaentry> <qandaentry id="faq.html.form-image"> <question> <para> Ich versuche ein &lt;input type="image"&gt;-Tag zu benutzen, aber die Variablen $foo.x and $foo.y sind nicht verfügbar. Wo finde ich diese? </para> </question> <answer> <para> Wenn ein Formular abgeschickt werden soll, ist es möglich, ein Bild statt des Standard-Submit-Buttons zu verwenden, indem Sie ein Tag wie das folgende verwenden: <programlisting role="html"> <![CDATA[ <input type="image" src="image.gif" name="foo"> ]]> </programlisting> Wenn der Benutzer irgendwo auf das Bild klickt, wird das zugehörige Formular zusammen mit zwei zusätzlichen Variablen übertragen: <varname>foo.x</varname> 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. </para> </answer> </qandaentry> <qandaentry id="faq.html.arrays"> <question> <para>Wie kann ich Array aus einem HTML-Formular erstellen?</para> </question> <answer> <para> Um die Formularwerte als <link linkend="language.types.array">Array</link> im PHP-Skript zur Verfügung zu haben, müssen Sie die &lt;input&gt;, &lt;select&gt; or &lt;textarea&gt;-Felder wie folgt benennen: <programlisting role="html"> <![CDATA[ <input name="MeinArray[]"> <input name="MeinArray[]"> <input name="MeinArray[]"> <input name="MeinArray[]"> ]]> </programlisting> Beachten Sie die eckigen Klammern hinter dem Variablen-Namen, denn dadurch wird das Array erst erzeugt. Sie können Felder in verschiedenen Arrays gruppieren, wenn Sie verschiedenen Feldern die gleichen Namen geben: <programlisting role="html"> <![CDATA[ <input name="MeinArray[]"> <input name="MeinArray[]"> <input name="MeinAnderesArray[]"> <input name="MeinAnderesArray[]"> ]]> </programlisting> Daraus werden zwei Arrays, <varname>MeinArray</varname> und <varname>MeinAnderesArray</varname> erstellt. Es ist auch möglich, spezielle Schlüssel anzugeben: <programlisting role="html"> <![CDATA[ <input name="AnderesArray[]"> <input name="AnderesArray[]"> <input name="AnderesArray[email]"> <input name="AnderesArray[telefon]"> ]]> </programlisting> Das Array <varname>AnderesArray</varname> enthält daraufhin die Schlüssel <literal>0</literal>, <literal>1</literal>, <literal>email</literal> und <literal>telefon</literal>. </para> <para> <note> <para> Die Angabe eines Array-Schlüssels ist in HTML optional. Wenn Sie keinen Schlüssel angeben, wird das Array in der Formular-Reihenfolge gefüllt. Im ersten Beispiel enthält das Array <varname>MeinArray</varname> also die Schlüssel <literal>0</literal>, <literal>1</literal>, <literal>2</literal> und <literal>3</literal>. </para> </note> </para> <para> Siehe auch: <link linkend="ref.array">Array-Funktionen</link> und <link linkend="language.variables.external">Variablen außerhalb von PHP</link>. </para> </answer> </qandaentry> <qandaentry id="faq.html.select-multiple"> <question> <para> Wie bekomme ich alle Werte aus einem "select multiple"-HTML-Tag? </para> </question> <answer> <para> Mit einem "select multiple"-Tag können Benutzer mehrere Werte aus einer Liste auswählen. Diese Werte werden dann an den "action handler" des Formulars (z.B. ein PHP-Skript) übergeben. Problematisch ist dabei, dass alle mit demselben Namen übergeben werden, z.B.: <programlisting role="html"> <![CDATA[ <select name="var" multiple> ]]> </programlisting> Jede ausgewählte Option wird übergeben als: <programlisting> var=option1 var=option2 var=option3 </programlisting> Jede Option wird den Inhalt der vorherigen <varname>$var</varname>-Variablen überschreiben. Die Lösung ist, die spezielle PHP-Lösung hierfür zu verwenden. Sie sollten das Tag wie folgt umschreiben: <programlisting role="html"> <![CDATA[ <select name="var[]" multiple> ]]> </programlisting> PHP weiß dann, dass <varname>$var</varname> als Array behandelt werden soll. Jede ausgewählte Wert wird dem Array hinzugefügt. Das erste Element wird zu <varname>$var[0]</varname>, das nächste zu <varname>$var[1]</varname> etc. Die <function>count</function>-Funktion kann benutzt werden, um herauszufinden, wie viele Optionen ausgewählt wurden. Mit der <function>sort</function>-Funktion können Sie bei Bedarf das Array sortieren. </para> <para> Beachten Sie, dass, falls Sie JavaScript benutzen, die eckigen Klammern <literal>[]</literal> im Feldnamen Probleme machen können, wenn Sie versuchen, über den Namen auf das Feld zu verweisen. Benutzen Sie stattdessen die numerische ID des Formularfelds oder schließen Sie den Variablennamen in einfache Anführungszeichen ein und benutzen Sie dies als den Index, z.B.: <programlisting> variable = documents.forms[0].elements['var[]']; </programlisting> </para> </answer> </qandaentry> </qandaset> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.doc.de (#459) next »