Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 5

Почтовая форма

12.12.2011, 12:19. Показов 2202. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вобщем есть почтовая форма.

Все работает прекрасно, кроме одной маленькой вещи.

Когда пользователь нажимает кнопочку отправить, форма отправляется в любом случае.

Надо как-то написать, чтобы если все поля заолнены - отправка, если нет - то нет.

вот мой код

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
 
  $name = $_REQUEST['name'] ;
  $fam = $_REQUEST['fam'] ;
  $email = $_REQUEST['email'] ;
  $country = $_REQUEST['country'] ;
  $tel = $_REQUEST['tel'] ;
  $city = $_REQUEST['city'] ;
  $message = $_REQUEST['message'] ;
  
 
$message = "
        имя:     $name  \n
        фамилия:     $fam  \n
        mail:       $email  \n
        страна:       $country  \n
        город:     $city  \n
        телефон:     $tel  \n
        сообщение: $message \n";
 
  mail( "мой мейл",   "Сообщение с сайта",
   $message, "From: $email"
   );
 
if ( ! empty($_POST['contact']))
{
    $valid = array
    (
        'name'    => array('/(.+){2,}/', 'Ваше имя введено неверно.'),
        'fam'    => array('/(.+){2,}/', 'Ваша фамилия введена неверно.'),
        'tel'    => array('/(.+){5,}/', 'Номер телефона введен неверно'),
        'city'    => array('/(.+){3,}/', 'Название города введено неверно'),
        'email'   => array('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', 'Введите правильный e-mail, пожалуйста.'),
        'message' => array('/(.+){10,}/', 'Вы не можете отправить пустое сообщение.'),
    );
    
    $errors = array();
    
    foreach ($valid as $field => $data)
    {
        $regex = $data[0];
        $message = $data[1];
        
        $input = trim($_POST[$field]);
        
        if (empty($input) OR ! preg_match($regex, $input))
        {
            $errors += array($field => $message);
        }
    }
    
    $result = empty($errors) ? 'success' : 'errors';
    
    echo json_encode(array
    (
        'result' => $result,
        'errors' => $errors,
    ));
    exit;
}
 
?>
Полагаю проблема в этой строке,

mail( "мой мейл", "Сообщение с сайта",
$message, "From: $email"
);

надо дописать буквально полстрочки, а что написать не знаю. Уже все перепробовал, либо отправляется как есть вместе с незаполненными полями. Либо вобще не отправляется.

Скрипт от этой формы

Создатель формы любезно не дописал самую важную часть кода, я дописал, но как-то не очень она у меня работает правильно Хотя во фронтенде, все ок.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2011, 12:19
Ответы с готовыми решениями:

Почтовая форма
есть форма &lt;div class=&quot;overlay&quot; id=&quot;overlay&quot; style=&quot;display:none;&quot;&gt;&lt;/div&gt; &lt;div class=&quot;nonebox&quot;...

Почтовая форма,кракозябры
Имеется почтовая форма contact.php, содержимое ниже, приходят кракозябры,кодировка UTF без ВОМ. &lt;?php if(!defined('access') or...

Почтовая форма не работает на сайте
Добрый вечер, форумчане! Столкнулся с проблемой. Нашел на просторах РУнета форму для отправки сообщения на почту. Все заработало, но через...

4
8 / 8 / 0
Регистрация: 12.12.2011
Сообщений: 18
12.12.2011, 21:32
Решения два:
1. Проверка полей формы до отправки. Использование JavaScript. За это отвечает:
<FORM ACTION="какой-то файл php" NAME="testform" onSubmit="return TestDataCheck()">

TestDataCheck() - Возвращает результат проверки.

2. Проверка данных из формы в php файле, на который идет субмит ACTION="какой-то файл php" .
В нём ловим либо $_GET['name'] и прочие, либо $_POST['name'] и прочие. Далее проверяем с использованием регулярных выражений и прочей фигни. Если проверка не пройдена. Прерываем и выводим сообщение.

В общем выбор за Вами. 1-й вариант может работать не во всех браузерах. 2-й не очень удобен для пользователя. Выбирайте, а там уже и подскажу
0
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 5
13.12.2011, 11:49  [ТС]
MadChildNSK проверка формы осуществляется уже в коде прикрепленном выше, он задействуется джаваскриптом.

Я знаю что нужно как-то дописать

$result = mail { мои данные и тема сообщения}, а как это написать не знаю.

Проблема решается одной строчкой... я только не знаю как ее написать.
0
 Аватар для Taras_Z
102 / 86 / 5
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
13.12.2011, 17:14
может if(!empty($result));
я токо недавно начал учит php поетому не обещаю что код правильний
0
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 5
13.12.2011, 18:21  [ТС]
написал вот так, не сработало вобще не посылает ничего и никуда
PHP
1
2
3
4
5
6
if(!empty($result)) {
 
  mail( "mymail@gmail.com",   "message",
   $message, "From: $email"
   );
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2011, 18:21
Помогаю со студенческими работами здесь

Почтовая форма PHP со всплывающими окнами
Здравствуйте, дорогие друзья! Мне нужна почтовая форма, точней она у меня есть, можно ли переделать этот код так, чтобы...

Почтовая форма с автоматическим получением темы письма
Добрый вечер, форумчане. Обрисую ситуацию на примере. Есть три кнопки: А, В, С. При нажатии на каждую кнопку появляется почтовая форма с...

denwer и почтовая рассылка
можно ли используя denwer сделать рассылку на e-mail??? пробовал функцию mail, на почту ничего неприходит...

Почтовая Рассылка Яницкого Александра
суть проблемы нужно было добавить пару полей в рассылку а именно Статистика(рассылки писем) и Дату отправки вроде все сделал правильно...

Как сделать чтоб форма обратной связи не отправляла письмо если форма не заполнена
Добрый день. Подскажите пожалуйста как сделать чтоб форма обратной связи не отправляла письмо если форма не заполнена.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru