- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть форма обратной связи. На данный момент регулярка проверяет на предмет правильности заполнения полей имя, email и телефон. Однако, надо оставить право за пользователем, хочет ли он оставлять свои контакты или нет, поэтому поля могут быть и пустыми.
Но на данный момент, если оставить их пустыми, скрипт ругается.
Форма:
<label for="first_name">Имя</label>
<input id="forminput" type="text" name="first_name" maxlength="50" size="30">
<label for="email">Ваш email</label>
<input id="forminput" type="text" name="email" maxlength="80" size="30">
<label for="telephone">Ваш телефон</label>
<input id="forminput" type="text" name="telephone" maxlength="30" size="30">
<label for="comments">Сообщение</label>
<textarea id="forminput" name="comments" maxlength="1000" cols="25" rows="6"></textarea>
<input type="submit" value="Отправить">
</form>
Файл send.php:
if(isset($_POST['email'])) {
$email_to = "email@mail.ru";
$email_subject = "Обращение с сайта:".$_POST['first_name']." ".$_POST['last_name'];
function died($error) {
// your error code can go here
echo "<p class=\"error\"><B>Ошибка!</B><BR>Очень жаль, но нам кажется, что вы допустили ошибки при заполнении формы. ";
echo "Эти ошибки перечислены ниже.</p><br /><br /><ul>";
echo $error."<br /><br />";
echo "</ul><p>Пожалуйста, <a href=\"#\" onClick=\"history.go(-1);return true;\">вернитесь назад</a> и исправьте указанные ошибки, чтобы отправить ваше сообщение.</p><br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['comments'])) {
died('Ваше сообщение пусто.');
}
$first_name = $_POST['first_name'];
$email_from = $_POST['email'];
$telephone = $_POST['telephone'];
$comments = $_POST['comments'];
$error_message = "";
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
if(!preg_match($email_exp,$email_from)) {
$error_message .= '<li>Поле Email заполнено неправильно.</li>';
}
$string_exp = "/^[A-Za-zа-яА-Я.'-]+$/ui";
if(!preg_match($string_exp,$first_name)) {
$error_message .= '<li>Поле <B>имя</B> заполнено некорректно.</li>';
}
if(strlen($comments) < 2) {
$error_message .= '<li>Ваше сообщение слишком короткое.</li>';
}
if(strlen($error_message) > 0) {
died($error_message);
}
$email_message = "Обращение через форму обратной связи на сайте.\n\n";
function clean_string($string) {
$bad = array("content-type","bcc:","to:","cc:","href");
return str_replace($bad,"",$string);
}
$email_message .= "Имя: ".clean_string($first_name)."\n";
$email_message .= "Фамилия: ".clean_string($last_name)."\n";
$email_message .= "Email: ".clean_string($email_from)."\n";
$email_message .= "Телефон: ".clean_string($telephone)."\n";
$email_message .= "Сообщение: ".clean_string($comments)."\n";
// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);
?>
<!-- include your own success html here -->
<p class="success"><B>Ваше сообщение отправлено!</p>
<?php
}
?>
Можно ли включить в регулярку возможность оставлять поля пустыми, но проверять когда они вводятся?
Можно, но экономичнее будет так:
if(trim($first_name) && !preg_match($string_exp,$first_name)) {
$error_message .= '<li>Поле <B>имя</B> заполнено некорректно.</li>';
}
Для этих целей лучше использовать фильтр.
Без регулярки проверяйте на пустоту.
Можно ли включить в регулярку возможность оставлять поля пустыми, но проверять когда они вводятся?
Прежде чем применять регулярку, проверяйте, не пустое ли поле.
Если пустое, то никакие проверки не применяйте, в том числе и на длину и регулярное выражение.