| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.file.transfer.validators">
- <title>Prüfungen für Zend_File_Transfer</title>
- <para>
- <classname>Zend_File_Transfer</classname> wird mit verschiedenen Datei-relevanten Prüfungen
- ausgeliefert welche verwendet werden können um die Sicherheit zu erhöhen und mögliche
- Attacken zu verhindern. Es ist zu beachten das diese Prüfungen nur so effektiv sind wie Sie
- effektiv angewendet verwendet. Alle Prüfungen die mit
- <classname>Zend_File_Transfer</classname> angeboten werden können in der
- <classname>Zend_Validator</classname> Komponente gefunden werden und heißen
- <classname>Zend_Validate_File_*</classname>. Die folgenden Prüfungen sind vorhanden:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <classname>Count</classname>: Diese Prüfung checkt die Anzahl der Dateien. Es kann
- ein Minimum und ein Maximum spezifiziert werden. Ein Fehler wird geworfen wenn einer
- der zwei Werte überschritten wird.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Crc32</classname>: Diese Prüfung checkt den Crc32 Hashwert vom Inhalt
- einer Datei. Sie basiert auf der <classname>Hash</classname> Prüfung und bietet eine
- bequeme und einfache Prüfung die nur Crc32 unterstützt.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>ExcludeExtension</classname>: Diese Prüfung checkt die Dateierweiterung.
- Sie wirft einen Fehler wenn die angegebene Datei eine definierte Erweiterung hat.
- Mit dieser Prüfung können definierte Erweiterungen von der Prüfung ausgenommen
- werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>ExcludeMimeType</classname>: Diese Prüfung prüft den
- <acronym>MIME</acronym> Typ von Dateien. Sie kann auch Arten von
- <acronym>MIME</acronym> Typen prüfen und wirft einen Fehler wenn der
- <acronym>MIME</acronym> Typ einer spezifizierten Datei passt.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Exists</classname>: Diese Prüfung checkt ob Dateien existieren. Sie wirft
- einen Fehler wenn eine spezifizierte Datei nicht existiert.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Extension</classname>: Diese Prüfung checkt die Dateierweiterung. Sie
- wirft einen Fehler wenn eine spezifizierte Datei eine undefinierte Erweiterung hat.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>FilesSize</classname>: Diese Prüfung checkt die Größe von geprüften
- Dateien. Sie merkt sich intern die Größe aller geprüften Dateien und wirft einen
- Fehler wenn die Summe aller spezifizierten Dateien die definierte Größe
- überschreitet. Sie bietet auch Mindest- und Maximalwerte an.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>ImageSize</classname>: Diese Prüfung checkt die Größe von Bildern. Sie
- prüft die Breite und Höhe und erzwingt sowohl eine Mindest- als auch eine
- Maximalgröße.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>IsCompressed</classname>: Diese Prüfung checkt ob die Datei komprimiert
- ist. Sie basiert auf der <classname>MimeType</classname> Prüfung und validiert
- Komprimierungsarchiven wie Zip oder Arc. Sie kann auch auf andere Archive begrenzt
- werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>IsImage</classname>: Diese Prüfung checkt ob die Datei ein Bild ist. Sie
- basiert auf der <classname>MimeType</classname> Prüfung und validiert Bilddateien
- wie Jpg oder Gif. Sie kann auch auf andere Bildtypen begrenzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Hash</classname>: Diese Prüfung check den Hashwert des Inhalts einer
- Datei. Sie unterstützt mehrere Algorithmen.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Md5</classname>: Diese Prüfung checkt den Md5 Hashwert vom Inhalt einer
- Datei. Sie basiert auf der <code>Hash</code> Prüfung und bietet eine bequeme und
- einfache Prüfung die nur Md5 unterstützt.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>MimeType</classname>: Diese Prüfung prüft den <acronym>MIME</acronym> Typ
- von Dateien. Sie kann auch Arten von <acronym>MIME</acronym> Typen prüfen und wirft
- einen Fehler wenn der <acronym>MIME</acronym> Typ einer spezifizierten Datei nicht
- passt.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>NotExists</classname>: Diese Prüfung checkt ob Dateien existieren. Sie
- wirft einen Fehler wenn eine angegebene Datei existiert.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Sha1</classname>: Diese Prüfung checkt den Sha1 Hashwert vom Inhalt einer
- Datei. Sie basiert auf der <classname>Hash</classname> Prüfung und bietet eine
- bequeme und einfache Prüfung die nur Sha1 unterstützt.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Size</classname>: Diese Prüfung ist fähig Dateien auf Ihre Dateigröße zu
- prüfen. Sie bietet eine Mindest- und eine Maximalgröße an und wirft einen Fehler
- wenn eine der beiden Grenzen überschritten wird.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>Upload</classname>: Diese Prüfung ist eine interne. Sie prüft ob ein
- Upload zu einem Fehler geführt hat. Dieser darf nicht gesetzt werden, da er
- automatisch durch <classname>Zend_File_Transfer</classname> selbst gesetzt wird.
- Deshalb darf diese Prüfung nicht direkt verwendet werden. Man sollte nur wissen das
- Sie existiert.
- </para>
- </listitem>
- <listitem>
- <para>
- <classname>WordCount</classname>: Diese Prüfung ist fähig die Anzahl von Wörtern in
- Dateien zu prüfen. Sie bietet eine Mindest- und Maximalanzahl und wirft einen Fehler
- wenn eine der Grenzen überschritten wird.
- </para>
- </listitem>
- </itemizedlist>
- <sect2 id="zend.file.transfer.validators.usage">
- <title>Prüfungen mit Zend_File_Transfer verwenden</title>
- <para>
- Prüfungen einzubinden ist sehr einfach. Es gibt verschiedene Methoden für das
- Hinzufügen und Manipulieren von Prüfungen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <methodname>isValid($files = null)</methodname>: Prüft die spezifizierten
- Dateien indem alle Prüfungen verwendet werden. <varname>$files</varname> kann
- entweder ein richtiger Dateiname, der Name des Elements, oder der Name der
- temporären Datei sein.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>addValidator($validator, $breakChainOnFailure, $options = null,
- $files = null)</methodname>: Fügt die spezifizierte Prüfung zu den
- Prüfungsstapel hinzu (optional nur zu den Datei(en) die spezifiziert wurden).
- <varname>$validator</varname> kann entweder eine aktuelle Prüfinstanz sein oder
- ein Kurzname der den Prüfungstyp spezifiziert (z.B. 'Count').
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>addValidators(array $validators, $files = null)</methodname>: Fügt
- die spezifizierten Prüfungen zum Prüfungsstapel hinzu. Jeder Eintrag kann
- entweder ein Prüfungstyp/-options Paar sein oder ein Array mit dem Schlüssel
- 'validator' das die Prüfung spezifiziert. Alle anderen Optionen werden als
- Optionen für die Instanzierung der Prüfung angenommen.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>setValidators(array $validators, $files = null)</methodname>:
- Überschreibt alle bestehenden Prüfungen mit den spezifizierten Prüfungen. Die
- Prüfungen sollten der Syntax folgen die für
- <methodname>addValidators()</methodname> definiert ist.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>hasValidator($name)</methodname>: Zeigt ob eine Prüfung registriert
- wurde.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>getValidator($name)</methodname>: Gibt eine vorher registrierte
- Prüfung zurück.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>getValidators($files = null)</methodname>: Gibt registrierte
- Prüfungen zurück. Wenn <varname>$files</varname> spezifiziert wurde, werden die
- Prüfungen für die betreffende Datei oder das Set an Dateien zurückgegeben.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>removeValidator($name)</methodname>: Entfernt eine vorher
- registrierte Prüfung.
- </para>
- </listitem>
- <listitem>
- <para>
- <methodname>clearValidators()</methodname>: Löscht alle registrierten
- Prüfungen.
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.file.transfer.validators.usage.example">
- <title>Prüfungen zu einem File Transfer Objekt hinzufügen</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Setzt eine Dateigröße von 20000 Bytes
- $upload->addValidator('Size', false, 20000);
- // Setzt eine Dateigröße von mindestens 20 Bytes und maximal 20000 Bytes
- $upload->addValidator('Size', false, array('min' => 20, 'max' => 20000));
- // Setzt eine Dateigröße von mindestens 20 Bytes und Maximal
- // 20000 Bytes und eine Dateianzahl in einem Schritt
- $upload->setValidators(array(
- 'Size' => array('min' => 20, 'max' => 20000),
- 'Count' => array('min' => 1, 'max' => 3),
- ));
- ]]></programlisting>
- </example>
- <example id="zend.file.transfer.validators.usage.exampletwo">
- <title>Prüfungen auf eine einzelne Datei limitieren</title>
- <para>
- <methodname>addValidator()</methodname>, <methodname>addValidators()</methodname>,
- und <methodname>setValidators()</methodname> akzeptieren ein endendes Argument
- <varname>$files</varname>. Dieses Argument kann verwendet werden um eine Datei oder
- ein Array von Dateien zu spezifizieren auf dem die angegebene Prüfung gesetzt werden
- soll.
- </para>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Setzt die Dateigröße auf 20000 Bytes und limitiert Sie nur auf 'file2'
- $upload->addValidator('Size', false, 20000, 'file2');
- ]]></programlisting>
- </example>
- <para>
- Normal sollte die <methodname>addValidators()</methodname> Methode verwendet werden,
- welche mehrmals aufgerufen werden kann.
- </para>
- <example id="zend.file.transfer.validators.usage.examplemultiple">
- <title>Mehrere Prüfungen hinzufügen</title>
- <para>
- Oft ist es einfacher <methodname>addValidator()</methodname> mehrere Male
- aufzurufen mit einem Aufruf für jede Prüfung. Das erhöht auch die Lesbarkeit und
- macht den Code wartbarer. Alle Methoden implementieren das Fluent-Interface,
- deshalb können Aufrufe einfach wie anbei gezeigt gekoppelt werden:
- </para>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Setzt die Dateigröße auf 20000 Bytes
- $upload->addValidator('Size', false, 20000)
- ->addValidator('Count', false, 2)
- ->addValidator('Filessize', false, 25000);
- ]]></programlisting>
- </example>
- <note>
- <para>
- Es ist zu beachten, dass das mehrfache Setzen der gleichen Prüfung erlaubt
- ist, dass das aber zu Problemen führen kann wenn verschiedene Optionen für die
- gleiche Prüfung verwendet werden.
- </para>
- </note>
- <para>
- Letztendlich können Dateien einfach geprüft werden indem
- <methodname>isValid()</methodname> verwendet wird.
- </para>
- <example id="zend.file.transfer.validators.usage.exampleisvalid">
- <title>Prüfen der Dateien</title>
- <para>
- <methodname>isValid()</methodname> akzeptiert den Dateinamen der hochgeladenen oder
- heruntergeladenen Datei, den temporären Dateinamen oder den Namen des
- Formularelements. Wenn kein Parameter oder null angegeben wird, werden alle
- gefundenen Dateien geprüft.
- </para>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Setzt die Dateigröße auf 20000 Bytes
- $upload->addValidator('Size', false, 20000)
- ->addValidator('Count', false, 2)
- ->addValidator('Filessize', false, 25000);
- if (!$upload->isValid()) {
- print "Prüfung fehlgeschlagen";
- }
- ]]></programlisting>
- </example>
- <note>
- <para>
- Es ist zu beachten das <methodname>isValid()</methodname> automatisch aufgerufen
- wird, wenn die Dateien empfangen werden und es zuvor noch nicht aufgerufen wurde.
- </para>
- </note>
- <para>
- Wenn Prüfungen fehlgeschlagen sind, ist es eine gute Idee Informationen über die
- gefundenen Probleme zu erhalten. Um diese Information zu erhalten können die Methoden
- <methodname>getMessages()</methodname>, welche alle Prüfmeldungen als Array zurückgibt,
- <methodname>getErrors()</methodname> welche alle Fehlercodes zurückgibt, und
- <methodname>hasErrors()</methodname> welche <constant>TRUE</constant> zurückgibt sobald
- ein Prüffehler gefunden wurde, verwendet werden.
- </para>
- </sect2>
- <sect2 id="zend.file.transfer.validators.count">
- <title>Count Prüfung</title>
- <para>
- Die <classname>Count</classname> Prüfung checkt die Anzahl der Dateien die angegeben
- wurde. Sie unterstützt die folgenden Schlüssel für Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>min</property>: Setzt die minimale Anzahl der Dateien die übertragen
- wird.
- </para>
- <note>
- <para>
- Wenn diese Option verwendet wird, muß die minimale Anzahl an Dateien
- übergeben werden wenn die Prüfung das erste Mal aufgerufen wird; sonst wird
- ein Fehler zurückgegeben.
- </para>
- </note>
- <para>
- Mit dieser Option kann die Mindestanzahl an Dateien definiert werden die man
- Empfangen sollte.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>max</property>: Setzt die maximale Anzahl an Dateien die übertragen
- wird.
- </para>
- <para>
- Mit dieser Option kann die Anzahl der Dateien limitiert werden die man
- akzeptiert, aber genauso eine mögliche Attacke erkennen wenn mehr Dateien
- übertragen werden als im Formular definiert wurden.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Wenn diese Prüfung mit einem String oder Integer initiiert wird, wird Sie als
- <property>max</property> verwendet. Es können aber auch die Methoden
- <methodname>setMin()</methodname> und <methodname>setMax()</methodname> verwendet
- werden um beide Optionen im Nachhinein zu setzen und <methodname>getMin()</methodname>
- und <methodname>getMax()</methodname> um die aktuell gesetzten Werte zu erhalten.
- </para>
- <example id="zend.file.transfer.validators.count.example">
- <title>Die Count Prüfung verwenden</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Die Anzahl der Dateien auf maximal 2 limitieren
- $upload->addValidator('Count', false, 2);
- // Die Anzahl der Dateien auf maximal 5 und mindestens 1 Datei limitieren
- $upload->addValidator('Count', false, array('min' =>1, 'max' => 5));
- ]]></programlisting>
- </example>
- <note>
- <para>
- Beachte das diese Prüfung die Anzahl der geprüften Dateien intern speichert. Die
- Datei welche das Maximum überschrietet wird als Fehler zurückgegeben.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.crc32">
- <title>Crc32 Prüfung</title>
- <para>
- Die <classname>Crc32</classname> Prüfung checkt den Inhalt einer übertragenen Datei
- durch hashen. Diese Prüfung verwendet die Hash Erweiterung von <acronym>PHP</acronym>
- mit dem Crc32 Algorithmus. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array. Dieser Wert wird als Hash verwendet gegen den geprüft wird.
- </para>
- <para>
- Man kann mehrere Hashes setzen indem unterschiedliche Schlüssel angegeben
- werden. Jeder von Ihnen wird geprüft und die Prüfung schlägt nur fehl wenn alle
- Werte fehlschlagen.
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.file.transfer.validators.crc32.example">
- <title>Verwenden der Crc32 Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Prüft ob der Inhalt der hochgeladenen Datei den angegebenen Hash hat
- $upload->addValidator('Hash', false, '3b3652f');
- // Begrenzt diese Prüfung auf zwei unterschiedliche Hashes
- $upload->addValidator('Crc32', false, array('3b3652f', 'e612b69'));
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.file.transfer.validators.excludeextension">
- <title>ExcludeExtension Prüfung</title>
- <para>
- Die <classname>ExcludeExtension</classname> Prüfung checkt die Dateierweiterung der
- angegebenen Dateien. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array. Dieser Wert wird verwendet um zu prüfen ob die angegebene Datei diese
- Dateierweiterung nicht verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>case</property>: Setzt ein Boolean der anzeigt ob die Prüfung auf die
- Klein/Großschreibung achten soll. Standardmäßig ist die Klein/Großschreibung
- egal. Beachte das dieser Schlüssel für alle vorhandenen Erweiterungen angewendet
- werden kann.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Dieser Prüfer akzeptiert mehrere Erweiterungen entweder als komma-getrennten String,
- oder als ein Array. Man kann auch die <methodname>setExtension()</methodname>,
- <methodname>addExtension()</methodname> und <methodname>getExtension()</methodname>
- Methoden verwenden um Erweiterungen zu setzen und zu erhalten.
- </para>
- <para>
- In einigen Fällen ist es nützlich auch auf Klein/Großschreibung zu testen. Deshalb
- erlaubt der Constructor einen zweiten Parameter <varname>$case</varname> der, wenn er
- auf <constant>TRUE</constant> gesetzt wird, die Erweiterungen abhängig von der Klein-
- oder Großschreibung prüft.
- </para>
- <example id="zend.file.transfer.validators.excludeextension.example">
- <title>Die ExcludeExtension Prüfung verwenden</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Dateien mit der Erweiterung php oder exe nicht erlauben
- $upload->addValidator('ExcludeExtension', false, 'php,exe');
- // Dateien mit der Erweiterung php oder exe nicht erlauben
- // aber die Array Schreibweise verwenden
- $upload->addValidator('ExcludeExtension', false, array('php', 'exe'));
- // Prüft abhängig von der Groß-/Kleinschreibung
- $upload->addValidator('ExcludeExtension',
- false,
- array('php', 'exe', 'case' => true));
- ]]></programlisting>
- </example>
- <note>
- <para>
- Es ist zu beachten das diese Prüfung nur die Dateierweiterung prüft. Sie prüft nicht
- den <acronym>MIME</acronym> Typ der Datei.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.excludemimetype">
- <title>ExcludeMimeType Prüfung</title>
- <para>
- Die <classname>ExcludeMimeType</classname> Prüfung checkt den <acronym>MIME</acronym>
- Typ von übertragenen Dateien. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array. Setzt den <acronym>MIME</acronym> Typ gegen den geprüft werden soll.
- </para>
- <para>
- Mit dieser Option kann der <acronym>MIME</acronym> Typ von Dateien definiert
- werden die nicht akzeptiert werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>headerCheck</property>: Wenn diese Option auf
- <constant>TRUE</constant> gesetzt wird, dann werden die <acronym>HTTP</acronym>
- Informationen für den Dateityp geprüft wenn die <emphasis>fileInfo</emphasis>
- oder <emphasis>mimeMagic</emphasis> Erweiterungen nicht gefunden werden können.
- Der Standardwert dieser Option ist <constant>FALSE</constant>.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Diese Prüfung akzeptiert viele <acronym>MIME</acronym> Typ entweder als Komma-getrennter
- String, oder als Array. Man kan auch die Methoden
- <methodname>setMimeType()</methodname>, <methodname>addMimeType()</methodname>, und
- <methodname>getMimeType()</methodname> verwenden um <acronym>MIME</acronym> Typen zu
- setzen und zu erhalten.
- </para>
- <example id="zend.file.transfer.validators.excludemimetype.example">
- <title>Verwendung der ExcludeMimeType Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Verweigert den MIME Typ gif für alle gegebenen Dateien
- $upload->addValidator('ExcludeMimeType', 'image/gif');
- // Verweigert den MIME Typ gif und jpeg für alle gegebenen Dateien
- $upload->setValidator('ExcludeMimeType', array('image/gif',
- 'image/jpeg');
- // Verweigert die MIME Typ Gruppe image für alle Dateien
- $upload->setValidator('ExcludeMimeType', 'image');
- ]]></programlisting>
- </example>
- <para>
- Das obige Beispiel zeigt das es auch möglich ist Gruppen von <acronym>MIME</acronym>
- Typen zu verweigern. Um, zum Beispiel, alle Bilder zu verweigern, muß nur 'image' als
- <acronym>MIME</acronym> Typ verwendet werden. Das kann für alle Gruppen von
- <acronym>MIME</acronym> Typen wie 'image', 'audio', 'video', 'test', und so weiter
- verwendet werden.
- </para>
- <note>
- <para>
- Es ist zu beachten das bei Verwendung von <acronym>MIME</acronym> Typ-Gruppen alle
- Mitglieder dieser Gruppe verweigert werden, selbst wenn das nicht gewünscht ist.
- Wenn man 'image' verweigert, werden alle Typen von Bildern verweigert wie
- 'image/jpeg' oder 'image/vasa'. Wenn man nicht sicher ist ob man alle Typen
- verweigern will sollte man nur definierte <acronym>MIME</acronym> Typen zu
- verweigern statt der kompletten Gruppe.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.exists">
- <title>Exists Prüfung</title>
- <para>
- Die <classname>Exists</classname> Prüfung checkt ob Dateien die spezifiziert werden
- existieren. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array um zu prüfen ob die spezifizierte Datei im gegebenen Verzeichnis
- existiert.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Diese Prüfung akzeptiert mehrere Verzeichnisse, entweder als Komma-getrennter String,
- oder als Array. Es können aber auch die Methoden
- <methodname>setDirectory()</methodname>, <methodname>addDirectory()</methodname>, und
- <methodname>getDirectory()</methodname> verwendet werden um die Verzeichnisse zu setzen
- und zu erhalten.
- </para>
- <example id="zend.file.transfer.validators.exists.example">
- <title>Die Exists Prüfung verwenden</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Das temporäre Verzeichnis für die Prüfung hinzufügen
- $upload->addValidator('Exists', false, '\temp');
- // Zwei Verzeichnisse hinzufügen indem die Array Schreibweise verwendet wird
- $upload->addValidator('Exists',
- false,
- array('\home\images', '\home\uploads'));
- ]]></programlisting>
- </example>
- <note>
- <para>
- Beachte das diese Prüfung checkt ob die spezifizierte Datei in allen angegebenen
- Verzeichnissen existiert. Die Prüfung schlägt fehl, wenn die Datei in irgendeinem
- der angegebenen Verzeichnisse nicht existiert.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.extension">
- <title>Extension Prüfung</title>
- <para>
- Die <classname>Extension</classname> Prüfung checkt die Dateierweiterung der angegebenen
- Dateien. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array um zu prüfen ob die angegebene Datei diese Dateierweiterung verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>case</property>: Definiert of die Prüfung auf die Klein/Großschreibung
- achten soll. Standardmäßig ist die Klein/Großschreibung egal. Es ist zu beachten
- das dieser Schlüssel für alle verwendeten Erweiterungen angegeben wird.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Dieser Prüfer akzeptiert mehrere Erweiterungen entweder als komma-getrennten String,
- oder als ein Array. Man kann auch die <methodname>setExtension()</methodname>,
- <methodname>addExtension()</methodname> und <methodname>getExtension()</methodname>
- Methoden verwenden um Erweiterungs Werte zu setzen und zu erhalten.
- </para>
- <para>
- In einigen Fällen ist es nützlich auch auf Klein/Großschreibung zu testen. Hierfür nimmt
- der Constructor einen zweiten Parameter <varname>$case</varname> der, wenn er auf
- <constant>TRUE</constant> gesetzt wird, die Erweiterungen abhängig von der Klein-
- oder Großschreibung prüft.
- </para>
- <example id="zend.file.transfer.validators.extension.example">
- <title>Verwendung der Extension Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Limitiert die Erweiterungen auf jpg und png Dateien
- $upload->addValidator('Extension', false, 'jpg,png');
- // Limitiert die Erweiterungen auf jpg und png Dateien,
- // verwendet aber die Array Schreibweise
- $upload->addValidator('Extension', false, array('jpg', 'png'));
- // Abhängig von der Klein/Großschreibung prüfen
- $upload->addValidator('Extension', false, array('mo', 'png', 'case' => true));
- if (!$upload->isValid('C:\temp\myfile.MO')) {
- print 'Nicht gültig da MO und mo Kleinschreibungsmäßig nicht passen';
- }
- ]]></programlisting>
- </example>
- <note>
- <para>
- Es ist zu beachten das diese Prüfung nur die Dateierweiterung prüft. Sie prüft nicht
- den <acronym>MIME</acronym> Typ der Datei.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.filessize">
- <title>FilesSize Prüfung</title>
- <para>
- Die <classname>FilesSize</classname> Prüfung checkt die komplette Größe aller
- übertragenen Dateien. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>min</property>: Setzt die minimale gemeinsame Dateigröße. Diese Option
- definiert die mindeste gemeinsame Größe die übertragen werden soll.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>max</property>: Setzt die maximale gemeinsame Dateigröße.
- </para>
- <para>
- Diese Option begrenzt die gemeinsame Dateigröße aller Dateien die übertragen
- werden, aber nicht die Dateigröße von einzelnen Dateien.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>bytestring</property>: Definiert ob im Fehlerfall eine
- benutzerfreundliche Nummer, oder die reine Dateigröße zurückgegeben wird.
- </para>
- <para>
- Diese Option definiert ob der Benutzer '10864' oder '10MB' sieht. Der
- Standardwert ist <constant>TRUE</constant> weshalb '10MB' zurückgegeben wird
- wenn nicht anders angegeben.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Diese Prüfung kann auch mit einem String initiiert werden, der dann verwendet wird um
- die <property>max</property> Option zu setzen. Man kann auch die Methoden
- <methodname>setMin()</methodname> und <methodname>setMax()</methodname> verwenden um
- beide Optionen nach den Contrucor zu setzen, zusammen mit
- <methodname>getMin()</methodname> und <methodname>getMax()</methodname> um die Werte zu
- erhalten die vorher gesetzt wurden.
- </para>
- <para>
- Die Größe selbst wird auch in der SI Schreibweise akzeptiert wie Sie die meisten
- Betriebsystemen verwenden. Statt <emphasis>20000 bytes</emphasis> kann auch
- <emphasis>20kB</emphasis> angeben werden. Alle Einheiten werden mit dem Basiswert 1024
- konvertiert. Die folgenden Einheiten werden akzeptiert: <emphasis>kB</emphasis>,
- <emphasis>MB</emphasis>, <emphasis>GB</emphasis>, <emphasis>TB</emphasis>,
- <emphasis>PB</emphasis> und <emphasis>EB</emphasis>. Beachte das 1kB gleich 1024 Bytes
- ist, 1MB gleich 1024kB, und so weiter.
- </para>
- <example id="zend.file.transfer.validators.filessize.example">
- <title>Verwenden der FilesSize Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Limitiert die Größe aller Dateien die hochgeladen werden auf 40000 Bytes
- $upload->addValidator('FilesSize', false, 40000);
- // Limitiert die Größe aller Dateien die hochgeladen
- // werden auf maximal 4MB und minimal 10kB
- $upload->addValidator('FilesSize',
- false,
- array('min' => '10kB', 'max' => '4MB'));
- // Wie zuvor, gibt aber die reine Dateigröße
- // statt einem benutzerfreundlichen String zurück
- $upload->addValidator('FilesSize',
- false,
- array('min' => '10kB',
- 'max' => '4MB',
- 'bytestring' => false));
- ]]></programlisting>
- </example>
- <note>
- <para>
- Beachte das diese Prüfung intern die Dateigrößen der geprüften Dateien intern
- speichert. Die Datei welche die Größe überschreitet wird als Fehler zurückgegeben.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.imagesize">
- <title>ImageSize Prüfung</title>
- <para>
- Die <classname>ImageSize</classname> Prüfung checkt die Größe von Bildern. Sie
- unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para><property>minheight</property>: Setzt die mindeste Höhe des Bildes.</para>
- </listitem>
- <listitem>
- <para><property>maxheight</property>: Settzt die maximale Höhe des Bildes.</para>
- </listitem>
- <listitem>
- <para><property>minwidth</property>: Setzt die mindeste Breite des Bildes.</para>
- </listitem>
- <listitem>
- <para><property>maxwidth</property>: Setzt die maximale Breite des Bildes.</para>
- </listitem>
- </itemizedlist>
- <para>
- Die Methoden <methodname>setImageMin()</methodname> und
- <methodname>setImageMax()</methodname> setzen auch beide Minimal- und Maximalwerte im
- Nachhinein, während die <methodname>getMin()</methodname> und
- <methodname>getMax()</methodname> Methoden die aktuell gesetzten Werte zurückgeben.
- </para>
- <para>
- Der Bequemlichkeit halber gibt es auch eine <methodname>setImageWidth()</methodname>
- und <methodname>setImageHeight()</methodname> Methode welche die Mindest- und
- Maximalhöhe und -Breite der Bilddatei setzen. Sie haben auch passende
- <methodname>getImageWidth()</methodname> und <methodname>getImageHeight()</methodname>
- Methoden um die aktuell gesetzten Werte zu erhalten.
- </para>
- <para>
- Um die Prüfung einer betreffenden Dimension zu gestatten, muß die relevante Option
- einfach nicht gesetzt werden.
- </para>
- <example id="zend.file.transfer.validators.imagesize.example">
- <title>Verwendung der ImageSize Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Begrenzt die Größe eines Bildes auf eine Höhe von 100-200
- // und eine Breite von 40-80 Pixel
- $upload->addValidator('ImageSize', false,
- array('minwidth' => 40,
- 'maxwidth' => 80,
- 'minheight' => 100,
- 'maxheight' => 200
- );
- // Setzt die Breite der Prüfung zurück
- $upload->setImageWidth(array('minwidth' => 20, 'maxwidth' => 200));
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.file.transfer.validators.iscompressed">
- <title>IsCompressed Prüfung</title>
- <para>
- Die <classname>IsCompressed</classname> Prüfung checkt ob eine übertragene Datei
- komprimiert ist wie zum Beispiel Zip oder Arc. Diese Prüfung basiert auf der
- <classname>MimeType</classname> Prüfung und unterstützt die gleichen Methoden und
- Optionen. Diese Prüfung kann mit den dort beschriebenen Methoden auf gewünschte
- Komprimierungstypen limitiert werden.
- </para>
- <example id="zend.file.transfer.validators.iscompressed.example">
- <title>Verwenden der IsCompressed Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Checkt ob die hochgeladene Datei komprimiert ist
- $upload->addValidator('IsCompressed', false);
- // Limitiert diese Prüfung auf Zip Dateien
- $upload->addValidator('IsCompressed', false, array('application/zip'));
- // Limitiert diese Prüfung auf Zip Dateien,
- // und verwendet eine einfachere Schreibweise
- $upload->addValidator('IsCompressed', false, 'zip');
- ]]></programlisting>
- </example>
- <note>
- <para>
- Es ist zu beachten das nicht geprüft wird ob ein gesetzter <acronym>MIME</acronym>
- Typ ein Komprimierungstyp ist oder nicht. Man könnte zum Beispiel definieren das Gif
- Dateien von dieser Prüfung akzeptiert werden. Die Verwendung der 'MimeType' Prüfung
- für Dateien welche nicht archiviert sind, führt zu besser lesbarem Code.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.isimage">
- <title>IsImage Prüfung</title>
- <para>
- Die <classname>IsImage</classname> Prüfung checkt ob eine übertragene Datei eine
- Bilddatei ist, wie zum Beispiel Gif oder Jpeg. Diese Prüfung basiert auf der
- <classname>MimeType</classname> Prüfung und unterstützt die gleichen Methoden und
- Optionen. Diese Prüfung kann mit den dort beschriebenen Methoden auf gewünschte
- Bildarten limitiert werden.
- </para>
- <example id="zend.file.transfer.validators.isimage.example">
- <title>Verwenden der IsImage Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Checkt ob die hochgeladene Datei ein Bild ist
- $upload->addValidator('IsImage', false);
- // Limitiert diese Prüfung auf Gif Dateien
- $upload->addValidator('IsImage', false, array('application/gif'));
- // Limitiert diese Prüfung auf Jpeg Dateien,
- // verwendet eine einfachere Schreibweise
- $upload->addValidator('IsImage', false, 'jpeg');
- ]]></programlisting>
- </example>
- <note>
- <para>
- Es ist zu beachten das nicht geprüft wird ob ein gesetzter <acronym>MIME</acronym>
- Typ kein Bild ist. Es ist zum Beispiel möglich, Zip Dateien von dieser Prüfung
- akzeptieren zu lassen. Die Verwendung der 'MimeType' Prüfung für Dateien welche
- keine Bilder sind, führt zu besser lesbarem Code.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.hash">
- <title>Hash Prüfung</title>
- <para>
- Die <classname>Hash</classname> Prüfung checkt den Inhalt einer übertragenen Datei indem
- Sie gehasht wird. Diese Prüfung verwendet die Hash Erweiterung von
- <acronym>PHP</acronym>. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Nimmt einen beliebigen Schlüssel oder ein nummerisches
- Array. Setzt den Hash gegen den geprüft werden soll.
- </para>
- <para>
- Man kann mehrere Hashes setzen indem Sie als Array angegeben werden. Jede Datei
- wird geprüft, und die Prüfung wird nur fehlschlagen wenn alle Dateien die
- Prüfung nicht bestehen.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>algorithm</property>: Setzt den Algorithmus der für das Hashen des
- Inhalts verwendet wird.
- </para>
- <para>
- Man kann mehrere Algorithmen setzen indem die
- <methodname>addHash()</methodname> Methode mehrere Male aufgerufen wird.
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.file.transfer.validators.hash.example">
- <title>Verwenden der Hash Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Prüft ob der Inhalt der hochgeladenen Datei den angegebenen Hash enthält
- $upload->addValidator('Hash', false, '3b3652f');
- // Begrenzt diese Prüfung auf zwei unterschiedliche Hashes
- $upload->addValidator('Hash', false, array('3b3652f', 'e612b69'));
- // Setzt einen anderen Algorithmus gegen den geprüft wird
- $upload->addValidator('Hash',
- false,
- array('315b3cd8273d44912a7',
- 'algorithm' => 'md5'));
- ]]></programlisting>
- </example>
- <note>
- <para>
- Diese Prüfung unterstützt über 34 verschiedene Hash Algorithmen. Die bekanntesten
- sind 'crc32', 'md5' und 'sha1'. Eine gesammelte Liste aller unterstützten Hash
- Algorithmen kann in PHP's <ulink
- url="http://php.net/hash_algos">hash_algos Methode</ulink> auf der
- <ulink url="http://php.net">php.net Seite</ulink> gefunden werden.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.md5">
- <title>Md5 Prüfung</title>
- <para>
- Die <classname>Md5</classname> Prüfung checkt den Inhalt einer übertragenen Datei durch
- hashen. Diese Prüfung verwendet die Hash Erweiterung von <acronym>PHP</acronym> mit dem
- Md5 Algorithmus. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: nimmt einen beliebigen Schlüssel oder ein nummerisches
- Array.
- </para>
- <para>
- Man kann mehrere Hashes setzen indem Sie als Array übergeben werden. Jede Datei
- wird geprüft und die Prüfung schlägt nur dann fehl wenn die Prüfung alle Dateien
- fehlschlägt.
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.file.transfer.validators.md5.example">
- <title>Verwenden der Md5 Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Prüft ob der Inhalt der hochgeladenen Datei den angegebenen Hash hat
- $upload->addValidator('Md5', false, '3b3652f336522365223');
- // Begrenzt diese Prüfung auf zwei unterschiedliche Hashes
- $upload->addValidator('Md5',
- false,
- array('3b3652f336522365223',
- 'eb3365f3365ddc65365'));
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.file.transfer.validators.mimetype">
- <title>MimeType Prüfung</title>
- <para>
- Die <classname>MimeType</classname> Prüfung checkt den <acronym>MIME</acronym> Typ von
- übertragenen Dateien. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array. Setzt die Art des <acronym>MIME</acronym> Typs der geprüft werden soll.
- </para>
- <para>
- Definiert den <acronym>MIME</acronym> Typ von Dateien die akzeptiert werden
- soll.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>headerCheck</property>: Wenn diese Option auf
- <constant>TRUE</constant> gesetzt wird, dann werden die <acronym>HTTP</acronym>
- Informationen für den Dateityp geprüft wenn die <emphasis>fileInfo</emphasis>
- oder <emphasis>mimeMagic</emphasis> Erweiterungen nicht gefunden werden können.
- Der Standardwert dieser Option ist <constant>FALSE</constant>.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>magicfile</property>: Das Magicfile das verwendet werden soll.
- </para>
- <para>
- Mit dieser Option kann definiert werden welches Magicfile zu verwenden ist. Wenn
- es nicht gesetzt wird, oder leer ist, wird stattdessen die MAGIC Konstante
- verwendet. Diese Option ist seit dem Zend Framework 1.7.1 vorhanden.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Diese Prüfung akzeptiert viele <acronym>MIME</acronym> Typen entweder als
- Komma-getrennter String, oder als Array. Man kan auch die Methoden
- <methodname>setMimeType()</methodname>, <methodname>addMimeType()</methodname>, und
- <methodname>getMimeType()</methodname> verwenden um <acronym>MIME</acronym> Typen zu
- setzen und zu erhalten.
- </para>
- <para>
- Man kann mit der 'magicfile' Option auch die Magicdatei setzen die von Fileinfo
- verwendet werden soll. Zusätzlich gibt es die komfortablen
- <methodname>setMagicFile()</methodname> und <methodname>getMagicFile()</methodname>
- Methoden die das spätere Setzen und Empfangen des Magicfile Parameters erlauben. Diese
- Methoden sind seit dem Zend Framework 1.7.1 vorhanden.
- </para>
- <example id="zend.file.transfer.validators.mimetype.example">
- <title>Verwendung der MimeType Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Begrenzt den MIME Typ aller gegebenen Dateien auf Gif Bilder
- $upload->addValidator('MimeType', 'image/gif');
- // Begrenzt den MIME Typ alle gegebenen Dateien auf Gif und Jpeg Dateien
- $upload->addValidator('MimeType', array('image/gif', 'image/jpeg');
- // Begrenzt den MIME Typ aller Dateien auf die Gruppe image
- $upload->addValidator('MimeType', 'image');
- // Ein anderes magicfile verwenden
- $upload->addValidator('MimeType',
- false,
- array('image',
- 'magicfile' => '/path/to/magicfile.mgx'));
- ]]></programlisting>
- </example>
- <para>
- Das obige Beispiel zeigt das es auch möglich ist den akzeptierten
- <acronym>MIME</acronym> Typ auf eine Gruppe von <acronym>MIME</acronym> Typen zu
- begrenzen. Um alle Bilder zu erlauben kann einfach 'image' als <acronym>MIME</acronym>
- Typ verwendet werden. Das kann für alle Gruppen von <acronym>MIME</acronym> Typen wie
- 'image', 'audio', 'video', 'test', und so weiter gemacht werden.
- </para>
- <note>
- <para>
- Es ist zu beachten das die Verwendung von <acronym>MIME</acronym> Typ-Gruppen alle
- Mitglieder dieser Gruppe akzeptiert, selbst wenn die Anwendung diese nicht
- unterstützt. Wenn man 'image' erlaubt, erhält man auch 'image/xpixmap' oder
- 'image/vasa' was problematisch sein könnte. Wenn man nicht sicher ist ob die eigene
- Anwendung alle Typen unterstützt ist es besser nur definierte
- <acronym>MIME</acronym> Typen zu erlauben statt der kompletten Gruppe.
- </para>
- </note>
- <note>
- <para>
- Diese Komponente verwendet die <classname>FileInfo</classname> Erweiterung wenn Sie
- vorhanden ist. Wenn nicht wird Sie die <methodname>mime_content_type()</methodname>
- Funktion verwenden. Und wenn dieser Funktionsaufruf fehlschlägt wird der
- <acronym>MIME</acronym> Typ verwendet der von <acronym>HTTP</acronym> angegeben
- wurde.
- </para>
- <para>
- Man sollte sich vor möglichen Sicherheitsproblemen vorsehen wenn weder
- <classname>FileInfo</classname> noch <methodname>mime_content_type()</methodname>
- vorhanden sind. Der von <acronym>HTTP</acronym> angegebene <acronym>MIME</acronym>
- Typ ist nicht sicher und kann einfach manipuliert werden.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.notexists">
- <title>NotExists Prüfung</title>
- <para>
- Die <classname>NotExists</classname> Prüfung checkt ob Dateien die angegeben werden
- existieren. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Setzt einen beliebigen Schlüssel oder ein nummerisches
- Array. Checkt ob die Datei im gegebenen Verzeichnis existiert.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Diese Prüfung akzeptiert mehrere Verzeichnisse, entweder als Komma-getrennter String,
- oder als Array. Es können aber auch die Methoden
- <methodname>setDirectory()</methodname>, <methodname>addDirectory()</methodname>, und
- <methodname>getDirectory()</methodname> verwendet werden um die Verzeichnisse zu setzen
- und zu erhalten.
- </para>
- <example id="zend.file.transfer.validators.notexists.example">
- <title>Verwendung der NotExists Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Das temporäre Verzeichnis für die Prüfung hinzufügen
- $upload->addValidator('NotExists', '\temp');
- // Zwei Verzeichnisse durch Verwendung der Array Schreibweise hinzufügen
- $upload->addValidator('NotExists',
- array('\home\images',
- '\home\uploads')
- );
- ]]></programlisting>
- </example>
- <note>
- <para>
- Beachte das diese Prüfung checkt ob die Datei in allen angegebenen Verzeichnissen
- nicht existiert. Die Prüfung schlägt fehl, wenn die Datei in irgendeinem der
- angegebenen Verzeichnisse existiert.
- </para>
- </note>
- </sect2>
- <sect2 id="zend.file.transfer.validators.sha1">
- <title>Sha1 Prüfung</title>
- <para>
- Die <classname>Sha1</classname> Prüfung checkt den Inhalt einer übertragenen Datei durch
- hashen. Diese Prüfung verwendet die Hash Erweiterung von <acronym>PHP</acronym> mit dem
- Sha1 Algorithmus. Sie unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>*</property>: Nimmt einen beliebigen Schlüssel oder ein nummerisches
- Array.
- </para>
- <para>
- Man kann mehrere Hashes setzen indem Sie als Array übergeben werden. Jeder Datei
- wird geprüft und die Prüfung schlägt nur dann fehl wenn alle Dateien
- fehlschlagen.
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.file.transfer.validators.sha1.example">
- <title>Verwenden der Sha1 Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Prüft ob der Inhalt der hochgeladenen Datei den angegebenen Hash hat
- $upload->addValidator('Sha1', false, '3b3652f336522365223');
- // Begrenzt diese Prüfung auf zwei unterschiedliche Hashes
- $upload->addValidator('Sha1',
- false, array('3b3652f336522365223',
- 'eb3365f3365ddc65365'));
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.file.transfer.validators.size">
- <title>Size Prüfung</title>
- <para>
- Die <classname>Size</classname> Prüfung checkt die Größe von einzelnen Dateien. Sie
- unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para><property>min</property>: Setzt die minimale Dateigröße.</para>
- </listitem>
- <listitem>
- <para><property>max</property>: Setzt die maximale Dateigröße.</para>
- </listitem>
- <listitem>
- <para>
- <property>bytestring</property>: Definiert ob ein Fehler mit einer
- benutzerfreundlichen Nummer zurückgegeben wird, oder mit der reinen Dateigröße.
- </para>
- <para>
- Mit dieser Option kann definiert werden ob der Benutzer '10864' oder '10MB'
- erhält. Der Standardwert ist <constant>TRUE</constant> was '10MB' zurückgibt.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Man kann diese Prüfung auch nur mit einem String initialisieren, der dann verwendet
- wird um die <property>max</property> Option zu setzen. Man kann auch die Methoden
- <methodname>setMin()</methodname> und <methodname>setMax()</methodname> verwenden um
- beide Optionen nach der Instanziierung setzen, zusammen mit
- <methodname>getMin()</methodname> und <methodname>getMax()</methodname> um die Werte zu
- setzen die vorher gesetzt wurden.
- </para>
- <para>
- Die Größe selbst wird auch in der SI Schreibweise akzeptiert wie Sie von den meisten
- Betriebsystemen verwendet wird. Statt <emphasis>20000 bytes</emphasis> kann man auch
- <emphasis>20kB</emphasis> angeben. Alle Einheiten werden konvertiert wobei 1024 als
- Basiswert verwendet wird. Die folgenden Einheiten werden akzeptiert:
- <emphasis>kB</emphasis>, <emphasis>MB</emphasis>, <emphasis>GB</emphasis>,
- <emphasis>TB</emphasis>, <emphasis>PB</emphasis> und <emphasis>EB</emphasis>. Beachte
- das 1kB identisch mit 1024 Bytes ist, 1MB identisch mit 1024kB ist, und so weiter.
- </para>
- <example id="zend.file.transfer.validators.size.example">
- <title>Verwendung der Size Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Limitiert die Größe einer Datei auf 40000 Bytes
- $upload->addValidator('Size', false, 40000);
- // Limitiert die Größe der angegebenen Datei auf maximal 4MB und minimal 10kB
- // Gibt auch im Fall eines Fehlers die reine Zahl statt einer
- // Benutzerfreundlichen zurück
- $upload->addValidator('Size',
- false,
- array('min' => '10kB',
- 'max' => '4MB',
- 'bytestring' => false));
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.file.transfer.validators.wordcount">
- <title>WordCount Prüfung</title>
- <para>
- Die <classname>WordCount</classname> Prüfung checkt die Anzahl von Wörtern in
- angegebenen Dateien. Sie Unterstützt die folgenden Optionen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <property>min</property>: Setzt die mindeste Anzahl an Wörtern die gefunden
- werden soll.
- </para>
- </listitem>
- <listitem>
- <para>
- <property>max</property>: Setzt die maximale Anzahl an Wörtern die gefunden
- werden soll.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Wenn man diese Prüfung mit einem String oder Integer initiiert, wird der Wert als
- <property>max</property> verwendet. Oder man verwendet die
- <methodname>setMin()</methodname> und <methodname>setMax()</methodname> Methoden um
- beide Optionen im Nachhinein zu Setzen und <methodname>getMin()</methodname> sowie
- <methodname>getMax()</methodname> um die aktuell gesetzten Werte zu erhalten.
- </para>
- <example id="zend.file.transfer.validators.wordcount.example">
- <title>Verwendung der WordCount Prüfung</title>
- <programlisting language="php"><![CDATA[
- $upload = new Zend_File_Transfer();
- // Begrenzt die Anzahl der Wörter in Dateien auf maximal 2000
- $upload->addValidator('WordCount', false, 2000);
- // Begrenzt die Anzahl der Wörter in Dateien auf maximal 5000
- // und mindestens 1000 Wörter
- $upload->addValidator('WordCount', false, array('min' => 1000, 'max' => 5000));
- ]]></programlisting>
- </example>
- </sect2>
- </sect1>
|