svn: /phpdoc/de/trunk/ language/variables.xml reference/exif/functions/exif-read-data.xml reference/openssl/functions/openssl-csr-new.xml reference/openssl/functions/openssl-encrypt.xml reference/sqlite3/sqlite3/createaggregate.xml
[email protected] (Christoph Michael Becker)
| Newsgroups | php.doc.de |
|---|---|
| Message-ID | <[email protected]> |
cmb Wed, 21 Nov 2018 16:26:44 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=346023
Log:
Sync with EN
Changed paths:
U phpdoc/de/trunk/language/variables.xml
U phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml
U phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml
U phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml
U phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml
svn-diffs-346023.txt
(text/x-diff, 18.3 KB)
Modified: phpdoc/de/trunk/language/variables.xml
===================================================================
--- phpdoc/de/trunk/language/variables.xml 2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/language/variables.xml 2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 345951 Maintainer: nobody Status: ready -->
+<!-- EN-Revision: 346017 Maintainer: nobody Status: ready -->
<!-- Credits: betz -->
<chapter xml:id="language.variables" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -977,6 +977,15 @@
</example>
</para>
+ <note>
+ <simpara>
+ Beginnt der Name einer externen Variablen mit einer gültigen Array-Syntax,
+ dann werden darauf folgende Zeichen stillschweigend ignoriert. Zum
+ Beispiel wird <literal><input name="foo[bar]baz"></literal> zu
+ <literal>$_REQUEST['foo']['bar']</literal>.
+ </simpara>
+ </note>
+
<sect3 xml:id="language.variables.external.form.submit">
<title>IMAGE SUBMIT Variablen-Bezeichner</title>
Modified: phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml
===================================================================
--- phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml 2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml 2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 343899 Maintainer: nobody Status: ready -->
+<!-- EN-Revision: 346020 Maintainer: nobody Status: ready -->
<refentry xml:id="function.exif-read-data" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
@@ -368,8 +368,8 @@
$fp = fopen('/path/to/image.jpg', 'rb');
if (!$fp) {
- echo 'Fehler: Konnte das Bild nicht fürs Lesen öffnen';
- exit;
+ echo 'Fehler: Konnte das Bild nicht fürs Lesen öffnen';
+ exit;
}
// Versuche die Exif-Header zu lesen
@@ -376,8 +376,8 @@
$headers = exif_read_data($fp);
if (!$headers) {
- echo 'Fehler: Konnte die Exif-Header nicht lesen';
- exit;
+ echo 'Fehler: Konnte die Exif-Header nicht lesen';
+ exit;
}
// Gib die 'COMPUTED'-Header aus
@@ -384,7 +384,7 @@
echo 'EXIF Header:' . PHP_EOL;
foreach ($headers['COMPUTED'] as $header => $value) {
- printf(' %s => %s%s', $header, $value, PHP_EOL);
+ printf(' %s => %s%s', $header, $value, PHP_EOL);
}
?>
]]>
Modified: phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml
===================================================================
--- phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml 2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml 2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 343014 Maintainer: jaenecke Status: ready -->
+<!-- EN-Revision: 346020 Maintainer: jaenecke Status: ready -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.openssl-csr-new">
<refnamediv>
<refname>openssl_csr_new</refname>
@@ -19,8 +19,7 @@
<para>
<function>openssl_csr_new</function> erzeugt einen neuen CSR
(Zertifikatssignierungsanfrage) basierend auf den Informationen, die mit
- dem Parameter <parameter>dn</parameter> angegeben werden. Dieser
- bestimmt den Distinguished Name, der im Betreff des Zertifikat benutzt werden soll.
+ dem Parameter <parameter>dn</parameter> angegeben werden.
</para>
¬e.openssl.cnf;
</refsect1>
@@ -126,10 +125,10 @@
Bestimmt den Typ des privaten Schlüssels der erzeugt werden soll.
Der Typ kann einer der folgenden sein:
<constant>OPENSSL_KEYTYPE_DSA</constant>,
- <constant>OPENSSL_KEYTYPE_DH</constant> oder
- <constant>OPENSSL_KEYTYPE_RSA</constant>. Der Standardwert ist
- <constant>OPENSSL_KEYTYPE_RSA</constant>, momentan ist das der
- einzige Schlüsseltyp, der unterstützt wird.
+ <constant>OPENSSL_KEYTYPE_DH</constant>,
+ <constant>OPENSSL_KEYTYPE_RSA</constant> oder
+ <constant>OPENSSL_KEYTYPE_EC</constant>.
+ Der Standardwert ist <constant>OPENSSL_KEYTYPE_RSA</constant>.
</entry>
</row>
<row>
@@ -149,7 +148,23 @@
Eine der <link linkend="openssl.ciphers">Ziffer-Konstanten</link>.
</entry>
</row>
- </tbody>
+ <row>
+ <entry>curve_name</entry>
+ <entry><type>string</type></entry>
+ <entry>none</entry>
+ <entry>
+ PHP 7.1+. Einer der <function>openssl_get_curve_names</function>.
+ </entry>
+ </row>
+ <row>
+ <entry>config</entry>
+ <entry><type>string</type></entry>
+ <entry>N/A</entry>
+ <entry>
+ Pfad zur eigenen alternativen openssl.conf Datei.
+ </entry>
+ </row>
+ </tbody>
</tgroup>
</table>
</para>
@@ -174,16 +189,12 @@
<programlisting role="php">
<![CDATA[
<?php
-// Angabe der Daten für den distinguished name, der in dem Zertifikat benutzt
-// wird. Sie müssen die Werte dieser Schlüssel so anpassen, dass diese ihrem
-// Namen und Firma entsprechen, oder um präziser zu sein, den Namen und die
-// Firma der Person/Seite angeben, für die Sie das Zertifikat erzeugen.
-// Für SSL Zertifikate entspricht der commonName gewöhnlich dem Domainnamen,
-// für den das Zertifikat benutzt werden soll, aber bei S/MIME Zertifikaten
-// entspricht der commonName dem Namen der Person, die das Zertifikat nutzen
-// möchte.
+// für SSL Zertifikate ist der commonName der zu sichernden Domainnamen
+// für S/MIME Zertifikate the commonName ist der Eigentümer der E-Mail-Adresse
+// die location und identification Felder beziehen sich auf den Eigentümer der
+// zu sichernden Domain oder des E-Mail Eigentümers
$dn = array(
- "countryName" => "UK",
+ "countryName" => "GB",
"stateOrProvinceName" => "Somerset",
"localityName" => "Glastonbury",
"organizationName" => "The Brain Room Limited",
@@ -201,23 +212,14 @@
// Erzeugen einer Zertifikatssignierungsanfrage
$csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));
-// Gewöhnlicherweise möchten Sie zu diesem Zeitpunkt ein selbstsigniertes
-// Zertifikat erzeugen, das Sie benutzten können, bis ihre CA ihre Anfrage
-// im positiven Sinne bearbeitet hat.
// Erzeugen eines selbstsignierten Zertifikts, das für die Dauer von 365 Tagen
// gültig ist.
-$sscert = openssl_csr_sign($csr, null, $privkey, 365, array('digest_alg' => 'sha256'));
+$x509 = openssl_csr_sign($csr, null, $privkey, $days=365, array('digest_alg' => 'sha256'));
-// Jetzt möchten Sie ihren privaten Schlüssel, ihren CSR und das
-// selbstsignierte Zertifikat sichern, damit Sie dieses, abhängig vom
-// beabsichtigten Verwendungszweck, auf ihrem Web-, Mailserver oder
-// in ihrem Mailprogramm installieren können.
-// Dieses Beispiel zeigt ihnen, wie Sie diese Dinge in Variablen abspeichern,
-// aber genauso können Sie die Informationen direkt in Dateien speichern.
-// Typischerweise schicken Sie den CSR an Ihre CA, die daraufhin diese Anfrage
-// bearbeitet und Sie mit einem "richtigen" Zertifikat ausstattet.
+// Sichern des privaten Schlüssels, des CSR und des selbstsignierte Zertifikats
+// für spätere Verwendung
openssl_csr_export($csr, $csrout) and var_dump($csrout);;
-openssl_x509_export($sscert, $certout) and var_dump($certout);
+openssl_x509_export($x509, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);
// Anzeigen der möglichen aufgetretenen Fehler
@@ -228,6 +230,33 @@
]]>
</programlisting>
</example>
+
+ <example>
+ <title>Erzeugen eines selbstsignierten ECC-Zertifikats in PHP 7.1+</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$subject = array(
+ "commonName" => "docs.php.net",
+);
+
+// Erzeugen eines neuen privaten (und öffentlichen) Schlüsselpaars
+$private_key = openssl_pkey_new(array(
+ "private_key_type" => OPENSSL_KEYTYPE_EC,
+ "curve_name" => 'prime256v1',
+));
+
+// Erzeugen einer Zertifikatssignierungsanfrage
+$csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha384'));
+
+// Erzeugen eines selbstsignierten EC-Zertifikats
+$x509 = openssl_csr_sign($csr, null, $private_key, $days=365, array('digest_alg' => 'sha384'));
+openssl_x509_export_to_file($x509, 'ecc-cert.pem');
+openssl_pkey_export_to_file($private_key, 'ecc-private.key');
+?>
+]]>
+ </programlisting>
+ </example>
</para>
</refsect1>
Modified: phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml
===================================================================
--- phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml 2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml 2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 343016 Maintainer: cmb Status: ready -->
+<!-- EN-Revision: 346020 Maintainer: cmb Status: ready -->
<refentry xml:id="function.openssl-encrypt" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
@@ -173,12 +173,12 @@
$cipher = "aes-128-gcm";
if (in_array($cipher, openssl_get_cipher_methods()))
{
- $ivlen = openssl_cipher_iv_length($cipher);
- $iv = openssl_random_pseudo_bytes($ivlen);
- $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
- // speichere $cipher, $iv und $tag für spätere Entschlüsselung
- $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
- echo $original_plaintext."\n";
+ $ivlen = openssl_cipher_iv_length($cipher);
+ $iv = openssl_random_pseudo_bytes($ivlen);
+ $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
+ // speichere $cipher, $iv und $tag für spätere Entschlüsselung
+ $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
+ echo $original_plaintext."\n";
}
?>
]]>
@@ -208,7 +208,7 @@
$calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
if (hash_equals($hmac, $calcmac)) // PHP 5.6+ Rechenzeitangriff-sicherer Vergleich
{
- echo $original_plaintext."\n";
+ echo $original_plaintext."\n";
}
?>
]]>
Modified: phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml
===================================================================
--- phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml 2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml 2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 288721 Maintainer: lapistano Status: ready -->
+<!-- EN-Revision: 345797 Maintainer: lapistano Status: ready -->
<refentry xml:id="sqlite3.createaggregate" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
@@ -40,9 +40,57 @@
<term><parameter>step_callback</parameter></term>
<listitem>
<para>
- Name der PHP- oder benutzerdefinierten Funktion, welche als Callback-Funktion für
- jedes Element des Aggregates genutzt wird.
+ 'Callback'-Funktion, welche für jede Reihe des Abfrageergebnisses ausgeführt wird.
+ Ihr PHP sollte das Ergebnis akkumulieren und in der Aggregation 'context' speichern.
</para>
+ <para>
+ Es ist notwendig, diese Funktion wie folgt zu definieren:
+ <methodsynopsis>
+ <type>mixed</type><methodname><replaceable>step</replaceable></methodname>
+ <methodparam><type>mixed</type><parameter>context</parameter></methodparam>
+ <methodparam><type>int</type><parameter>rownumber</parameter></methodparam>
+ <methodparam><type>mixed</type><parameter>value1</parameter></methodparam>
+ <methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
+ </methodsynopsis>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>
+ &null; für die erste Reihe. Folgende Reihen
+ werden den zuvor zurückgegebenen Wert haben. Sie sollten diesen nutzen, um den
+ Status der Aggregation zu pflegen.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>rownumber</parameter></term>
+ <listitem>
+ <para>
+ Die Nummer der aktuellen Reihe.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>value1</parameter></term>
+ <listitem>
+ <para>
+ Das erste Argument, das an das Aggregat übergeben wurde.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>...</parameter></term>
+ <listitem>
+ <para>
+ Weitere Argumente, die an das Aggregat übergeben wurden.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ Der Rückgabewert dieser Funktion wird als <parameter>context</parameter>
+ Argument im nächsten Aufruf der step oder finalize Funktion verwendet.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
@@ -49,9 +97,41 @@
<term><parameter>final_callback</parameter></term>
<listitem>
<para>
- Name der PHP- oder benutzerdefinierten Funktion, welche genutzt wird, um die Aggregierung
- abzuschließen.
+ 'Callback'-Funktion, die die Informationen aller Reihen aggregiert.
+ Sind alle Reihen abgearbeitet, wird diese Funktion aufgerufen. Diese
+ sollte dann die Daten der Aggregation 'context' auswerten und das
+ Ergebnis zurückgeben. 'Callback'-Funktionen sollten einen Variablentyp
+ liefern, der von SQLite erwartet wird (z.B. <link
+ linkend="language.types.intro">scalar type</link>).
</para>
+ <para>
+ Diese Funktion ist wie folgt zu definieren:
+ <methodsynopsis>
+ <type>mixed</type><methodname><replaceable>fini</replaceable></methodname>
+ <methodparam><type>mixed</type><parameter>context</parameter></methodparam>
+ <methodparam><type>int</type><parameter>rownumber</parameter></methodparam>
+ </methodsynopsis>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>context</parameter></term>
+ <listitem>
+ <para>
+ Enthält den Rückgabewert des letzten Aufrufs der Schritt-Funktion.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>rownumber</parameter></term>
+ <listitem>
+ <para>
+ Immer <literal>0</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ Der Rückgabewert dieser Funktion wird als Rückgabewert für die
+ Aggregation genutzt.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
@@ -65,7 +145,6 @@
</varlistentry>
</variablelist>
</para>
-
</refsect1>
<refsect1 role="returnvalues">
@@ -75,6 +154,99 @@
</para>
</refsect1>
+ <refsect1 role="examples">
+ &reftitle.examples;
+ <para>
+ <example>
+ <title>Beispiel für eine 'max_length'-Aggregierungs-Funktion</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$data = array(
+ 'one',
+ 'two',
+ 'three',
+ 'four',
+ 'five',
+ 'six',
+ 'seven',
+ 'eight',
+ 'nine',
+ 'ten',
+ );
+$db = new SQLite3(':memory:');
+$db->exec("CREATE TABLE strings(a)");
+$insert = $db->prepare('INSERT INTO strings VALUES (?)');
+foreach ($data as $str) {
+ $insert->bindValue(1, $str);
+ $insert->execute();
+}
+$insert = null;
+
+function max_len_step($context, $rownumber, $string)
+{
+ if (strlen($string) > $context) {
+ $context = strlen($string);
+ }
+ return $context;
+}
+
+function max_len_finalize($context, $rownumber)
+{
+ return $context === null ? 0 : $context;
+}
+
+$db->createAggregate('max_len', 'max_len_step', 'max_len_finalize');
+
+var_dump($db->querySingle('SELECT max_len(a) from strings'));
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen role="php">
+<![CDATA[
+int(5)
+]]>
+ </screen>
+ </example>
+ </para>
+ <para>
+ In diesem Beispiel erzeugen wir eine Aggregat-Funktion, die die Länge
+ der längsten Zeichenkette innerhalb einer der Tabellenspalten ermittelt.
+ Die <literal>max_len_step</literal>-Funktion wird für jede durchlaufene Reihe
+ mit dem Parameter <literal>$context</literal> aufgerufen. Der Parameter
+ 'context' ist eine normal PHP Variable, welche Listen oder Objektinhalte
+ beinhalten kann. In diesem Beispiel benötigen wir sie als Speicher für die
+ größte bisher gefundene Länge der geprüften Zeichenketten. Wenn also die
+ die Zeichenkette in <literal>$string</literal> länger ist, als die aktuell
+ Längste, wird der Inhalt von 'context' mit der neuen Länge überschrieben.
+ </para>
+ <para>
+ Nachdem alle Reihen abgearbeitet wurden, ruft SQLite die
+ <literal>max_len_finalize</literal>-Funktion auf, um das Endergebnis
+ zu ermitteln. Hier können wir nun jede Art von Berechnungen,
+ basierend auf den in <literal>$context</literal> gesammelten Daten,
+ durchführen. In unserem Beispiel haben wir die Berechgungen bereits bei
+ der Datenerhebung getätigt, dass wir nun nur noch das Ergebnis -
+ den Inhalt von 'context' - zurückgeben brauchen.
+ </para>
+ <tip>
+ <para>
+ Es ist nicht ratsam, eine Kopie der Inhalte in 'context' zu speichern,
+ um diese dann am Ende auszuwerten. Das würde dazu führen, dass SQLite eine
+ große Menge an Speicher benötigt, um die Abfrage abzuarbeiten. Überlegen Sie
+ nur mal, wieviel Speicher eine Abfrage braucht, die 1 Millionen Reihen mit
+ je 32 Byte Inhalt aus der Datenbank liest.
+ </para>
+ </tip>
+ <tip>
+ <para>
+ <methodname>SQLite3::createAggregate</methodname> kann verwendet werden, um
+ native SQL-Funktionen von SQLite zu übersteuern.
+ </para>
+ </tip>
+ </refsect1>
+
</refentry>
<!-- Keep this comment at the end of the file