Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
	// $Id: mail.php 28 2007-09-28 12:28:21Z tiefland $
3
 
4
	//Variablen initialisieren
5
	$headers 	= array();
6
	$email 		= (isset($_POST["email"])) ? $_POST["email"] : "info@weban.de";
7
 
8
	// Existiert ein Email Schutz?
9
	if (eregi("[a-z0-9]{32}",$_POST["_to"])) {
10
		// Ja, dann ueberpruefe ob Konfiguration existiert
11
		if (file_exists('emailconfig.default.inc.php')) {
12
			include('emailconfig.default.inc.php');
13
		}
14
		// Existiert auch diese Adresse
15
		if ($GLOBALS['email_config'][$_POST["_from"]]) {
16
 
17
			$_from 		= $GLOBALS['email_config'][$_POST["_from"]];
18
			$_to   		= $GLOBALS['email_config'][$_POST["_to"]];
19
			$recipient	= $GLOBALS['email_config'][$_POST["recipient"]];
20
 
21
			if (eregi("[a-z0-9]{32}",$_POST["_subject"])) {
22
			 	$_subject	= "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
23
			 	$subject	= "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
24
		    } else {
25
		    	if ($_POST["_subject"]) {
26
					$_subject	= $_POST["_subject"];
27
					$subject	= $_POST["_subject"];
28
		    	} else {
29
			 		$_subject	= "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
30
			 		$subject	= "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
31
		    	}
32
		    }
33
 
34
		} else {
35
			die("Sie haben einen Fehlehaften Code uebergeben.<br>");
36
		}
37
 
38
	} else {
39
		$_from 		= (isset($_POST["_from"])) 		? 	$_POST["_from"] 	: 	$email;
40
		$_to   		= (isset($_POST["_to"])) 		? 	$_POST["_to"] 		: 	$email;
41
		$recipient	= (isset($_POST["recipient"])) 	? 	$_POST["recipient"] : 	$email;
42
		$_subject	= (isset($_POST["_subject"])) 	? 	$_POST["_subject"]	:	"";
43
		$subject	= (isset($_POST["subject"])) 	? 	$_POST["subject"]	:	"";
44
	}
45
 
46
	$_target	= (isset($_POST["_target"])) 	? 	$_POST["_target"]	:	"";
47
	$redirect   = (isset($_POST["redirect"])) 	? 	$_POST["redirect"]	:	"";
48
	$submit		= false;
49
	$cc			= false;
50
	$bcc		= false;
51
	$sub    	= false;
52
	$ref		= $_SERVER["HTTP_REFERER"];
53
	$start 		= strpos ($ref, "//");
54
 
55
	// Referrer überprüfen
56
	if ($start < 0) {
57
		$start = 0;
58
	} else {
59
		$start = $start + 2;
60
	}
61
	$stop = strpos ($ref, "/", $start);
62
 
63
	// Variable $_POST auf "submit" als Array-Key überprüfen
64
	// falls nicht gefunden ==> ENDE
65
 
66
/*	foreach ($_POST as $key => $value)
67
	{
68
		if (strtolower($key)=="submit")
69
		{
70
			$submit=true;
71
		}
72
	}
73
 
74
	if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]||!$submit)
75
*/
76
 
77
	if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]) {
78
		exit;
79
	}
80
 
81
	//Body zusammenbauen
82
	foreach(array_keys($_POST) as $elem) {
83
		if ($elem[0] == "_") {
84
			unset($_POST[$elem]);
85
		} else {
86
			if (is_array($_POST[$elem])) {
87
				$_POST[$elem] = implode($_POST[$elem],", ");
88
			}
89
			$_POST[$elem] = $elem.": ".$_POST[$elem];
90
		}
91
	}
92
	$body=implode($_POST,"\n");
93
 
94
	// TO Adresse ermitteln
95
	if (!$_to) {
96
		$_to = $recipient;
97
	}
98
	if (!$_subject) {
99
		$_subject  = $subject;
100
	}
101
 
102
	// FROM Adresse ermitteln
103
	if (!$_from) {
104
		if ($email) {
105
			$_from = $email;
106
		} else {
107
			$_from = $_to;
108
		}
109
	}
110
 
111
	// Weiterleitungsziel ermitteln
112
	if (!$_target) {
113
		if ($redirect) {
114
			$_target = $redirect;
115
		} else {
116
			$_target = "danke.htm?ref=".urlencode($ref);
117
		}
118
	} else {
119
		$_target = dirname($ref)."/".$_target;
120
	}
