Hilfe PHP-Bestätigungsmail haut net hin. ;_(

ATEM-GOLD

Grünschnabel
MOIN,MOIN,

hab da mal ein Problem. Leider kenne ich mich mit PHP zuwenig aus um selber auf die Lösung zu kommen.
In meinem Kontaktformular soll auch der Absender eine Bestätigungsmail erhalten. Aber irgendwie will das net hinauen.
HTML:
<?php

$form = new ProcessForm();
$form->field_rules = array(
	'Nachname'=>'required',
	'Vorname'=>'required',
	'Adresse'=>'required',
	'Telefonnummer'=>'number|required',
	'Gutschein für:'=>'required',
	'Gutschein von:'=>'required',
	'Gutscheine für Massagen und Pysiotherapie'=>'required',
	'Gutscheine für Ayurveda und Wellness'=>''
);


$form->validate();

class ProcessForm
{
	
    public $field_rules;
    public $error_messages;
    public $fields;
    private $error_list;
    private $is_xhr;




    function __construct()
    {
        $this->error_messages = array(
            'required' => 'This field is required',
            'email' => 'Please enter a valid email address',
            'number' => 'Please enter a numeric value',
            'url' => 'Please enter a valid URL',
            'pattern' => 'Please correct this value',
            'min' => 'Please enter a value larger than the minimum value',
            'max' => 'Please enter a value smaller than the maximum value'
        );

        $this->field_rules = array();
        $this->error_list = '';
        $this->fields = $_POST;
        $this->is_xhr = $this->xhr();
    }





    function validate()
    {
        if (!empty($this->fields))
        {
            //Validate each of the fields
            foreach ($this->field_rules as $field => $rules)
            {
                $rules = explode('|', $rules);

                foreach ($rules as $rule)
                {
                    $result = null;

                    if (isset($this->fields[$field]))
                    {
                        $param = false;

                        if (preg_match("/(.*?)\[(.*?)\]/", $rule, $match))
                        {
                            $rule = $match[1];
                            $param = $match[2];
                        }

                        $this->fields[$field] = $this->clean($this->fields[$field]);

                        //if the field is a checkbox group create string
                        if (is_array($this->fields[$field]))
                            $this->fields[$field] = implode(', ', $this->fields[$field]);

                        // Call the function that corresponds to the rule
                        if (!empty($rule))
                            $result = $this->$rule($this->fields[$field], $param);

                        // Handle errors
                        if ($result === false)
                            $this->set_error($field, $rule);
                    }
                }
            }

            if (empty($this->error_list))
            {
                if ($this->is_xhr)
                    echo json_encode(array('status' => 'success'));

                $this->process();
            }
            else
            {
                if ($this->is_xhr)
                    echo json_encode(array('status' => 'invalid', 'errors' => $this->error_list));
                else echo $this->error_list;
            }
        }
    }





    function process()
    {
         /**
         * SUCCESS!!
         * There were no errors in the form. Insert your processing logic here (i.e. send an email, save to a
         * database etc.
         *
         * All of the submitted fields are available in the $this->fields variable.
         *
         *
         * IMPORTANT - PLEASE READ:
         * 1. YOU MUST UNCOMMENT THE CODE FOR IT TO WORK.
         *    - This means removing the '//' in front of each line.
         *    - If you do not know what php comments are see here: http://php.net/manual/en/language.basic-syntax.comments.php
         *
         * 2. YOU CAN ENTER ANY EMAIL ADDRESS IN THE $from VARIABLE.
         *    - This is the address that will show in the From column in your mail application.
         *    - If your form contains an email field, and you want to use that value as the $from variable, you can set $from = $this->fields['name of your email field'];
         *
         * 3. FILE ATTACHMENTS
         *    - As stated in the description on codecanyon, this code does not mail attachments. Google 'php html email attachments' for information on how to do this
         *
         *  4. REDIRECTING TO ANOTHER PAGE AFTER SUBMISSION
         *    - This is an ajax enabled form, so you need to perform the redirection in main.js AND this php file.
         *      a. Please see instructions in main.js for redirection. This is for users without JS.
         *      b. Replace the relevant code below with the page you would like to redirect to. REMEMBER TO UNCOMMENT THE LINE FOR IT TO WORK.
         */



         /*********************************************/
         /*             SAMPLE MAIL CODE              */
         /*********************************************/

         // $msg = "Form Contents: \n\n";
         // foreach($this->fields as $key => $field)
         //       $msg .= "$key :  $field \n";

         // $to = 'emailaddress@domain.com';
         // $subject = 'Form Submission';
         // $from = 'emailaddress@domain.com';

         // mail($to, $subject, $msg, "From: $from\r\nReply-To: $from\r\nReturn-Path: $from\r\n");



        /************************************************************************************/
        /*                                REDIRECTION CODE                                  */
        /*         Only uncomment the line below if you want to redirect to another page    */
        /*                          when the form has been submitted                        */
        /************************************************************************************/

        //if (!$this->is_xhr)
        //    header('Location: http://www.example.com/somePage.html');


    $msg = "Gutschein Bestellung \n\n";
          foreach($this->fields as $key => $field)
                $msg .= "$key :  $field \n";

          $to = 'kaiwehrhahn@gmx.de';
          $subject = 'Gutschein Bestellung';
          $from = 'Internetseite';

          mail($to, $subject= utf8_decode($subject), $msg, "From: $from\r\nReply-To: $from\r\nReturn-Path: $from\r\n");
		  }



    function set_error($field, $rule)
    {
        if ($this->is_xhr)
        {
            $this->error_list[$field] = $this->error_messages[$rule];
        }
        else $this->error_list .= "<div class='error'>$field: " . $this->error_messages[$rule] . "</div>";
    }





    function xhr()
    {
        return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false;
    }





    /** Validation Functions */
    function required($str, $val = false)
    {

        if (!is_array($str))
        {
            $str = trim($str);
            return ($str == '') ? false : true;
        }
        else
        {
            return (!empty($str));
        }
    }





    function email($str)
    {
        return (!preg_match("/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD", $str)) ? false : true;
    }





    function number($str)
    {
        return (!is_numeric($str)) ? false : true;
    }





    function min($str, $val)
    {
        return ($str >= $val) ? true : false;
    }





    function max($str, $val)
    {
        return ($str <= $val) ? true : false;
    }





    function pattern($str, $pattern)
    {
        return (!preg_match($pattern, $str)) ? false : true;
    }





    function clean($str)
    {
        $str = is_array($str) ? array_map(array("ProcessForm", 'clean'), $str) : str_replace('\\', '\\\\', strip_tags(trim(htmlspecialchars((get_magic_quotes_gpc() ? stripslashes($str) : $str), ENT_QUOTES))));
        return $str;
    }
}


?>
Danke schonmal für die Hilfe.
 
Also... Hab jetzt schon versucht ein paar codes in php einzufügen, so der Absender und Empfänger eine Email erhalten.Jetzt bekommt ja nur der Empfänger die Emails.
 
Vor "function set_error($field, $rule)" existiert die Zeile:

PHP:
          mail($to, $subject= utf8_decode($subject), $msg, "From: $from\r\nReply-To: $from\r\nReturn-Path: $from\r\n");

Damit beide Sender und Empfänger eine Email erhalten kannste das so lösen:

PHP:
          mail($to, $subject= utf8_decode($subject), $msg, "From: $from\r\nReply-To: $from\r\nReturn-Path: $from\r\n");
          mail($from, $subject= utf8_decode($subject), $msg, "From: $to\r\nReply-To: $to\r\nReturn-Path: $to\r\n");

Oder per CC oder BCC :


PHP:
          mail($to, $subject= utf8_decode($subject), $msg, "From: $from\r\nReply-To: $from\r\nReturn-Path: $from\r\nBcc: $from\r\n");
 
Zuletzt bearbeitet:
Hmm.Habs mal getestet. Geht leider nicht so wie ich es mir vorstelle. Jetzt bekomme ich zwei Mails, aber der Sender, der ja seine Email Adresse angibt bekommt keine.
 
Du eknnst aber schon den Unterschied zwischen "Sender" und "Empfänger"? Der sender sendet, die Email, bekommt sie deshalb logischerweise nicht.
 
Ja schon, aber kann man nicht trotzdem dem Sender auch eine Kopie der von ihm geschriebene Email schicken, also wie eine Bestättigungsemail.
 
Die Frage war: ob man in meinem php-code, die Möglichkeit hat, das beide die gleiche Email gesendet bekommen. Also der Sender und der Empfänger. Da ich mich leider überhaupt nicht mit php auskenne, bin ich sehr auf Hilfe angewiesen.
 
Zurück