Subversion-Projekte lars-tiefland.php_share

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php
        // $Id: mail.php 28 2007-09-28 12:28:21Z tiefland $

        //Variablen initialisieren      
        $headers        = array();
        $email          = (isset($_POST["email"])) ? $_POST["email"] : "info@weban.de";
        
        // Existiert ein Email Schutz?
        if (eregi("[a-z0-9]{32}",$_POST["_to"])) {
                // Ja, dann ueberpruefe ob Konfiguration existiert
                if (file_exists('emailconfig.default.inc.php')) {
                        include('emailconfig.default.inc.php');
                }
                // Existiert auch diese Adresse
                if ($GLOBALS['email_config'][$_POST["_from"]]) {
                
                        $_from          = $GLOBALS['email_config'][$_POST["_from"]];
                        $_to            = $GLOBALS['email_config'][$_POST["_to"]];
                        $recipient      = $GLOBALS['email_config'][$_POST["recipient"]];
                        
                        if (eregi("[a-z0-9]{32}",$_POST["_subject"])) {
                                $_subject       = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
                                $subject        = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
                    } else {
                        if ($_POST["_subject"]) {
                                        $_subject       = $_POST["_subject"];
                                        $subject        = $_POST["_subject"];
                        } else {
                                        $_subject       = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
                                        $subject        = "Anfrage ueber: " . $GLOBALS['email_config'][$_POST["_subject"]];
                        }
                    }    
                        
                } else {
                        die("Sie haben einen Fehlehaften Code uebergeben.<br>");
                }

        } else {
                $_from          = (isset($_POST["_from"]))              ?       $_POST["_from"]         :       $email;
                $_to            = (isset($_POST["_to"]))                ?       $_POST["_to"]           :       $email;
                $recipient      = (isset($_POST["recipient"]))  ?       $_POST["recipient"] :   $email;
                $_subject       = (isset($_POST["_subject"]))   ?       $_POST["_subject"]      :       "";
                $subject        = (isset($_POST["subject"]))    ?       $_POST["subject"]       :       "";
        }
        
        $_target        = (isset($_POST["_target"]))    ?       $_POST["_target"]       :       "";
        $redirect   = (isset($_POST["redirect"]))       ?       $_POST["redirect"]      :       "";
        $submit         = false;
        $cc                     = false;
        $bcc            = false;
        $sub            = false;
        $ref            = $_SERVER["HTTP_REFERER"];
        $start          = strpos ($ref, "//");

        // Referrer überprüfen
        if ($start < 0) {
                $start = 0;
        } else {
                $start = $start + 2;
        }
        $stop = strpos ($ref, "/", $start);

        // Variable $_POST auf "submit" als Array-Key überprüfen 
        // falls nicht gefunden ==> ENDE
        