121
 
122
	// Header überpruefen (muessen leer sein)
123
	if (count($headers)) {
124
		//Header wurde manipuliert!
125
		$keys=array("cc","cC","Cc","CC");
126
		foreach($keys as $key) {
127
			if (isset($headers[$key])) {
128
				unset($headers[$key]);
129
				$cc=true;
130
			}
131
			if (isset($headers["b".$key])) {
132
				unset($headers["b".$key]);
133
				$bcc=true;
134
			}
135
			if (isset($headers["B".$key])) {
136
				unset($headers["B".$key]);
137
				$bcc=true;
138
			}
139
		}
140
	}
141
 
142
	// erweiterte Infos erstellen
143
	$linkInfo      =  readlink ( $_SERVER["SCRIPT_FILENAME"] );
144
	$infoString    = "PHP_SELF: "			.	$_SERVER["PHP_SELF"]			."\n";
145
	$infoString   .= "SCRIPT_NAME: "		.	$_SERVER["SCRIPT_NAME"]			."\n";
146
	$infoString   .= "REQUEST_URI: "		.	$_SERVER["REQUEST_URI"]			."\n";
147
	$infoString   .= "SCRIPT_FILENAME: "	.	$_SERVER["SCRIPT_FILENAME"]		."\n";
148
	$infoString   .= "HTTP_REFERER: "		.	$_SERVER["HTTP_REFERER"]		."\n";
149
	$infoString   .= "REMOTE_ADDR: "		.	$_SERVER["REMOTE_ADDR"]			."\n";
150
	$infoString   .= "SYM_LINK_INFO: "		.	$linkInfo						."\n";
151
	$infoString   .= "EMPFAENGER: "			.	$_to							."\n";
152
 
153
	$infoString   =   "\n\n=============================================\n\n"
154
                  .   $infoString
155
				  .   "\n=============================================\n";
156
 
157
	// ende erweiterte Infos
158
 
159
	// Verschiedene Variablen ueberpruefen, ob "TO: BCC: CC: oder FROM: Eintraege vorkommen
160
	$ereg1 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_to);
161
	$ereg2 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $body);
162
	$ereg3 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_subject);
163
 
164
	// Eventuell vorhandenes "SUBJECT"-Feld im Header löschen
165
	foreach($headers as $header => $value) {
166
		if (strtolower($headers)=="subject") {
167
			unset($headers[$header]);
168
			$sub=true;
169
		}
170
	}
171
 
172
	//Body erweitern, falls manipulierte Werte gefunden wurden!
173
	$body .= ($ereg1) ? "To enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
174
	$body .= ($ereg2) ? "Body enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
175
	$body .= ($ereg3) ? "Subject enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
176
	$body .= ($sub)   ? "Header enthielt zusaetzliche Subject-Angabe!\n" : "";
177
	$body .= ($bcc)   ? "Header enthielt BCC-Angabe!\n" : "";
178
	$body .= ($cc)    ? "Header enthielt CC-Angabe!\n" : "";
179
 
180
	//Pruefen, ob kein HTML in Nachricht vorkommt
181
	$no_html=($body==strip_tags($body));
182
 
183
	// Header-Array zusammenbauen
184
	$headers["From"]	= $_from;
185
	$headers["Subject"]	= $_subject;
186
 
187
	// PEAR-Klasse "Mail" einbinden und "mail"-Objekt erstellen
188
	require_once("Mail.php");
189
	$mail=Mail::factory("mail");
190
 
191
	// Pruefen, ob kein Fehler aufgetreten ist
192
	if (!PEAR::isError($mail)) {
193
		// Wenn alles OK ist
194
		if (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {
195
			//Mail verschicken
196
			$mail->send($_to, $headers, $body);
197
		}
198
 
199
		// Nachricht erweitern
200
		$body = implode("\n",$headers)."\n$_to\n$body";
201
 
202
		// Nachrichtenkopie verschicken
203
		if (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {
204
			$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"];
205
		} else {
206
			$headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"]." - Spam-Nachricht";
207
		}
208
 
209
		//$mail->send("markus@weban.de",   $headers, $body.$infoString);
210
		//$mail->send("niewerth@weban.de", $headers, $body.$infoString);
211
		//$mail->send("tiefland@weban.de", $headers, $body.$infoString);
212
	}
213
 
214
	// Auf Danke-Seite weiterleiten
215
	header("Location: $_target");
216
?>