]> git.p6c8.net - form-email.git/blob - readme.htm
Zwei Tippfehler korrigiert
[form-email.git] / readme.htm
1 <?xml version="1.0" encoding="iso-8859-1" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head>
7 <title>ReadMe f&uuml;r Form E-Mail&nbsp;3.5</title>
8 <meta name="author" content="Patrick Canterino" />
9 <style type="text/css">
10 <!--
11 .upanddown
12 {
13 font-size: 8pt;
14 background-color: #E8E8E8;
15 padding: 3px;
16 margin-left: 0.5cm;
17 margin-right: 0.5cm;
18 white-space: nowrap;
19 }
20 a:link, a:visited, a:active, a:focus
21 {
22 font-weight: normal;
23 text-decoration: none;
24 color: #0000FF;
25 }
26 a:link:hover, a:visited:hover, a:active:hover, a:focus:hover
27 {
28 font-weight: normal;
29 text-decoration: underline;
30 color: #0000FF;
31 }
32 body
33 {
34 font-family: Verdana, Tahoma, Arial, Helvetica, sans-serif;
35 font-size: 10pt;
36 color: #000000;
37 background-color: #FFFFFF;
38 }
39 code
40 {
41 font-family: 'Courier New', Courier, monospace;
42 font-size: 10pt;
43 color: #0000B0;
44 }
45 h1
46 {
47 font-size: 18pt;
48 font-weight: bold;
49 }
50 h2
51 {
52 font-size: 13pt;
53 font-weight: bold;
54 padding-left: 0.2cm;
55 padding-right: 0.2cm;
56 }
57 li
58 {
59 margin-top: 3px;
60 }
61 p
62 {
63 padding-left: 0.5cm;
64 padding-right: 0.5cm;
65 }
66 pre
67 {
68 padding-left: 0.7cm;
69 padding-right: 0.7cm;
70 font-family: 'Courier New', Courier, monospace;
71 font-size: 10pt;
72 color: #0000B0;
73 }
74 table
75 {
76 font-size: 10pt;
77 margin-left: 0.5cm;
78 margin-right: 0.5cm;
79 }
80 td
81 {
82 vertical-align: top;
83 }
84 ul
85 {
86 padding-left: 0.5cm;
87 padding-right: 0.5cm;
88 margin-left: 1cm;
89 }
90 -->
91 </style>
92 <base target="_self" />
93 </head>
94 <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#0000FF" alink="#0000FF">
95
96 <h1><a name="top" id="top">ReadMe f&uuml;r Form E-Mail&nbsp;3.5</a></h1>
97
98 <p>
99 <a href="#wasistfeml">Was ist <i>Form E-Mail</i>?</a><br />
100 <a href="#einrichten">Einrichten von <i>Form E-Mail</i></a><br />
101 <a href="#einstellungen">Einstellungen</a><br />
102 <a href="#individuell">Individuelle Formularfelder</a><br />
103 <a href="#templates">Templates anpassen</a>
104 </p>
105
106 <h2><a name="wasistfeml" id="wasistfeml">Was ist <i>Form E-Mail</i>?</a></h2>
107
108 <p><i>Form E-Mail</i> ist ein in PHP programmierter Form-Mailer, der speziell darauf ausgerichtet ist, ein Kontaktformular zu verarbeiten. Unter Kontaktformular verstehe ich ein Formular mit Feldern f&uuml;r Name und E-Mail-Adresse des Absenders, eines f&uuml;r den Betreff und ein weiteres f&uuml;r den Text der Mail.<br />
109 Auf diese Weise m&uuml;ssen Sie zum Beispiel nicht &uuml;berall auf Ihrer Homepage Ihre E-Mail-Adresse angeben und sie so nicht der Gefahr aussetzen, ein Opfer von Spammern zu werden.</p>
110
111 <p class="upanddown"><a href="#top">Nach oben</a></p>
112
113 <h2><a name="einrichten" id="einrichten">Einrichten von <i>Form E-Mail</i></a></h2>
114
115 <p>Sie brauchen als erstes ein HTML-Formular. Dieses muss mindestens diese Felder enthalten:</p>
116
117 <table border="1">
118 <tr>
119 <td><b>Feldname</b></td>
120 <td><b>Zweck</b></td>
121 </tr>
122 <tr>
123 <td><i>email</i></td>
124 <td>E-Mail-Adresse des Absenders</td>
125 </tr>
126 <tr>
127 <td><i>name</i></td>
128 <td>Name des Absenders</td>
129 </tr>
130 <tr>
131 <td><i>text</i></td>
132 <td>Text der E-Mail</td>
133 </tr>
134 </table>
135
136 <p>Sie k&ouml;nnen au&szlig;erdem noch ein Feld namens <i>subject</i> anlegen. Hier kann ein Betreff f&uuml;r die Mail eingegeben werden. Wenn Sie auf dieses Feld verzichten, erhalten die E-Mails automatisch den in <code>$default_subject</code> definierten Betreff (s.u.).<br />
137 Weiterhin ist noch ein Feld namens <i>recipient</i> m&ouml;glich. Dieses Feld enth&auml;lt einen Alias-Empf&auml;nger. Wie das funktioniert, k&ouml;nnen Sie bei der Beschreibung der Einstellung <code>$aliases</code> lesen.</p>
138
139 <p>Zus&auml;tzlich k&ouml;nnen Sie die vorgegebenen Formularfelder mit <a href="#individuell">individuellen</a> erg&auml;nzen.</p>
140
141 <p>Wenn Sie Captchas (zuf&auml;llige Zeichenfolgen, die der Benutzer vor dem Absenden des Formulars eingeben muss, um Spambots auszuschlie&szlig;en) benutzen wollen (siehe unten), m&uuml;ssen Sie im Formular die Datei <i>captcha.php</i> als Bild einbinden (<code>&lt;img&gt;</code>-Tag). Bedenken Sie, dass Sie diese Datei auch in den <a href="#templates">Templates</a> einbinden m&uuml;ssen!</p>
142
143 <p>Das Formular muss dann noch mit <tt>POST</tt> die Daten an die Datei <i>mailer.php</i> (oder wie Sie die Datei genannt haben) senden.</p>
144
145 <p>Ein beispielhaftes Formular finden Sie in der Datei <a href="formular.htm" target="_blank"><i>formular.htm</i></a>.</p>
146
147 <p>Die Adresse, an der die mit <i>Form E-Mail</i> erzeugte Mail gesendet werden soll, wird in der Datei <i>config.php</i> festgelegt. &Ouml;ffnen Sie die Datei mit einem beliebigen Editor und suchen Sie nach dieser Zeile:</p>
148
149 <p><code>$mailto = '';</code></p>
150
151 <p>Geben Sie zwischen den einfachen Anf&uuml;hrungszeichen die Adresse an, an die die Mail gehen soll. Wenn die Mail an mehrere Empf&auml;nger gehen soll, so trennen Sie die einzelnen E-Mail-Adressen ganz einfach durch Semikolons.</p>
152
153 <p>Sie haben nun <i>Form E-Mail</i> f&uuml;r die Standard-Nutzung konfiguriert. <i>Form E-Mail</i> l&auml;sst sich jedoch noch feiner konfigurieren. Mehr dazu finden Sie in den n&auml;chsten Abschnitten.</p>
154
155 <p class="upanddown"><a href="#top">Nach oben</a></p>
156
157 <h2><a name="einstellungen" id="einstellungen">Einstellungen</a></h2>
158
159 <p><b>Empf&auml;nger</b></p>
160
161 <table border="1">
162 <tr>
163 <td><b>Einstellung</b></td>
164 <td><b>Beschreibung</b></td>
165 </tr>
166 <tr>
167 <td><code>$mailto</code></td>
168 <td>siehe oben</td>
169 </tr>
170 <tr>
171 <td><code>$aliases</code></td>
172 <td>Hier k&ouml;nnen Sie eine Alias-Namen f&uuml;r Empf&auml;nger angeben. Soll einem Alias mehrere Empf&auml;nger zugeordnet werden, gilt dasselbe wie f&uuml;r <code>$mailto</code>.<br />
173 Die Aliase werden mit Hilfe eines assoziativen PHP-Arrays definiert. Da es wohl einige gibt, die von so etwas keine Ahnung haben und ich es nicht gut erkl&auml;ren kann, hier ein Beispiel:<br /><br />
174 <code>array('info' =&gt; 'info@example.com', 'support' =&gt; 'support@example.com',<br />
175 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'alle' =&gt; 'info@example.com; support@example.com')</code><br /><br />
176 Sie m&uuml;ssen nun in Ihrem Formular ein Feld namens <i>recipient</i> einf&uuml;gen, &uuml;ber das Sie den Alias-Empf&auml;nger angeben (beispielsweise k&ouml;nnen Sie hier eine <code>&lt;select&gt;</code>-Box verwenden, &uuml;ber das der Benutzer den Empf&auml;nger ausw&auml;hlen kann).</td>
177 </tr>
178 </table>
179
180 <p><b>Allgemeines</b></p>
181
182 <table border="1">
183 <tr>
184 <td><b>Einstellung</b></td>
185 <td><b>Beschreibung</b></td>
186 </tr>
187 <tr>
188 <td><code>$default_subject</code></td>
189 <td>Der Standard-Betreff. Dieser wird verwendet, wenn der Benutzer keinen Betreff f&uuml;r seine Mail angegeben hat.</td>
190 </tr>
191 <tr>
192 <td><code>$friendly_sender</code></td>
193 <td>Wenn 1, wird die E-Mail-Adresse des Autors der Mail als Absender angegeben. Bei 0 erscheint das, was der Server als Absender eintr&auml;gt und die E-Mail-Adresse des Absenders wird in den <code>Reply-To</code>-Header eingetragen, so dass beim Antworten auf die E-Mail schon der richtige Empf&auml;nger eingetragen wird. Wenn 2, wird zus&auml;tzlich noch der Name als Absender angegeben.<br />
194 Bitte setzen Sie diese Option nur auf 0, wenn es wirklich sein muss!</td>
195 </tr>
196 <tr>
197 <td><code>$line_break</code></td>
198 <td>Legt fest, ab wievielen Zeichen ein automatischer Zeilenumbruch durchgef&uuml;hrt werden soll (0 f&uuml;r keine Zeilenumbr&uuml;che).</td>
199 </tr>
200 <tr>
201 <td><code>$add_header</code></td>
202 <td>Legt beim Wert&nbsp;1 fest, ob <i>Form E-Mail</i> Informationen zur Zeichencodierung, MIME-Version usw. in den Mail-Header schreiben soll.<br />
203 Bitte setzen Sie diese Option nur auf 0, wenn es wirklich sein muss!</td>
204 </tr>
205 <tr>
206 <td><code>$timeformat</code></td>
207 <td>Legt das Aussehen der Zeitangaben der Mail fest. Was hier alles m&ouml;glich ist, finden Sie im PHP-Handbuch bei der <a href="http://www.php.net/manual/de/function.strftime.php">Beschreibung zu <code>strftime()</code></a>.<br />
208 Beachten Sie bitte, dass bei neueren PHP-Versionen, trotz deutscher Spracheinstellungen, die Namen von Wochentagen und Monaten englisch dargestellt werden. Es handelt sich hierbei aber um ein allgemeines Problem.</td>
209 </tr>
210 <tr>
211 <td><code>$return_url</code></td>
212 <td>Geben Sie hier die URL einer Seite an, auf die nach dem erfolgreichen Versenden einer Mail weitergeleitet werden soll. Wenn Sie hier nichts angeben, wird eine per Template formatierte Seite angezeigt.<br />
213 <b style="color:#FF0000">Achtung:</b> Benutzen Sie hier nach M&ouml;glichkeit absolute URLs! Ich habe zwar etwas eingebaut, was hier relative URLs in absolute umwandelt, um dem HTTP-Standard gerecht zu werden, aber ich garantiere nicht, dass diese Umwandlung immer einwandfrei funktioniert. Seien Sie bei relativen URLs also sehr vorsichtig und verwenden Sie im Fehlerfall absolute.</td>
214 </tr>
215 <tr>
216 <td><code>$allowed_envs</code></td>
217 <td>Geben Sie hier die Server-Umgebungsvariablen, die im Mailtext angezeigt werden d&uuml;rfen, als normales PHP-Array an (siehe auch die Erl&auml;uterungen zur Template-Datei <i>mail.txt</i>).<br />
218 Beispiel: <code>array('HTTP_USER_AGENT','REMOTE_ADDR')</code></td>
219 </tr>
220 <tr>
221 <td><code>$charset</code></td>
222 <td>Geben Sie hier den Zeichensatz, der f&uuml;r die E-Mail verwendet werden soll, an.</td>
223 </tr>
224 <tr>
225 <td><code>$timezone</code></td>
226 <td>Geben Sie hier Ihre Zeitzone an (dies ist bei neueren PHP-Versionen n&ouml;tig, da ansonsten eine Fehlermeldung auftreten kann).</td>
227 </tr>
228 </table>
229
230 <p><b>L&auml;ngen&uuml;berpr&uuml;fungen</b></p>
231
232 <table border="1">
233 <tr>
234 <td><b>Einstellung</b></td>
235 <td><b>Beschreibung</b></td>
236 </tr>
237 <tr>
238 <td><code>$name_min</code></td>
239 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Name mindestens sein muss (0 =&nbsp;beliebig lang)</td>
240 </tr>
241 <tr>
242 <td><code>$subject_min</code></td>
243 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Betreff mindestens sein muss (0 =&nbsp;beliebig lang)</td>
244 </tr>
245 <tr>
246 <td><code>$text_min</code></td>
247 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Text mindestens sein muss (0 =&nbsp;beliebig lang)</td>
248 </tr>
249 <tr>
250 <td><code>$name_max</code></td>
251 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Name h&ouml;chstens sein darf (0 =&nbsp;beliebig lang)</td>
252 </tr>
253 <tr>
254 <td><code>$subject_max</code></td>
255 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Betreff h&ouml;chstens sein darf (0 =&nbsp;beliebig lang)</td>
256 </tr>
257 <tr>
258 <td><code>$text_max</code></td>
259 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Text h&ouml;chstens sein darf (0 =&nbsp;beliebig lang)</td>
260 </tr>
261 </table>
262
263 <p><b>Sicherheit</b></p>
264
265 <table border="1">
266 <tr>
267 <td><b>Einstellung</b></td>
268 <td><b>Beschreibung</b></td>
269 </tr>
270 <tr>
271 <td><code>$check_referer</code></td>
272 <td>Wenn &gt; 0, &uuml;berpr&uuml;ft <i>Form E-Mail</i> die Host-Angabe im HTTP-Referer. Das ist n&uuml;tzlich, wenn Sie verhindern wollen, dass irgendjemand Ihr Script f&uuml;r sich ausnutzt.</td>
273 </tr>
274 <tr>
275 <td><code>$referer_ok</code></td>
276 <td>Geben Sie hier die Hosts an, von denen <i>Form E-Mail</i> aus aufgerufen werden darf (zum Beispiel <i>www.example.com</i>). Trennen Sie mehrere Hosts durch Semikolons.<br />
277 <b style="color:#FF0000">Achtung:</b> Mit einer Referer-Pr&uuml;fung kann man zwar unbedarfte Anwender abschrecken, aber wirklich zuverl&auml;ssig ist diese Methode nicht, da sich der Referer f&auml;lschen l&auml;sst oder auch komplett fehlen kann.</td>
278 </tr>
279 </table>
280
281 <p><b>Mails speichern</b></p>
282
283 <table border="1">
284 <tr>
285 <td><b>Einstellung</b></td>
286 <td><b>Beschreibung</b></td>
287 </tr>
288 <tr>
289 <td><code>$store_mails</code></td>
290 <td>Wenn &gt; 0, speichert <i>Form E-Mail</i> die Mails nach dem Versenden noch auf dem Server als Datei ab.</td>
291 </tr>
292 <tr>
293 <td><code>$store_mails_dir</code></td>
294 <td>Geben Sie hier das Verzeichnis an, in dem <i>Form E-Mail</i> die Mails speichern soll (Standard ist <i>stored_mails</i>). Die Dateinamen bestehen aus dem Pr&auml;fix, dem Absender, dem Betreff, der Uhrzeit und einem eindeutigen Wert.</td>
295 </tr>
296 <tr>
297 <td><code>$store_mails_prefix</code></td>
298 <td>Geben Sie hier einen Pr&auml;fix an, der den Dateinamen der gespeicherten Mails vorangestellt werden soll (Standard ist <i>feml_</i>).</td>
299 </tr>
300 <tr>
301 <td><code>$store_mails_max</code></td>
302 <td>Geben Sie hier die Zahl der Mails an, die maximal aufbewahrt werden sollen. Wenn Sie hier 0 angeben, werden keine Mails gel&ouml;scht. Die Mail-Dateien werden anhand des mit <code>$store_mails_prefix</code> definierten Pr&auml;fixes erkannt.</td>
303 </tr>
304 </table>
305
306 <p><b>Captchas</b></p>
307
308 <table border="1">
309 <tr>
310 <td><b>Einstellung</b></td>
311 <td><b>Beschreibung</b></td>
312 </tr>
313 <tr>
314 <td><code>$captcha_enable</code></td>
315 <td>Wenn &gt; 0, wird die Captcha-&Uuml;berpr&uuml;fung aktiviert.</td>
316 </tr>
317 <tr>
318 <td><code>$captcha_case</code></td>
319 <td>Wenn 1, wird bei Captchas auf Gro&szlig;- und Kleinschreibung geachtet. Beachten Sie bitte, dass bei deaktiverter Einstellung im Captcha selbst immer noch Gro&szlig;- und Kleinbuchstaben angezeigt werden - lediglich bei der Auswertung wird die Gro&szlig;- und Kleinschreibung nicht ber&uuml;cksichtigt.</td>
320 </tr>
321 <tr>
322 <td><code>$captcha_max</code></td>
323 <td>Wenn &gt; 0, ist nur eine bestimmte Anzahl von Fehlversuchen bei der Eingabe des Captcha-Texts m&ouml;glich.</td>
324 </tr>
325 <tr>
326 <td><code>$captcha_length</code></td>
327 <td>Geben Sie hier die L&auml;nge des Captcha-Textes an.</td>
328 </tr>
329 <tr>
330 <td><code>$captcha_width</code></td>
331 <td>Geben Sie hier die Breite des Captcha-Bilds an (in Pixeln). Dieser Wert wird &uuml;berschrieben, wenn <code>$captcha_image_bg</code> gesetzt ist.</td>
332 </tr>
333 <tr>
334 <td><code>$captcha_height</code></td>
335 <td>Geben Sie hier die H&ouml;he des Captcha-Bilds an (in Pixeln). Dieser Wert wird &uuml;berschrieben, wenn <code>$captcha_image_bg</code> gesetzt ist.</td>
336 </tr>
337 <tr>
338 <td><code>$captcha_angle</code></td>
339 <td>Geben Sie hier den Winkel-Bereich an, in dem der Captcha-Text ausgerichtet werden soll. Es wird ein zuf&auml;lliger Wert aus diesem Bereich ausgew&auml;hlt.</td>
340 </tr>
341 <tr>
342 <td><code>$captcha_x</code></td>
343 <td>Geben Sie hier den Bereich an, in dem sich der horizontale Startpunkt des Captcha-Texts befinden soll. Es wird ein zuf&auml;lliger Wert aus diesem Bereich ausgew&auml;hlt.</td>
344 </tr>
345 <tr>
346 <td><code>$captcha_y</code></td>
347 <td>Geben Sie hier den Bereich an, in dem sich der vertikale Startpunkt des Captcha-Texts befinden soll. Es wird ein zuf&auml;lliger Wert aus diesem Bereich ausgew&auml;hlt.</td>
348 </tr>
349 <tr>
350 <td><code>$captcha_possible</code></td>
351 <td>Geben Sie hier die m&ouml;glichen Zeichen des Captcha-Texts an. Standardm&auml;&szlig;ig vorgegeben ist <i>'ABCDEFGHJKLMNPRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'</i>.</td>
352 </tr>
353 <tr>
354 <td><code>$captcha_font</code></td>
355 <td>Schriftart f&uuml;r den Captcha-Text. Geben Sie hier den Pfad zu einer <i>.ttf</i>-Datei an. Standardm&auml;&szlig;ig ist hier die mitgelieferte <i>XFILES.TTF</i> angegeben.</td>
356 </tr>
357 <tr>
358 <td><code>$captcha_font_size</code></td>
359 <td>Geben Sie hier die Schriftgr&ouml;&szlig;e des Captcha-Textes an.</td>
360 </tr>
361 <tr>
362 <td><code>$captcha_lines</code></td>
363 <td>Wenn &gt; 0, werden zuf&auml;llige St&ouml;rlinien in das Captcha-Bild eingef&uuml;gt.</td>
364 </tr>
365 <tr>
366 <td><code>$captcha_color_bg</code></td>
367 <td>Geben Sie hier die RGB-Werte (in Form eines PHP-Arrays) der Hintergrundfarbe des Captcha-Bilds an.</td>
368 </tr>
369 <tr>
370 <td><code>$captcha_color_text</code></td>
371 <td>Geben Sie hier die RGB-Werte (in Form eines PHP-Arrays) der Textfarbe des Captcha-Bilds an.</td>
372 </tr>
373 <tr>
374 <td><code>$captcha_image_bg</code></td>
375 <td>Hier k&ouml;nnen Sie, wenn Sie m&ouml;chten, ein Hintergrundbild f&uuml;r das Captcha-Bild angeben. Diese Option &uuml;berschreibt <code>$captcha_length</code> und <code>$captcha_height</code> mit den Angaben aus dem Bild.</td>
376 </tr>
377 </table>
378
379 <p><b>Fehlermeldungen</b></p>
380
381 <table border="1">
382 <tr>
383 <td><b>Einstellung</b></td>
384 <td><b>Beschreibung</b></td>
385 </tr>
386 <tr>
387 <td><code>$err_nothing</code></td>
388 <td>Der Benutzer hat &uuml;berhaupt nichts eingegeben</td>
389 </tr>
390 <tr>
391 <td><code>$err_no_name</code></td>
392 <td>Der Benutzer hat keinen Namen angegeben</td>
393 </tr>
394 <tr>
395 <td><code>$err_no_email</code></td>
396 <td>Der Benutzer hat keine E-Mail-Adresse angegeben</td>
397 </tr>
398 <tr>
399 <td><code>$err_invalid_email</code></td>
400 <td>Der Benutzer hat eine von der Syntax her ung&uuml;ltige E-Mail-Adresse angegeben</td>
401 </tr>
402 <tr>
403 <td><code>$err_no_text</code></td>
404 <td>Der Benutzer hat keinen Text angegeben</td>
405 </tr>
406 <tr>
407 <td><code>$err_name_short</code></td>
408 <td>Der vom Benutzer eingegebene Name ist nicht lang genug</td>
409 </tr>
410 <tr>
411 <td><code>$err_subject_short</code></td>
412 <td>Der vom Benutzer eingegebene Betreff ist nicht lang genug</td>
413 </tr>
414 <tr>
415 <td><code>$err_text_short</code></td>
416 <td>Der vom Benutzer eingegebene Text ist nicht lang genug</td>
417 </tr>
418 <tr>
419 <td><code>$err_name_long</code></td>
420 <td>Der vom Benutzer eingegebene Name ist nicht zu lang</td>
421 </tr>
422 <tr>
423 <td><code>$err_subject_long</code></td>
424 <td>Der vom Benutzer eingegebene Betreff ist zu lang</td>
425 </tr>
426 <tr>
427 <td><code>$err_text_long</code></td>
428 <td>Der vom Benutzer eingegebene Text ist zu lang</td>
429 </tr>
430 <tr>
431 <td><code>$err_send_error</code></td>
432 <td>Die Mail konnte nicht versendet werden</td>
433 </tr>
434 <tr>
435 <td><code>$err_store_error</code></td>
436 <td>Die Mail konnte nicht gespeichert werden</td>
437 </tr>
438 <tr>
439 <td><code>$err_only_post</code></td>
440 <td><i>Form E-Mail</i> darf nur mit <tt>POST</tt> aufgerufen werden</td>
441 </tr>
442 <tr>
443 <td><code>$err_referer_not_ok</code></td>
444 <td>Der im HTTP-Referer angegebene Host darf keine Mails &uuml;ber das Script senden</td>
445 </tr>
446 <tr>
447 <td><code>$err_indiv_errmsg_miss</code></td>
448 <td>Eine Fehlermeldung f&uuml;r die individuellen Formularfelder wurde nicht definiert (die Variable <code>{INDIVIDUAL}</code> gibt das Formularfeld an, <code>{ERRMSG}</code> die fehlende Fehlermeldung).</td>
449 </tr>
450 <tr>
451 <td><code>$err_captcha_incorrect</code></td>
452 <td>Der vom Benutzer eingegebene Captcha-Code ist nicht korrekt</td>
453 </tr>
454 <tr>
455 <td><code>$err_captcha_max</code></td>
456 <td>Der Benutzer hat den Captcha-Code zu oft falsch eingegeben</td>
457 </tr>
458 <tr>
459 <td><code>$err_captcha_disabled</code></td>
460 <td>Wird angezeigt, wenn <i>captcha.php</i> aufgerufen wird und Captchas eigentlich deaktiviert sind.</td>
461 </tr>
462 <tr>
463 <td><code>$err_captcha_session_failure</code></td>
464 <td>Wird angezeigt, wenn keine Session-Variablen gefunden werden konnten.</td>
465 </tr>
466 </table>
467
468 <p><b>Pfade zu Templates</b></p>
469
470 <table border="1">
471 <tr>
472 <td><b>Einstellung</b></td>
473 <td><b>Beschreibung</b></td>
474 </tr>
475 <tr>
476 <td><code>$tpl_mail</code></td>
477 <td>Template f&uuml;r die Mail</td>
478 </tr>
479 <tr>
480 <td><code>$tpl_sent</code></td>
481 <td>Die Mail wurde erfolgreich versendet</td>
482 </tr>
483 <tr>
484 <td><code>$tpl_user_error</code></td>
485 <td>Der Benutzer hat etwas falsch gemacht</td>
486 </tr>
487 <tr>
488 <td><code>$tpl_fatal</code></td>
489 <td>Es ist ein Fehler aufgetreten, den der Benutzer nicht mehr beheben kann</td>
490 </tr>
491 </table>
492
493 <p class="upanddown"><a href="#top">Nach oben</a></p>
494
495 <h2><a name="individuell" id="individuell">Individuelle Formularfelder</a></h2>
496
497 <p>Seit Version&nbsp;3.5 ist es m&ouml;glich, in <i>Form E-Mail</i> zus&auml;tzlich zu den vorgegebenen Formularfeldern f&uuml;r Name, E-Mail-Adresse, Betreff und Text eigene Formularfelder zu definieren, die dann von <i>Form E-Mail</i> verarbeitet und in die Mail eingef&uuml;gt werden.<br />
498 Wie <i>Form E-Mail</i> diese Formularfelder behandelt, wird &uuml;ber verschiedene Optionen gesteuert, so ist es m&ouml;glich die L&auml;nge des Inhalts zu pr&uuml;fen, den Inhalt gegen einen regul&auml;ren Ausdruck und gegen eine frei definierbare PHP-Funktion zu pr&uuml;fen und am Ende den Inhalt noch durch eine PHP-Funktion aufzubereiten.</p>
499
500 <p>Die Konfiguration der individuellen Formularfelder geschieht &uuml;ber das PHP-Array <code>$user_fields</code> in <i>config.php</i>. Sie ben&ouml;tigen zun&auml;chst den Namen des Formularfeldes, also das, was Sie im HTML-Formular als Namen angeben. Nehmen wir an, Sie haben folgenden HTML-Code f&uuml;r ein Formularfeld:</p>
501
502 <p><code>&lt;input type=&quot;text&quot; name=&quot;beruf&quot; /&gt;</code></p>
503
504 <p>Der Name des Feldes lautet also <b>beruf</b>. Dies ben&ouml;tigen wir f&uuml;r die weitere Definition.</p>
505
506 <p>Sie k&ouml;nnen nun verschiedene Pr&uuml;fwerte definieren, mit denen <i>Form E-Mail</i> den Inhalt des Formularfeldes &uuml;berpr&uuml;ft und ggf. eine Fehlermeldung ausgibt. Diese werden in der folgenden Tabelle erl&auml;utert (die Tabelle geht der Einfachheit halber weiterhin vom Formularfeld <b>beruf</b> aus - Sie m&uuml;ssen dies nat&uuml;rlich anpassen!):</p>
507
508 <table border="1">
509 <tr>
510 <td><b>Einstellung</b></td>
511 <td><b>Beschreibung</b></td>
512 </tr>
513 <tr>
514 <td><code>$user_fields['beruf']['min']</code></td>
515 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Wert mindestens sein muss</td>
516 </tr>
517 <tr>
518 <td><code>$user_fields['beruf']['max']</code></td>
519 <td>Geben Sie hier an, wie lang der vom Benutzer eingebene Wert h&ouml;chstens sein darf</td>
520 </tr>
521 <tr>
522 <td><code>$user_fields['beruf']['required']</code></td>
523 <td>Geben Sie hier den Wert 1 an, wenn das Formularfeld ausgef&uuml;llt sein muss. Wenn Sie hier eine 0 oder die Option weglassen, ist das Feld optional.</td>
524 </tr>
525 <tr>
526 <td><code>$user_fields['beruf']['regex']</code></td>
527 <td>Geben Sie hier einen <a href="http://de.php.net/manual/de/book.pcre.php">Perl-kompatiblen regul&auml;ren Ausdruck</a> zur Pr&uuml;fung des Wertes ein. Der Ausdruck wird direkt an <a href="http://de.php.net/manual/de/function.preg-match.php"><code>preg_match()</code></a> weitergegeben.</td>
528 </tr>
529 <tr>
530 <td><code>$user_fields['beruf']['check']</code></td>
531 <td>Geben Sie hier eine selbst definierte PHP-Funktion (als Zeichenkette) an, durch die der Wert gepr&uuml;ft werden soll. Das erste und einzige Argument der Funktion ist der Inhalt des Formularfeldes. Die Funktion muss <code>true</code> zur&uuml;ckgeben, wenn der Wert in Ordnung ist, ansonsten <code>false</code>.</td>
532 </tr>
533 </table>
534
535 <p>Weiterhin m&uuml;ssen Sie noch diverse Fehlermeldungen definieren (als Unter-Array). Das Definieren dieser Fehlermeldungen ist Pflicht (Sie m&uuml;ssen jedoch nur die Fehlermeldungen zu den Dingen definieren, die auch wirklich gepr&uuml;ft werden).</p>
536
537 <table border="1">
538 <tr>
539 <td><b>Einstellung</b></td>
540 <td><b>Beschreibung</b></td>
541 </tr>
542 <tr>
543 <td><code>$user_fields['beruf']['errors']['too_short']</code></td>
544 <td>Der vom Benutzer eingegebene Wert ist nicht lang genug</td>
545 </tr>
546 <tr>
547 <td><code>$user_fields['beruf']['errors']['too_long']</code></td>
548 <td>Der vom Benutzer eingegebene Wert ist zu lang</td>
549 </tr>
550 <tr>
551 <td><code>$user_fields['beruf']['errors']['not_set']</code></td>
552 <td>Das Formularfeld ist ein Pflichtfeld und es wurde nicht ausgef&uuml;llt.</td>
553 </tr>
554 <tr>
555 <td><code>$user_fields['beruf']['errors']['match_fail']</code></td>
556 <td>Die &Uuml;berpr&uuml;fung des Wertes durch den regul&auml;ren Ausdruck ist fehlgeschlagen.</td>
557 </tr>
558 <tr>
559 <td><code>$user_fields['beruf']['errors']['check_fail']</code></td>
560 <td>Die &Uuml;berpr&uuml;fung des Wertes durch die PHP-Funktion ist fehlgeschlagen.</td>
561 </tr>
562 </table>
563
564 <p>Zus&auml;tzlich sind noch die folgenden Einstellungen m&ouml;glich:</p>
565
566 <table border="1">
567 <tr>
568 <td><b>Einstellung</b></td>
569 <td><b>Beschreibung</b></td>
570 </tr>
571 <tr>
572 <td><code>$user_fields['beruf']['prepare']</code></td>
573 <td>Geben Sie hier eine selbst definierte PHP-Funktion (als Zeichenkette) an, die den Wert des Formularfeldes nach den Pr&uuml;fungen noch ver&auml;ndern (bspw. kann man hier Funktionen angeben, die alle Buchstaben in Gro&szlig;buchstaben umwandelt). Das erste und einzige Argument der Funktion ist der Inhalt des Formularfeldes. Die Funktion muss den bearbeiteten Wert zur&uuml;ckgeben.</td>
574 </tr>
575 <tr>
576 <td><code>$user_fields['beruf']['tpl_var']</code></td>
577 <td>Geben Sie hier die <a href="#templates">Template-Variable</a> an, die in den Templates durch den Wert des Formularfeldes ersetzt werden soll. Wenn Sie hier nichts angeben, wird ein Standardwert verwendet (im Fall des Formularfeldes <b>beruf</b> w&auml;re das dann <code>USER_beruf</code>).</td>
578 </tr>
579 </table>
580
581 <p>Sie m&uuml;ssen die individuellen Formularfelder nun noch in Ihrem Mail-Formular und in den <a href="#templates">Templates</a> erg&auml;nzen.</p>
582
583 <p>Es folgt Beispiel-Konfiguration f&uuml;r ein Formularfeld namens <i>beruf</i>:</p>
584
585 <pre>
586 $user_fields['beruf']['min'] = 5;
587 $user_fields['beruf']['max'] = 10;
588 $user_fields['beruf']['required'] = 1;
589 $user_fields['beruf']['regex'] = '/^[A-Za-z]+$/';
590 $user_fields['beruf']['check'] = 'check_beruf';
591 $user_fields['beruf']['prepare'] = 'prepare_beruf';
592 $user_fields['beruf']['tpl_var'] = 'BERUF';
593
594 $user_fields['beruf']['errors']['too_short'] = 'Der Beruf muss mind. 5 Zeichen lang sein!';
595 $user_fields['beruf']['errors']['too_long'] = 'Der Beruf darf h&ouml;chstens 10 Zeichen lang sein!';
596 $user_fields['beruf']['errors']['not_set'] = 'Sie haben keinen Beruf eingegeben!';
597 $user_fields['beruf']['errors']['match_fail'] = 'Der Beruf darf nur aus Buchstaben bestehen!';
598 $user_fields['beruf']['errors']['check_fail'] = 'Der Beruf sollte keine &auml;&ouml;&uuml; haben!';
599
600 # Beispiel-Check-Funktion
601
602 function check_beruf($content) {
603 if(strpos($content,'&auml;') !== false) return false;
604 if(strpos($content,'&ouml;') !== false) return false;
605 if(strpos($content,'&uuml;') !== false) return false;
606
607 return true;
608 }
609
610 # Beispiel-Vorbereitungs-Funktion
611
612 function prepare_beruf($content) {
613 return strtolower($content);
614 }
615 </pre>
616
617 <p>Das Formularfeld hat die folgenden Eigenschaften:</p>
618
619 <ul>
620 <li>Der Beruf muss aus mind. 5 Zeichen und max. 10 Zeichen bestehen (<code>min</code> und <code>max</code>)</li>
621 <li>Das Formularfeld ist ein Pflichtfeld (<code>required</code>)</li>
622 <li>Es sind nur die Buchstaben A-Z (gro&szlig; und klein) erlaubt (<code>regex</code>)</li>
623 <li>&Uuml;ber die Pr&uuml;ffunktion <code>check_beruf()</code> wird verhindert, dass &auml;, &ouml; und &uuml; angegeben werden (das wird nat&uuml;rlich auch durch den regul&auml;ren Ausdruck ausgeschlossen, es soll lediglich zur Verdeutlichung dienen)</li>
624 <li>Durch die Vorbereitungsfunktion <code>prepare_beruf()</code> werden alle Gro&szlig;buchstaben in Kleinbuchstaben umgewandelt</li>
625 <li>In den Templates wird die Variable <code>{BERUF}</code> durch den Inhalt des Formularfeldes ersetzt (<code>tpl_var</code>)</li>
626 <li>Die Fehlermeldungen sollten selbsterkl&auml;rend sein</li>
627 </ul>
628
629 <p class="upanddown"><a href="#top">Nach oben</a></p>
630
631 <h2><a name="templates" id="templates">Templates anpassen</a></h2>
632
633 <p>Die Anpassung der Ausgaben von <i>Form E-Mail</i> erfolgt &uuml;ber Templates (englisch f&uuml;r &quot;Vorlagen&quot;). Jede der Templates enth&auml;lt Variablen der Form <b>{VARIABLENNAME}</b>, die dann von <i>Form E-Mail</i> durch entsprechende Daten ersetzt werden.</p>
634
635 <p>Hier nun eine Auflistung der einzelnen Templates und der verwendeten Variablen (ohne geschweifte Klammern):</p>
636
637 <table border="1">
638 <tr>
639 <td width="20%"><b>Datei</b></td>
640 <td width="40%"><b>Zweck</b></td>
641 <td width="40%"><b>Verwendete Variablen</b></td>
642 </tr>
643 <tr>
644 <td><i>fatal.htm</i></td>
645 <td>Wird angezeigt, wenn ein Fehler aufgetreten ist, den der Benutzer nicht mehr beheben kann</td>
646 <td>
647 <ul>
648 <li><b>ERROR</b><br />
649 Die Fehlermeldung</li>
650 </ul>
651 </td>
652 </tr>
653 <tr>
654 <td><i>mail.txt</i></td>
655 <td>Legt das Aussehen der Mail fest</td>
656 <td>
657 <ul>
658 <li><b>EMAIL</b><br />
659 Die eingegebene E-Mail-Adresse</li>
660 <li><b>NAME</b><br />
661 Der eingegebene Name</li>
662 <li><b>SUBJECT</b><br />
663 Der Betreff der Mail</li>
664 <li><b>TEXT</b><br />
665 Der eingegebene Mail-Text</li>
666 <li><b>TIME</b><br />
667 Die formatierte Zeitangabe</li>
668 </ul>
669
670 Weiterhin k&ouml;nnen Sie hier die definierten Variablen der <a href="#individuell">individuellen Formularfelder</a> (das, was Sie in <code>tpl_var</code> angegeben haben) verwenden.<br />
671 <br />
672 Zus&auml;tzlich k&ouml;nnen Sie hier durch Variablen, die mit <b>ENV_</b> beginnen, Server-Umgebungsvariablen im Text einf&uuml;gen (siehe auch Konfigurationsvariable <code>$allowed_envs</code>.
673 </td>
674 </tr>
675 <tr>
676 <td><i>sent.htm</i></td>
677 <td>Wird angezeigt, wenn die Mail erfolgreich versendet wurde</td>
678 <td>
679 <ul>
680 <li><b>EMAIL</b><br />
681 Die eingegebene E-Mail-Adresse</li>
682 <li><b>MAIL</b><br />
683 Die komplette Mail, so wie sie versendet wurde (nat&uuml;rlich ohne Header)</li>
684 <li><b>NAME</b><br />
685 Der eingegebene Name</li>
686 <li><b>SUBJECT</b><br />
687 Der Betreff der Mail</li>
688 <li><b>TEXT</b><br />
689 Der eingegebene Mail-Text</li>
690 <li><b>TIME</b><br />
691 Die formatierte Zeitangabe</li>
692 </ul>
693
694 Weiterhin k&ouml;nnen Sie hier die definierten Variablen der <a href="#individuell">individuellen Formularfelder</a> (das, was Sie in <code>tpl_var</code> angegeben haben) verwenden.
695 </td>
696 </tr>
697 <tr>
698 <td><i>user_error.htm</i></td>
699 <td>Wird angezeigt, wenn der Benutzer einen Fehler gemacht hat, der sich aber noch beheben l&auml;sst (zum Beispiel wenn ein Formularfeld nicht ausgef&uuml;llt wurde)</td>
700 <td>
701 <ul>
702 <li><b>EMAIL</b><br />
703 Die eingegebene E-Mail-Adresse</li>
704 <li><b>ERROR</b><br />
705 Die Fehlermeldung</li>
706 <li><b>NAME</b><br />
707 Der eingegebene Name</li>
708 <li><b>SUBJECT</b><br />
709 Der Betreff der Mail</li>
710 <li><b>TEXT</b><br />
711 Der eingegebene Mail-Text</li>
712 </ul>
713
714 Weiterhin k&ouml;nnen Sie hier die definierten Variablen der <a href="#individuell">individuellen Formularfelder</a> (das, was Sie in <code>tpl_var</code> angegeben haben) verwenden.<br />
715 <br />
716 Zus&auml;tzlich ist es m&ouml;glich, einen Bereich, der nur angezeigt werden soll, wenn Captchas aktiviert sind, anzuzeigen, indem Sie diesen in folgenden Block einschlie&szlig;en (der <code>{ELSE}</code>-Teil ist optional):<br />
717 <br />
718 <code>{IF CAPTCHA}Captchas sind aktiviert{ELSE}Captchas sind nicht aktiviert{ENDIF}</code>
719 </td>
720 </tr>
721 </table>
722
723 <p>&nbsp;</p>
724
725 <hr width="80%" noshade="noshade" />
726
727 <p><a href="changes.htm">Versionshistorie</a></p>
728
729 <hr width="80%" noshade="noshade" />
730
731 <p style="font-size:8pt">&copy;&nbsp;2002-2012 Patrick Canterino</p>
732
733 <table border="0" cellspacing="0" style="font-size:8pt">
734 <tr>
735 <td>Homepage:</td>
736 <td><a href="http://www.patshaping.de/" target="_blank">http://www.patshaping.de/</a></td>
737 </tr>
738 <tr>
739 <td><a name="bottom" id="bottom">E-Mail:</a></td>
740 <td><a href="mailto:patrick@patshaping.de">patrick@patshaping.de</a></td>
741 </tr>
742 </table>
743 </body>
744 </html>

patrick-canterino.de