Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.04.2018, 20:05   #21
DanDiablo
Пользователь
 
Аватар для DanDiablo
 
Регистрация: 25.08.2015
Сообщений: 37
Репутация: 31
По умолчанию

И так, продолжаем разговор, как говорит Карлосон.
Почти все ок, настроил все проверки (еще раз благодарю за помощь!), для меня осталась одна загадка...

Если человек заполнил поле "Имя", но ошибся в поле "Тема". Допустим, символов меньше положенного. То при нажатии на кнопку "Отправить" правильно заполненные поля стираются, как этого избежать?

Видел в похожем примере вот такое решение (уже вставил в свой скрипт):

в PHP:

Код:

<?
if (count($_POST) > 0){

$errors = [];

if (isset($_POST['name'])){
    $name = trim($_POST['name']);
        if($name === ''){
        $errors[] = 'Введите имя!';
    }
        if (preg_match('/^[а-яА-ЯЁё ]+$/imu', $name) == 0){
        $errors[] = 'Имя должно быть русскими буквами!';
    }
    if (mb_strlen($name, 'UTF-8') < 4){
        $errors[] = 'Имя должно быть не меньше 4 букв!';
    }
}

В форме:

Код:

 <span class="formsDisc req">Введите имя:</span>
        <label>
            <input type="text" id="myFormName" placeholder="Введите имя:" title="Введите Ваше имя:" name="name"  pattern="^[А-Яа-яЁё\s]+$" value="<?php $name;?>">

        </label>


В примере на видео все работает, у меня же почему то правильно заполненное поле стерто вместе с ошибочно заполненным.

Пока попытался сохранить одно правильно заполненное поле.

Мой полный скрипт теперь:

Код:

<?
if (count($_POST) > 0){

$errors = [];

if (isset($_POST['name'])){
    $name = trim($_POST['name']);
        if($name === ''){
        $errors[] = 'Введите имя!';
    }
        if (preg_match('/^[а-яА-ЯЁё ]+$/imu', $name) == 0){
        $errors[] = 'Имя должно быть русскими буквами!';
    }
    if (mb_strlen($name, 'UTF-8') < 4){
        $errors[] = 'Имя должно быть не меньше 4 букв!';
    }
}

if (isset($_POST['user_email'])){
    $user_email = trim($_POST['user_email']);
    if ($user_email === '' || !filter_var($user_email, FILTER_VALIDATE_EMAIL)){
        $errors[] = 'Введите почту!';
    }
}

if (isset($_POST['tema'])){
    $tema = trim($_POST['tema']);
    if($tema === ''){
        $errors[] = 'Введите тему!';
    }
    if (!preg_match('/^[а-яА-ЯЁё ]+$/imu', $tema)){
        $errors[] = 'Тема должна быть русскими буквами!';
    }
    if (mb_strlen($tema, 'UTF-8') < 8){
        $errors[] = 'Тема должна быть не меньше 8 букв!';
    }
}

if (isset($_POST['text'])){
    $text = trim($_POST['text']);
    if($text === ''){
        $errors[] = 'Введите сообщение!';
    }
    if (mb_strlen($text, 'UTF-8') < 10){
        $errors[] = 'Сообщение должно быть не меньше 10 букв!';
    }
}

if (isset($_POST['tel'])){
    $tel = trim($_POST['tel']);
    if ($tel !== '' && !is_numeric($tel)){
        $errors[] = 'Введите телефон!';
    }
}

if (COUNT($errors) > 0 ){
        $error = 'Пожалуйста, исправьте данные ошибки: <ul><li>' . implode('</li><li>', $errors) . '</li></ul>';
    }else{
        $to = "****";
        $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
        $headers .= "From: \"".$name."\" <".$user_email.">\r\n";
        $headers .= "Reply-To: $user_email\r\n";
        $subject = "****, тема: " . htmlspecialchars($tema, ENT_QUOTES, 'utf-8');
        $message = "<b>Имя отправителя:</b>" . htmlspecialchars($name, ENT_QUOTES, 'utf-8') . "<br>
								<b>Телефон отправителя:</b> $tel <br> 
								<b>Почта отправителя:</b> $user_email <br>
								<b>Сообщение:</b> <br>" . htmlspecialchars($text, ENT_QUOTES, 'utf-8');
        $send = mail ($to, $subject, $message, $headers);
    }

}else{
    $name = '';
    $user_email = '';
    $tema = '';
    $text = '';
    $tel = '';
    $errors = [];
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Отправка письма:</title>
</head>
<body>

<div class="foms">

    <div class="address"><div><h5>Наш адрес:</h5>****, <br>***<br> тел.: *** <br>****<br><a href="mailto:*****">****</a></div></div>

    <div class="formRezult">
        <div id="result">Ждем Ваших писем!</div><div id="imgsForms"></div>
    </div>

    <form action="" class="myForm" id="myForm" method="post">

        <?php
        echo $error;
        ?>

        <span class="formsDisc req">Введите имя:</span>
        <label>
            <input type="text" id="myFormName" placeholder="Введите имя:" title="Введите Ваше имя:" name="name"  pattern="^[А-Яа-яЁё\s]+$" value="<?php $name;?>">

        </label>

        <span class="formsDisc">Введите телефон:</span>
        <label>
            <input type="tel" placeholder="Tел.: 8хххххххххх" title="Телефон: 8хххххххххх" name="tel" id="myFormTel" pattern="(8){1}([0-9]{3})([0-9]{3})([0-9]{2})([0-9]{2})">

        </label>

        <span class="formsDisc req">Введите почту:</span>
        <label>
            <input type="email" id="myFormEmail" placeholder="Введите почту:" title="Введите Вашу почту:"  name="user_email">

        </label>

        <span class="formsDisc req">Тема:</span>
        <label>
            <input type="text" id="myFormTema" placeholder="Тема сообщения:" title="Тема Вашего сообщения:" name="tema"  id="tema">

        </label>

        <span class="formsDisc req">Сообщение:</span>
        <label>
            <textarea name="text" id="myFormMessage"  placeholder="Ваше сообщение:" title="Ваше сообщение:" id="" cols="30" rows="5"></textarea>

        </label>

        <div class="buttons">

            <button type="submit" class="knopka">Отправить письмо!</button>

        </div>

        <div>

        </div>


    </form>
</div>

</body>
</html>

DanDiablo вне форума   Ответить с цитированием
Старый 25.04.2018, 20:15   #22
DanDiablo
Пользователь
 
Аватар для DanDiablo
 
Регистрация: 25.08.2015
Сообщений: 37
Репутация: 31
По умолчанию

Для тех, кто просто читает, идя по моим ошибкам:

Регулярка для проверки только на кирилицу и пробелы была изменена малость:

Код:

if (preg_match('/^[а-яА-ЯЁё ]+$/imu', $name) == 0){
        $errors[] = 'Имя должно быть русскими буквами!';
    }

Да, после букв Ёё стоит пробел и это не опечатка, без него не работает.
Проверено перед вставкой в скрипт тут

Регулярка на проверку mail была заменена на стандартный фильтр php, так как не работала вообще ни как.

Код:

if (isset($_POST['user_email'])){
    $user_email = trim($_POST['user_email']);
    if ($user_email === '' || !filter_var($user_email, FILTER_VALIDATE_EMAIL)){
        $errors[] = 'Введите почту!';
    }
}

Про
Код:

FILTER_VALIDATE_EMAIL

читаем тут
DanDiablo вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка формы ts-alan ASP.NET 0 26.05.2015 22:21
Отправка формы userrrr PHP 52 28.12.2014 19:44
отправка формы weder PHP 4 02.05.2010 21:00
отправка формы L_M PHP 5 28.07.2009 12:01


00:14.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru