Данные не уходят, если из формы убрать поле e-mail

Тема в разделе "PHP", создана пользователем hitano, 16 авг 2014.

  1. hitano

    hitano

    Регистрация:
    16 авг 2014
    Сообщения:
    0
    Симпатии:
    0
    Проблема собственно в заголовке. Взял скрипт в сети для отправки данных из формы обратной связи. Но так как не спец, не знаю где в ней строка, которая делает обязательным заполнение поля e-mail. Из форм, где присутствует поле для мыла, данные отлично отправляются мне на почту, а в форме обратного звонка только два поля - "Имя" и "Телефон", и данные оттуда не уходят. Если добавляю поле для e-mail, то работает.

    Вот код скрипта:
    PHP:
    <?php
    function ValidateEmail($email)
    {
    $pattern '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
    return 
    preg_match($pattern$email);
    }

    if (
    $_SERVER['REQUEST_METHOD'] == 'POST')
    {
    $mailto '[email protected]';
    $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    $subject 'Заявка с сайта';
    $message 'Данные, переданные через форму обратной связи:';
    $success_url '';
    $error_url '';
    $error '';
    $eol "\n";
    $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 1024000;
    $boundary md5(uniqid(time()));

    $header 'From: '.$mailfrom.$eol;
    $header .= 'Reply-To: '.$mailfrom.$eol;
    $header .= 'MIME-Version: 1.0'.$eol;
    $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
    $header .= 'X-Mailer: PHP v'.phpversion().$eol;
    if (!
    ValidateEmail($mailfrom))
    {
    $error .= "The specified email address is invalid!\n<br>";
    }

    if (!empty(
    $error))
    {
    $errorcode file_get_contents($error_url);
    $replace "##error##";
    $errorcode str_replace($replace$error$errorcode);
    echo 
    $errorcode;
    exit;
    }

    $internalfields = array ("submit""reset""send""captcha_code");
    $message .= $eol;
    $message .= "IP Address : ";
    $message .= $_SERVER['REMOTE_ADDR'];
    $message .= $eol;
    foreach (
    $_POST as $key => $value)
    {
    if (!
    in_array(strtolower($key), $internalfields))
    {
    if (!
    is_array($value))
    {
    $message .= ucwords(str_replace("_"" "$key)) . " : " $value $eol;
    }
    else
    {
    $message .= ucwords(str_replace("_"" "$key)) . " : " implode(","$value) . $eol;
    }
    }
    }

    $body 'This is a multi-part message in MIME format.'.$eol.$eol;
    $body .= '--'.$boundary.$eol;
    $body .= 'Content-Type: text/plain; charset=ISO-8859-1'.$eol;
    $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
    $body .= $eol.stripslashes($message).$eol;
    if (!empty(
    $_FILES))
    {
    foreach (
    $_FILES as $key => $value)
    {
    if (
    $_FILES[$key]['error'] == && $_FILES[$key]['size'] <= $max_filesize)
    {
    $body .= '--'.$boundary.$eol;
    $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
    $body .= 'Content-Transfer-Encoding: base64'.$eol;
    $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
    $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
    }
    }
    }
    $body .= '--'.$boundary.'--'.$eol;
    if (
    $mailto != '')
    {
    mail($mailto$subject$body$header);
    }
    header('Location: '.$success_url);
    exit;
    }
    ?>
     
    Lasted edited by : 16 авг 2014
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.580
    Симпатии:
    1.482
    уберите проверку:
    PHP:
    if (!ValidateEmail($mailfrom))
    {
    $error .= "The specified email address is invalid!\n<br>";
    }
     
    Baco нравится это.
  3. hitano

    hitano

    Регистрация:
    16 авг 2014
    Сообщения:
    0
    Симпатии:
    0
    Спасибо, так и сделал.