За последние 24 часа нас посетили 17529 программистов и 1310 роботов. Сейчас ищут 1165 программистов ...

Проверка на заполнение полей

Тема в разделе "Работа с почтой", создана пользователем Stereomax, 22 авг 2013.

  1. Stereomax

    Stereomax Активный пользователь

    С нами с:
    11 фев 2012
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    куда? стоять!чьим будешь?=)
    Люди помогите!
    Как мне сделать,чтобы при нажатии на кнопку отправки,
    При незаполненных полях (пустых) браузер выдавал сообщение,типа:
    _вы не ввели имя__или__вы не ввели почту???
    Вот этот код надо подшаманить:

    <?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 = 'ТУТ-МОЯ-ПОЧТА@ya.ru';
    $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    $subject = 'Website form';
    $message = 'Сообщение со страницы t2:';
    $success_url = './ok-main.php';
    $error_url = './error.php';
    $error = '';
    $eol = "\r\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'] == 0 && $_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;
    }
    ?>

    Что здесь надо доработать?Или дописать?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну надо проверить, прислали или не прислали, а потом вывести.

    Судя по вопросу, вам надо нахаляву за вас переделать обработчик формы?
     
  3. Stereomax

    Stereomax Активный пользователь

    С нами с:
    11 фев 2012
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    куда? стоять!чьим будешь?=)
    Эта форма работает,никакой халявы мне не надо.
    При незаполненных полях мне на почту приходит письмо-пустое.
    Я вот только не знаю как сделать,чтобы письмо не отсылалось (при пустых полях),а в браузере выводилось
    сообщение о незаполненности формы!
    С php не дружу,поэтому и попросил тут совета или помощи.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.769
    Адрес:
    :сердА
    Можно решить на стороне браузера. Атрибут required="true" у поля ввода ) Но все равно шаловливые ручонки могут выпилить атрибут из верстки и вбить туда что угодно. Однако в 95% случаев этого достаточно, чтобы избежать ложного вызова скрипта. Браузер просто не даст отослать форму, пока поле не будет заполнено.
     
  5. Stereomax

    Stereomax Активный пользователь

    С нами с:
    11 фев 2012
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    куда? стоять!чьим будешь?=)
    Не понял ничего,если не трудно-можно все это визуально показать в коде?
    Куда и что?
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.769
    Адрес:
    :сердА
    Выложи код формы, в которую вписывать надо инфу.

    Добавлено спустя 1 минуту 13 секунд:
    А вообще безмерно радует средняя квалификация новичков тут. "Я работаю с простынями кода, но понятия не имею, как они работают, сделайте то-то плз!"
     
  7. Stereomax

    Stereomax Активный пользователь

    С нами с:
    11 фев 2012
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    куда? стоять!чьим будешь?=)
    :)
    Работаю не с простынями,а с конструктором,который сам код и образует.
    Пример формы на странице тут
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.769
    Адрес:
    :сердА
    [​IMG]

    [​IMG]

    Добавлено спустя несколько мгновений:
    Формочка, гляжу, судя по коду, тоже генератором сделана. В общем просите генератор, чтобы он свой код и правил. Или учитесь сами писать.
     
  9. Stereomax

    Stereomax Активный пользователь

    С нами с:
    11 фев 2012
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    куда? стоять!чьим будешь?=)
    :) Извиняюсь за нубство...
    Чтобы не ошибиться,выложу весь код страницы:(ЖАЛЬ СПОЙЛЕРА ЗДЕСЬ НЕТ).
    <?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 = 'моя@почта';
    $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    $subject = 'Website form';
    $message = 'Сообщение со страницы zzz';
    $success_url = '';
    $error_url = '';
    $error = '';
    $eol = "\r\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'] == 0 && $_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;
    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Language" content="ru">
    <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
    <title>No name</title>
    <meta name="generator" content="">
    <link href="Project_X1.css" rel="stylesheet" type="text/css">
    <link href="zzz.css" rel="stylesheet" type="text/css">
    <script type="text/javascript">
    function ValidateindexForm1(theForm)
    {
    var regexp;
    if (theForm.indexEditbox1.value == "")
    {
    alert("вы не ввели имя!");
    theForm.indexEditbox1.focus();
    return false;
    }
    if (theForm.indexEditbox1.value.length < 3)
    {
    alert("вы не ввели имя!");
    theForm.indexEditbox1.focus();
    return false;
    }
    if (theForm.indexEditbox1.value.length > 20)
    {
    alert("вы не ввели имя!");
    theForm.indexEditbox1.focus();
    return false;
    }
    if (theForm.indexEditbox2.value == "")
    {
    alert("введите мыло");
    theForm.indexEditbox2.focus();
    return false;
    }
    if (theForm.indexEditbox2.value.length < 4)
    {
    alert("введите мыло");
    theForm.indexEditbox2.focus();
    return false;
    }
    if (theForm.indexEditbox2.value.length > 30)
    {
    alert("введите мыло");
    theForm.indexEditbox2.focus();
    return false;
    }
    return true;
    }
    </script>
    </head>
    <body>
    <div id="wb_indexForm1" style="position:absolute;left:171px;top:199px;width:191px;height:163px;z-index:3;">
    <form name="indexForm1" method="post" action="<?php echo basename(__FILE__); ?>" enctype="multipart/form-data" id="indexForm1" onsubmit="return ValidateindexForm1(this)">
    <input type="text" id="indexEditbox1" style="position:absolute;left:34px;top:31px;width:94px;height:19px;line-height:19px;z-index:0;" name="имя" value="" placeholder="&#1080;&#1084;&#1103;">
    <input type="email" id="indexEditbox2" style="position:absolute;left:34px;top:70px;width:94px;height:19px;line-height:19px;z-index:1;" name="почта:" value="" placeholder="&#1084;&#1099;&#1083;&#1086;">
    <input type="submit" id="indexButton1" name="" value="Submit" style="position:absolute;left:85px;top:128px;width:96px;height:25px;z-index:2;">
    </form>
    </div>
    </body>
    </html>


    Добавлено спустя 3 минуты 21 секунду:
    О !
    Заработало,не пойму ни че,ведь делал все тоже самое и не работало.
    ппц,народ дико извиняюсь,но честно не пойму-ведь не работало,а тут вдруг бац и все ок.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.769
    Адрес:
    :сердА
    Учитесь сами программировать, блин.. А то потом таких чудес будет огого сколько. А вы не контроллируете ни строчки кода. Все на магии работает.

    Зато есть бб-код
    Код (Text):
    1. , который вашу простыню спрячет.
     
  11. Stereomax

    Stereomax Активный пользователь

    С нами с:
    11 фев 2012
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    куда? стоять!чьим будешь?=)
    Хоть и говорят учиться никогда не поздно,но боюсь не в моем случае)).
    Спс,за потраченное время!
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну всегда можно нанять профессионала ;)