За последние 24 часа нас посетили 17547 программистов и 1314 роботов. Сейчас ищут 1783 программиста ...

Обработка формы по отправке почты

Тема в разделе "Работа с почтой", создана пользователем samdocua, 25 июл 2014.

  1. samdocua

    samdocua Новичок

    С нами с:
    25 июл 2014
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте, уважаемые разработчики. Есть вопрос по обработке формы для сбора контактных данных пользователей. Форма собирает данные и отправляет мне на почту.
    Вот код который отвечает за отправку писем мне на почту:
    Код (Text):
    1.  
    2. <?php
    3. function ValidateEmail($email)
    4. {
    5.    $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
    6.    return preg_match($pattern, $email);
    7. }
    8. if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['formid'] == 'obuchform1')
    9. {
    10.    $mailto = 'zakaz-school-studiya@parikmaher-kursy.ru';
    11.    $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    12.    $subject = 'Поступил новый заказ (СТУДИЯ БУДНИ)';
    13.    $message = 'Новый заказ (СТУДИЯ БУДНИ) на курс с такими данными:';
    14.    $success_url = './zakaz_pr.php';
    15.    $error_url = '';
    16.    $error = '';
    17.    $eol = "\n";
    18.    $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
    19.    $boundary = md5(uniqid(time()));
    20.    $header  = 'From: '.$mailfrom.$eol;
    21.    $header .= 'Reply-To: '.$mailfrom.$eol;
    22.    $header .= 'MIME-Version: 1.0'.$eol;
    23.    $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
    24.    $header .= 'X-Mailer: PHP v'.phpversion().$eol;
    25.    if (!ValidateEmail($mailfrom))
    26.    {
    27.       $error .= "The specified email address is invalid!\n<br>";
    28.    }
    29.    if (!empty($error))
    30.    {
    31.       $errorcode = file_get_contents($error_url);
    32.       $replace = "##error##";
    33.       $errorcode = str_replace($replace, $error, $errorcode);
    34.       echo $errorcode;
    35.       exit;
    36.    }
    37.    $internalfields = array ("submit", "reset", "send", "filesize", "formid", "captcha_code", "recaptcha_challenge_field", "recaptcha_response_field");
    38.    $message .= $eol;
    39.    $message .= "IP Address : ";
    40.    $message .= $_SERVER['REMOTE_ADDR'];
    41.    $message .= $eol;
    42.    foreach ($_POST as $key => $value)
    43.    {
    44.       if (!in_array(strtolower($key), $internalfields))
    45.       {
    46.          if (!is_array($value))
    47.          {
    48.             $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
    49.          }
    50.          else
    51.          {
    52.             $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
    53.          }
    54.       }
    55.    }
    56.    $body  = 'This is a multi-part message in MIME format.'.$eol.$eol;
    57.    $body .= '--'.$boundary.$eol;
    58.    $body .= 'Content-Type: text/plain; charset=UTF-8'.$eol;
    59.    $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
    60.    $body .= $eol.stripslashes($message).$eol;
    61.    if (!empty($_FILES))
    62.    {
    63.        foreach ($_FILES as $key => $value)
    64.        {
    65.           if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
    66.           {
    67.              $body .= '--'.$boundary.$eol;
    68.              $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
    69.              $body .= 'Content-Transfer-Encoding: base64'.$eol;
    70.              $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
    71.              $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
    72.           }
    73.       }
    74.    }
    75.    $body .= '--'.$boundary.'--'.$eol;
    76.    if ($mailto != '')
    77.    {
    78.       mail($mailto, $subject, $body, $header);
    79.    }
    80.    header('Location: '.$success_url);
    81.    exit;
    82. }
    83. ?>
    Получается мне приходит письма с такими данными:
    От: zakaz-school-studiya@parikmaher-kursy.ru
    Кому: zakaz-school-studiya@parikmaher-kursy.ru

    А нужно чтобы в поле "От" был адрес, который вводят в форму.

    Подскажите, пожалуйста, что нужно поменять?
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    значит
    Код (PHP):
    1. $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto; 
    всегда $mailto возвращает
     
  3. samdocua

    samdocua Новичок

    С нами с:
    25 июл 2014
    Сообщения:
    3
    Симпатии:
    0
    Спасибо за ответ. А не подскажите, как сделать, чтобы брало ящик вводимый в форму?
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    так а форма как выглядит-то?
     
  5. samdocua

    samdocua Новичок

    С нами с:
    25 июл 2014
    Сообщения:
    3
    Симпатии:
    0
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    в форме поле с именем «e-mail», в скрипте проверяется $_POST['email']
    усекаешь?