/*      foreach ($_POST as $key => $value)
        {
                if (strtolower($key)=="submit")
                {
                        $submit=true;
                }
        }

        if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]||!$submit) 
*/

        if (substr ($ref, $start, $stop-$start) != $_SERVER["SERVER_NAME"]) {
                exit;
        }

        //Body zusammenbauen
        foreach(array_keys($_POST) as $elem) {
                if ($elem[0] == "_") {
                        unset($_POST[$elem]);
                } else {
                        if (is_array($_POST[$elem])) {
                                $_POST[$elem] = implode($_POST[$elem],", ");
                        }
                        $_POST[$elem] = $elem.": ".$_POST[$elem];
                }
        }
        $body=implode($_POST,"\n");

        // TO Adresse ermitteln
        if (!$_to) {
                $_to = $recipient;
        }
        if (!$_subject) {
                $_subject  = $subject;
        }

        // FROM Adresse ermitteln
        if (!$_from) {
                if ($email) {
                        $_from = $email;
                } else {
                        $_from = $_to;
                }
        }

        // Weiterleitungsziel ermitteln
        if (!$_target) {
                if ($redirect) {
                        $_target = $redirect;
                } else {
                        $_target = "danke.htm?ref=".urlencode($ref);
                }
        } else {
                $_target = dirname($ref)."/".$_target;
        }
        
        // Header überpruefen (muessen leer sein)
        if (count($headers)) {
                //Header wurde manipuliert!
                $keys=array("cc","cC","Cc","CC");
                foreach($keys as $key) {
                        if (isset($headers[$key])) {
                                unset($headers[$key]);
                                $cc=true;
                        }
                        if (isset($headers["b".$key])) {
                                unset($headers["b".$key]);
                                $bcc=true;
                        }
                        if (isset($headers["B".$key])) {
                                unset($headers["B".$key]);
                                $bcc=true;
                        }
                }
        }

        // erweiterte Infos erstellen
        $linkInfo      =  readlink ( $_SERVER["SCRIPT_FILENAME"] );
        $infoString    = "PHP_SELF: "                   .       $_SERVER["PHP_SELF"]                    ."\n";
        $infoString   .= "SCRIPT_NAME: "                .       $_SERVER["SCRIPT_NAME"]                 ."\n";
        $infoString   .= "REQUEST_URI: "                .       $_SERVER["REQUEST_URI"]                 ."\n";
        $infoString   .= "SCRIPT_FILENAME: "    .       $_SERVER["SCRIPT_FILENAME"]             ."\n";
        $infoString   .= "HTTP_REFERER: "               .       $_SERVER["HTTP_REFERER"]                ."\n";
        $infoString   .= "REMOTE_ADDR: "                .       $_SERVER["REMOTE_ADDR"]                 ."\n";
        $infoString   .= "SYM_LINK_INFO: "              .       $linkInfo                                               ."\n";
        $infoString   .= "EMPFAENGER: "                 .       $_to                                                    ."\n";

        $infoString   =   "\n\n=============================================\n\n"
                  .   $infoString
                                  .   "\n=============================================\n";

        // ende erweiterte Infos

        // Verschiedene Variablen ueberpruefen, ob "TO: BCC: CC: oder FROM: Eintraege vorkommen
        $ereg1 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_to);
        $ereg2 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $body);
        $ereg3 = eregi("/(from\:)|(to\:)|(cc\:)|(bcc\:)/", $_subject);
        
        // Eventuell vorhandenes "SUBJECT"-Feld im Header löschen
        foreach($headers as $header => $value) {
                if (strtolower($headers)=="subject") {
                        unset($headers[$header]);
                        $sub=true;
                }
        }
        
        //Body erweitern, falls manipulierte Werte gefunden wurden!
        $body .= ($ereg1) ? "To enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
        $body .= ($ereg2) ? "Body enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
        $body .= ($ereg3) ? "Subject enthielt zusaetzliche Angaben ('FROM:', 'TO:', 'CC:', 'BCC:')!\n" : "";
        $body .= ($sub)   ? "Header enthielt zusaetzliche Subject-Angabe!\n" : "";
        $body .= ($bcc)   ? "Header enthielt BCC-Angabe!\n" : "";
        $body .= ($cc)    ? "Header enthielt CC-Angabe!\n" : "";
        
        //Pruefen, ob kein HTML in Nachricht vorkommt
        $no_html=($body==strip_tags($body));
        
        // Header-Array zusammenbauen
        $headers["From"]        = $_from;
        $headers["Subject"]     = $_subject;
        
        // PEAR-Klasse "Mail" einbinden und "mail"-Objekt erstellen
        require_once("Mail.php");
        $mail=Mail::factory("mail");
        
        // Pruefen, ob kein Fehler aufgetreten ist
        if (!PEAR::isError($mail)) {
                // Wenn alles OK ist
                if (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {
                        //Mail verschicken
                        $mail->send($_to, $headers, $body);
                }
                
                // Nachricht erweitern
                $body = implode("\n",$headers)."\n$_to\n$body";
                
                // Nachrichtenkopie verschicken
                if (!$ereg1 && !$ereg2 && !$ereg3 && !$bcc && !$cc && !$sub && $no_html) {
                        $headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"];
                } else {
                        $headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"]." - Spam-Nachricht";
                }
                
                //$mail->send("markus@weban.de",   $headers, $body.$infoString);
                //$mail->send("niewerth@weban.de", $headers, $body.$infoString);
                //$mail->send("tiefland@weban.de", $headers, $body.$infoString);
        }
        
        // Auf Danke-Seite weiterleiten
        header("Location: $_target");
?>