Просмотр исходного кода

[MANUAL] German:

- sync up to 18750

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18799 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 лет назад
Родитель
Сommit
97897d23af

+ 341 - 0
documentation/manual/de/module_specs/Zend_Validate-CreditCard.xml

@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- EN-Revision: 18748 -->
+<!-- Reviewed: no -->
+<sect2 id="zend.validate.set.creditcard">
+    <title>CreditCard</title>
+
+    <para>
+        <classname>Zend_Validate_CreditCard</classname> erlaubt es zu prüfen ob ein angegebener
+        Wert eine Kreditkarten Nummer sein könnte.
+    </para>
+
+    <para>
+        Eine Kreditkarte enthält verschiedene Elemente an Metadaten, inklusive ein Hologramm, die
+        Accountnummer, Logo, Ablaufdatum, Sicherheitscode und den Namen des Kreditkartenbesitzers.
+        Die Algorithmen für die Prüfung der Kombination an Metadaten sind nur der ausgebenden
+        Firma bekannt, und sollten mit Ihnen zum Zwecke der Zahlung geprüft werden. Trotzdem ist es
+        oft nützlich zu wissen ob eine akutell angegebene Nummer in den Bereich der möglichen
+        Nummern fällt <emphasis>bevor</emphasis> so eine Überprüfung durchgeführt wird, und daher
+        prüft <classname>Zend_Validate_CreditCard</classname> einfach ob die angegebene
+        Kreditkartennummer entspricht.
+    </para>
+
+    <para>
+        Für die Fälle in denen man ein Service hat, das tiefere Prüfungen durchführt, bietet
+        <classname>Zend_Validate_CreditCard</classname> auch die Möglichkeit einen Service
+        Callback anzuhängen der ausgeführt wird sobald die Kreditkartennummer vorbehaltlich als
+        gültig geprüft wurde; dieser Callback wird dann ausgeführt, und sein Rückgabewert wird
+        die komplette Gültigkeit erkennen.
+    </para>
+
+    <para>
+        Die folgenden Kreditkarteninstitute werden akzeptiert:
+    </para>
+
+    <itemizedlist>
+        <listitem>
+            <para>
+                <emphasis>American Express</emphasis>
+            </para>
+
+            <para>
+                <emphasis>China UnionPay</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Diners Club Card Blanche</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Diners Club International</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Diners Club US &amp; Canada</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Discover Card</emphasis>
+            </para>
+
+            <para>
+                <emphasis>JCB</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Laser</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Maestro</emphasis>
+            </para>
+
+            <para>
+                <emphasis>MasterCard</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Solo</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Visa</emphasis>
+            </para>
+
+            <para>
+                <emphasis>Visa Electron</emphasis>
+            </para>
+        </listitem>
+    </itemizedlist>
+
+    <note>
+        <title>Ungültige Institute</title>
+
+        <para>
+            Die Institute <emphasis>Bankcard</emphasis> und <emphasis>Diners Club
+                enRoute</emphasis> existieren nicht mehr. Deshalb werden Sie als ungültig erkannt.
+        </para>
+
+        <para>
+            <emphasis>Switch</emphasis> wurde zu <emphasis>Visa</emphasis> umbenannt und wird daher
+            auch als ungültig erkannt.
+        </para>
+    </note>
+
+    <sect3 id="zend.validate.set.creditcard.basic">
+        <title>Grundsätzliche Verwendung</title>
+
+        <para>
+            Es gibt verschiedene Kreditkarten Institute wie mit
+            <classname>Zend_Validate_CreditCard</classname> geprüft werden können. Standardmäßig
+            werden alle bekannte Institute akzeptiert. Siehe das folgende Beispiel:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$valid = new Zend_Validate_CreditCard();
+if ($valid->isValid($input)) {
+    // Die Eingabe scheint gültig zu sein
+} else {
+    // Die Eingabe ist ungültig
+}
+]]></programlisting>
+
+        <para>
+            Das oben stehende Beispiel würde alle bekannten Kreditkarten Institute als gültig
+            erkennen.
+        </para>
+    </sect3>
+
+    <sect3 id="zend.validate.set.creditcard.institute">
+        <title>Definierte Kreditkarte akzeptieren</title>
+
+        <para>
+            Manchmal ist es notwendig nur definierte Kreditkarten Institute zu akzeptieren statt
+            alle; z.B wenn man einen Webshop hat der nur Visa und American Express Karten
+            akzeptiert. <classname>Zend_Validate_CreditCard</classname> erlaubt einem exakt das zu
+            tun, indem auf genau diese Institute limitiert wird.
+        </para>
+
+        <para>
+            Um ein Limit zu verwenden kann man entweder spezifische Institute bei der Initiierung
+            angeben, oder im nachhinein durch Verwendung von <methodname>setType()</methodname>.
+            Jede kann verschiedene Argumente verwenden.
+        </para>
+
+        <para>
+            Man kann ein einzelnes Institut angeben:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$valid = new Zend_Validate_CreditCard(
+    Zend_Validate_CreditCard::AMERICAN_EXPRESS
+);
+]]></programlisting>
+
+        <para>
+            Wenn man mehrere Institute erlauben will, dann kann man diese als Array angeben:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$valid = new Zend_Validate_CreditCard(array(
+    Zend_Validate_CreditCard::AMERICAN_EXPRESS,
+    Zend_Validate_CreditCard::VISA
+));
+]]></programlisting>
+
+        <para>
+            Wie bei allen Prüfern kann man auch ein assoziatives Array an Optionen oder eine
+            Instanz von Zend_Config angeben. In diesem Fall muß man die Institute mit dem
+            Arrayschlüssel <property>type</property> angeben wie hier simuliert:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$valid = new Zend_Validate_CreditCard(array(
+    'type' => array(Zend_Validate_CreditCard::AMERICAN_EXPRESS)
+));
+]]></programlisting>
+
+        <table id="zend.validate.set.creditcard.institute.table">
+            <title>Konstanten für Kreditkarten Institute</title>
+            <tgroup cols="5">
+                <thead>
+                    <row>
+                        <entry>Institut</entry>
+                        <entry>Konstante</entry>
+                    </row>
+                </thead>
+
+                <tbody>
+                    <row>
+                        <entry><emphasis>American Express</emphasis></entry>
+                        <entry><constant>AMERICAN_EXPRESS</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>China UnionPay</emphasis></entry>
+                        <entry><constant>UNIONPAY</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Diners Club Card Blanche</emphasis></entry>
+                        <entry><constant>DINERS_CLUB</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Diners Club International</emphasis></entry>
+                        <entry><constant>DINERS_CLUB</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Diners Club US &amp; Canada</emphasis></entry>
+                        <entry><constant>DINERS_CLUB_US</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Discover Card</emphasis></entry>
+                        <entry><constant>DISCOVER</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>JCB</emphasis></entry>
+                        <entry><constant>JCB</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Laser</emphasis></entry>
+                        <entry><constant>LASER</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Maestro</emphasis></entry>
+                        <entry><constant>MAESTRO</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>MasterCard</emphasis></entry>
+                        <entry><constant>MASTERCARD</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Solo</emphasis></entry>
+                        <entry><constant>Solo</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Visa</emphasis></entry>
+                        <entry><constant>VISA</constant></entry>
+                    </row>
+
+                    <row>
+                        <entry><emphasis>Visa Electron</emphasis></entry>
+                        <entry><constant>VISA</constant></entry>
+                    </row>
+                </tbody>
+            </tgroup>
+        </table>
+
+        <para>
+            Man kann Institute auch im Nachhinein setzen oder hinzufügen indem die Methoden
+            <methodname>setType()</methodname>, <methodname>addType()</methodname> und
+            <methodname>getType()</methodname> verwendet werden.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$valid = new Zend_Validate_CreditCard();
+$valid->setType(array(
+    Zend_Validate_CreditCard::AMERICAN_EXPRESS,
+    Zend_Validate_CreditCard::VISA
+));
+]]></programlisting>
+
+        <note>
+            <title>Standard Institute</title>
+
+            <para>
+                Wenn bei der Initiierung kein Institut angegeben wird, dann wird
+                <emphasis>ALL</emphasis> verwendet, welches alle Institute auf einmal verwendet.
+            </para>
+
+            <para>
+                In diesem Fall ist die Verwendung von <methodname>addType</methodname> sinnlos
+                weil bereits alle Institute hinzugefügt wurden.
+            </para>
+        </note>
+    </sect3>
+
+    <sect3 id="zend.validate.set.creditcard.servicecheck">
+        <title>Prüfung durch Verwendung einer fremden API</title>
+
+        <para>
+            Wie vorher erwähnt prüft <classname>Zend_Validate_CreditCard</classname> nur die
+            Kreditkarten Nummer. Glücklicherweise bieten einige Institute online APIs welche
+            eine Kreditkarten Nummer durch Verwendung von Algorithmen prüfen kann, welche
+            nicht öffentlich bekannt sind. Die meisten dieser Services sind zu bezahlen.
+            Deshalb ist diese Art der Prüfung standardmäßig deaktiviert.
+        </para>
+
+        <para>
+            Wenn man auf so eine API zugreift, kann man diese als Addon für
+            <classname>Zend_Validate_CreditCard</classname> verwenden um die Sicherheit der
+            Prüfung zu erhöhen.
+        </para>
+
+        <para>
+            Um das zu tun muss man einfach einen Callback angeben der aufgerufen wird wenn die
+            generische Prüfung erfolgreich war. Das verhindert das die API für ungültige Nummern
+            aufgerufen wird, was wiederum die Performance der Anwendung erhöht.
+        </para>
+
+        <para>
+            <methodname>setService()</methodname> setzt ein neues Service und
+            <methodname>getService()</methodname> gibt das gesetzte Service zurück. Als
+            Option für die Konfiguration kann man den Arrayschlüssel '<property>service</property>'
+            bei der Initiierung verwenden. Für Details über mögliche Optionen kann man unter
+            <link linkend="zend.validate.set.callback" /> nachsehen.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Die eigene Service Klasse
+class CcService
+{
+    public function checkOnline($cardnumber, $types)
+    {
+        // einige online Prüfungen
+    }
+}
+
+// Die Prüfung
+$service = new CcService();
+$valid   = new Zend_Validate_CreditCard(Zend_Validate_CreditCard::VISA);
+$valid->setService(array($service, 'checkOnline'));
+]]></programlisting>
+
+        <para>
+            Wie man sieht wird die Callback Methode mit der Kreditkarten Nummer als erster Parameter
+            aufgerufen, und die akzeptierten Typen als zweiter Parameter.
+        </para>
+    </sect3>
+</sect2>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 10 - 1
documentation/manual/de/module_specs/Zend_Validate-Set.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 18724 -->
+<!-- EN-Revision: 18748 -->
 <!-- Reviewed: no -->
 <sect1 id="zend.validate.set" xmlns:xi="http://www.w3.org/2001/XInclude">
 
@@ -63,6 +63,7 @@
     </sect2>
 
     <xi:include href="Zend_Validate-Callback.xml" />
+    <xi:include href="Zend_Validate-Creditcard.xml" />
 
     <sect2 id="zend.validate.set.ccnum">
         <title>Ccnum</title>
@@ -70,6 +71,14 @@
             Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> dem Luhn
             Algorithmus (mod-10 Checksumme) für Kreditkarten Nummern folgt.
         </para>
+
+        <note>
+            <para>
+                Die <classname>Ccnum</classname> Prüfung sollte nicht mehr eingesetzt werden.
+                Stattdessen sollte man die <classname>CreditCard</classname> Prüfung verwenden.
+                Aus Gründen der Sicherheit sollte man CreditCard statt Ccnum verwenden.
+            </para>
+        </note>
     </sect2>
 
     <sect2 id="zend.validate.set.date">