Subversion-Projekte lars-tiefland.php_share

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?
        // $Id: mail.php 25 2007-09-19 15:31:51Z 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"]];
                        
                        $_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 überprüfen (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;
                        }
                }
        }
        
        // Verschiedene Variablen überprüfen, ob "TO: BCC: CC: oder FROM: Einträge 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":"";
        
        //Pr�fen, 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");
        
        // Pr�fen, 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
                $headers["Subject"]="Nachrichtenkopie auf $SERVER_NAME: ".$headers["Subject"];
                
                //$mail->send("markus@weban.de", $headers, $body);
                //$mail->send("niewerth@weban.de", $headers, $body);
                //$mail->send("tiefland@weban.de", $headers, $body);
        }
        
        // Auf Danke-Seite weiterleiten
        header("Location: $_target");
?>