]> git.p6c8.net - form-email.git/blob - form-email/functions.php
Auch mit Traditionen sollte man irgendwann mal brechen:
[form-email.git] / form-email / functions.php
1 <?php
2
3 #
4 # Form E-Mail 3.5
5 #
6 # Versenden einer E-Mail, die ueber ein Kontaktformular
7 # geschrieben wurde.
8 #
9 # Autor: Patrick Canterino <patrick@patshaping.de>
10 # Letzte Aenderung: 12.12.2011
11 #
12 # Copyright (C) 2002-2011 Patrick Canterino
13 #
14 # Diese Datei kann unter den Bedingungen der "Artistic License 2.0"
15 # weitergegeben und / oder veraendert werden.
16 # Siehe:
17 # http://www.opensource.org/licenses/artistic-license-2.0
18 #
19
20 # formdata()
21 #
22 # Formulardaten bei deaktiviertem register_globals auslesen
23 #
24 # Parameter: Name des Formularfeldes
25 #
26 # Rueckgabe: Inhalt des Formularfeldes (String oder Array)
27 #
28 # Bemerkungen: - Wenn der HTTP-Zugriff nicht POST oder GET ist,
29 # wird nichts zurueckgegeben.
30 # - Codierende Backslashes werden automatisch entfernt
31
32 function formdata($param) {
33 switch($_SERVER['REQUEST_METHOD']) {
34 case 'GET':
35 if(isset($_GET[$param])) {
36 $value = $_GET[$param];
37 break;
38 }
39 else return null;
40
41 case 'POST':
42 if(isset($_POST[$param])) {
43 $value = $_POST[$param];
44 break;
45 }
46 else return null;
47
48 default:
49 return null;
50 }
51
52 if(get_magic_quotes_gpc()) {
53 if(is_array($value)) return array_map('stripslashes',$value);
54 else return stripslashes($value);
55 }
56 else return $value;
57 }
58
59 # plain()
60 #
61 # Text fuer HTML-Ausgabe vorbereiten (Entities,
62 # Zeilenumbrueche, Leerzeichen)
63 #
64 # Parameter: 1. Text
65 # 2. Zeilenumbruchskennung (Standard = <br>)
66 #
67 # Rueckgabe: Bearbeiteter Text (String)
68
69 function plain($text,$linebreak='<br>') {
70 $htmltext = htmlspecialchars($text);
71 $htmltext = preg_replace("/\015\012|\012|\015/",$linebreak,$htmltext);
72
73 for($x=0;$x<strlen($htmltext);$x++) {
74 if($htmltext[$x] == ' ' && $htmltext[$x+1] == ' ') $htmltext[$x] = "\240";
75 }
76
77 $htmltext = str_replace("\240",'&nbsp;',$htmltext);
78 $htmltext = str_replace($linebreak.' ',$linebreak.'&nbsp;',$htmltext);
79
80 return $htmltext;
81 }
82
83 # semicolon_split()
84 #
85 # Durch Semikola getrennte Werte aufteilen und Leerzeichen
86 # an Anfang und Ende der Werte entfernen
87 #
88 # Parameter: Zeichenkette
89 #
90 # Rueckgabe: Aufgeteilte Zeichenkette (Array)
91
92 function semicolon_split($string) {
93 $parts = explode(';',$string);
94 $parts = array_map('trim',$parts);
95
96 return $parts;
97 }
98
99 # show_fatal()
100 #
101 # Fehlermeldung anzeigen (Benutzer kann den Fehler
102 # nicht korrigieren)
103 #
104 # Parameter: Fehlermeldung
105
106 function show_fatal($errmsg,$vars=array()) {
107 global $tpl_fatal;
108
109 $tpl = new Template;
110 $tpl->read_file($tpl_fatal);
111
112 if(sizeof($vars) > 0) {
113 while(list($var,$content) = each($vars)) {
114 $errmsg = str_replace('{'.$var.'}',htmlspecialchars($content),$errmsg);
115 }
116 }
117
118 $tpl->set_var('ERROR',$errmsg);
119
120 $tpl->parse();
121
122 print $tpl->get_template();
123 exit;
124 }
125
126 # show_user_error()
127 #
128 # Fehlermeldung anzeigen (Benutzer kann den Fehler
129 # aber noch korrigieren)
130 #
131 # Parameter: Fehlermeldung
132
133 function show_user_error($errmsg) {
134 global $captcha_enable, $email, $name, $subject, $text, $user_fields, $tpl_user_error;
135
136 $tpl = new Template;
137 $tpl->read_file($tpl_user_error);
138
139 $tpl->parse_if_block('CAPTCHA',$captcha_enable);
140
141 $tpl->set_var('EMAIL', htmlspecialchars($email));
142 $tpl->set_var('ERROR', $errmsg);
143 $tpl->set_var('NAME', htmlspecialchars($name));
144 $tpl->set_var('SUBJECT',htmlspecialchars($subject));
145 $tpl->set_var('TEXT', htmlspecialchars($text));
146
147 reset($user_fields);
148
149 while(list($user_field,$user_field_data) = each($user_fields)) {
150 $tpl->set_var($user_field_data['tpl_var'],htmlspecialchars(formdata($user_field)));
151 }
152
153 $tpl->parse();
154
155 print $tpl->get_template();
156 exit;
157 }
158
159 #
160 ### Ende ###
161
162 ?>

patrick-canterino.de