Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

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