За последние 24 часа нас посетили 17048 программистов и 1835 роботов. Сейчас ищут 1624 программиста ...

Письмо с attache

Тема в разделе "Работа с почтой", создана пользователем mellifluous, 30 окт 2014.

  1. mellifluous

    mellifluous Новичок

    С нами с:
    30 окт 2014
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток!

    Столкнулся с проблемой, добавил форму обратной связи на сайт, письма приходят, а аттач нет=(

    Вот пример кода, в чем проблема может быть? Заранее благодарен!

    Код (Text):
    1.  
    2. <?php
    3.  
    4. $form = new ProcessForm();
    5. $form->field_rules = array(
    6.     'field2'=>'required',
    7.     'field3'=>'email|required',
    8.     'field4'=>'number|required',
    9.     'field5'=>'required'
    10. );
    11. $form->validate();
    12.  
    13. class ProcessForm
    14. {
    15.     public $field_rules;
    16.     public $error_messages;
    17.     public $fields;
    18.     private $error_list;
    19.     private $is_xhr;
    20.  
    21.  
    22.  
    23.  
    24.  
    25.     function __construct()
    26.     {
    27.         $this->error_messages = array(
    28.             'required' => 'This field is required',
    29.             'email' => 'Please enter a valid email address',
    30.             'number' => 'Please enter a numeric value',
    31.             'url' => 'Please enter a valid URL',
    32.             'pattern' => 'Please correct this value',
    33.             'min' => 'Please enter a value larger than the minimum value',
    34.             'max' => 'Please enter a value smaller than the maximum value'
    35.         );
    36.  
    37.         $this->field_rules = array();
    38.         $this->error_list = '';
    39.         $this->fields = $_POST;
    40.         $this->is_xhr = $this->xhr();
    41.     }
    42.  
    43.  
    44.  
    45.  
    46.  
    47.     function validate()
    48.     {
    49.         if (!empty($this->fields))
    50.         {
    51.             //Validate each of the fields
    52.             foreach ($this->field_rules as $field => $rules)
    53.             {
    54.                 $rules = explode('|', $rules);
    55.  
    56.                 foreach ($rules as $rule)
    57.                 {
    58.                     $result = null;
    59.  
    60.                     if (isset($this->fields[$field]))
    61.                     {
    62.                         $param = false;
    63.  
    64.                         if (preg_match("/(.*?)\[(.*?)\]/", $rule, $match))
    65.                         {
    66.                             $rule = $match[1];
    67.                             $param = $match[2];
    68.                         }
    69.  
    70.                         $this->fields[$field] = $this->clean($this->fields[$field]);
    71.  
    72.                         //if the field is a checkbox group create string
    73.                         if (is_array($this->fields[$field]))
    74.                             $this->fields[$field] = implode(', ', $this->fields[$field]);
    75.  
    76.                         // Call the function that corresponds to the rule
    77.                         if (!empty($rule))
    78.                             $result = $this->$rule($this->fields[$field], $param);
    79.  
    80.                         // Handle errors
    81.                         if ($result === false)
    82.                             $this->set_error($field, $rule);
    83.                     }
    84.                 }
    85.             }
    86.  
    87.             if (empty($this->error_list))
    88.             {
    89.                 if ($this->is_xhr)
    90.                     echo json_encode(array('status' => 'success'));
    91.  
    92.                 $this->process();
    93.             }
    94.             else
    95.             {
    96.                 if ($this->is_xhr)
    97.                     echo json_encode(array('status' => 'invalid', 'errors' => $this->error_list));
    98.                 else echo $this->error_list;
    99.             }
    100.         }
    101.     }
    102.  
    103.  
    104.  
    105.  
    106.  
    107.     function process()
    108.     {
    109.          
    110.          $msg = "Form Contents: \n\n";
    111.          foreach($this->fields as $key => $field)
    112.          $msg .= "$key :  $field \n";
    113.  
    114.          $to = 'emailaddress@domain.com';
    115.          $subject = 'Form Submission';
    116.          $from = 'emailaddress@domain.com';
    117.  
    118.          mail($to, $subject, $msg, "From: $from\r\nReply-To: $from\r\nReturn-Path: $from\r\n");
    119.  
    120.  
    121.     }
    122.  
    123.  
    124.  
    125.     function set_error($field, $rule)
    126.     {
    127.         if ($this->is_xhr)
    128.         {
    129.             $this->error_list[$field] = $this->error_messages[$rule];
    130.         }
    131.         else $this->error_list .= "<div class='error'>$field: " . $this->error_messages[$rule] . "</div>";
    132.     }
    133.  
    134.  
    135.  
    136.  
    137.  
    138.     function xhr()
    139.     {
    140.         return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ? true : false;
    141.     }
    142.  
    143.  
    144.  
    145.  
    146.  
    147.     /** Validation Functions */
    148.     function required($str, $val = false)
    149.     {
    150.  
    151.         if (!is_array($str))
    152.         {
    153.             $str = trim($str);
    154.             return ($str == '') ? false : true;
    155.         }
    156.         else
    157.         {
    158.             return (!empty($str));
    159.         }
    160.     }
    161.  
    162.  
    163.  
    164.  
    165.  
    166.     function email($str)
    167.     {
    168.         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;
    169.     }
    170.  
    171.  
    172.  
    173.  
    174.  
    175.     function number($str)
    176.     {
    177.         return (!is_numeric($str)) ? false : true;
    178.     }
    179.  
    180.  
    181.  
    182.  
    183.  
    184.     function min($str, $val)
    185.     {
    186.         return ($str >= $val) ? true : false;
    187.     }
    188.  
    189.  
    190.  
    191.  
    192.  
    193.     function max($str, $val)
    194.     {
    195.         return ($str <= $val) ? true : false;
    196.     }
    197.  
    198.  
    199.  
    200.  
    201.  
    202.     function pattern($str, $pattern)
    203.     {
    204.         return (!preg_match($pattern, $str)) ? false : true;
    205.     }
    206.  
    207.  
    208.  
    209.  
    210.  
    211.     function clean($str)
    212.     {
    213.         $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))));
    214.         return $str;
    215.     }
    216. }
    217.  
    218.  
    219. ?>
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Т.е. Вы не знаете, что делает этот код?
     
  3. mellifluous

    mellifluous Новичок

    С нами с:
    30 окт 2014
    Сообщения:
    2
    Симпатии:
    0
    Да, не знаю, можете подсказать? Хотябы где читать как это исправить? Надо же учиться как-то, но не понимаю пока... Спасибо.