Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Mikhail_Z
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
1

Отправка из формы на почту

02.02.2016, 15:23. Просмотров 394. Ответов 6
Метки нет (Все метки)

Приветствую! Прошу советов

Сделал для собственных нужд сайт html/css - это первая моя практически полезная работа. Хочу написать для него админку, реализовать MVC - чтобы можно было записать в свой актив собственный завершенный проект.
http://qslprint.ru

Скрипт написал для отправки письма-заказа с сайта на свою почту. Вот в связи с этим у меня вопросы:
1. При обновлении браузера - браузер повторно отправляет письмо. А не хотелось бы.
1.1. Попытался сделать
sleep(5); unset($_POST, $to, $subject, $body, $headers);
не помогло. Видать, где-то в другом месте информация лежит. Можно ли ее удалить unset - чтобы письмо не отправлялось повторно?
1.2. Делать редирект на другую страницу с последующим возвратом на страницу заказа?
Другие варианты есть?

2. Как-то можно приаттачить загруженный файл картинки к письму? Я, конечно, и с сервера могу скачать, но хотелось бы, чтобы в письме была картинка. Тег IMG вставить в тело письма?

3. Безопасность. Я сделал фильтрацию по типу при загрузке, потом в директорию FILES поместил .htaccess :
php_flag engine 0 AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp
потом еще одну директорию FILES - и уже в нее идет загрузка из формы. Этого достаточно?

4. Ну и корректность самого кода,
учитывая, что это у меня первые шаги (файл во вложении - order.php в архиве)

Спасибо!
0
Вложения
Тип файла: rar order.rar (6.7 Кб, 3 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2016, 15:23
Ответы с готовыми решениями:

Отправка формы на почту
Помогите пожалуйста! хочу сделать небольшой сайт опрос( для друзей), но...

Отправка формы на почту
Здравствуйте, необходимо отправить форму на почту, написал HTML и PHP код, при...

Отправка формы на почту
Здравствуйте, создал форму отправки данных, написал код на PHP, но все равно не...

Отправка формы на почту
Доброго времени суток. Подскажите кто, где можно взять пример формы (т.е....

Отправка формы на почту
Всем привет. Есть скрипт отправки формы на почту. Три поля и фото.Но работает...

6
Mikhail_Z
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
02.02.2016, 15:31  [ТС] 2
Вставлю код сюда, чтобы не скачивать архив
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<?php
 
/*Обработчик формы*/
    // Информация о заказчике
    $call =         strip_tags($_POST[call]);
    $email =        strip_tags($_POST[email]);
    $surname =      strip_tags($_POST[surname]);
    $name =         strip_tags($_POST[name]);
    $patr_name =    strip_tags($_POST[patr_name]);
    $adres =        strip_tags($_POST[adres]);
    
    $qsl_url =      strip_tags($_POST[qsl_url]);    // Ссылка на оформление QSL
    // Информация на карточке
    $qsl_call =     strip_tags($_POST[qsl_call]);   // Основной позывной на QSL
    $qsl_second_call = str_replace("=", "<br>", strip_tags($_POST[qsl_second_call]));   // Дополнительные позывные на QSL
    $qsl_contry =   strip_tags($_POST[qsl_contry]);     // Страна DXCC
    $qsl_waz =      strip_tags($_POST[qsl_waz]);    // Zone WAZ
    $qsl_itu =      strip_tags($_POST[qsl_itu]);    // Zone ITU
    $qsl_rda =      strip_tags($_POST[qsl_rda]);    // RDA or OBL
    $qsl_qthloc =   strip_tags($_POST[qsl_qthloc]); // QTH-локатор
    $qsl_tx =       str_replace("=", "<br>", strip_tags($_POST[qsl_tx]));   // Информация Tx/Rx/TRCVR/ANT/Power
    $qsl_name =     strip_tags($_POST[qsl_name]);   // Фамилия, имя на английском языке
    $qsl_adres =    str_replace("=", "<br>", strip_tags($_POST[qsl_adres]));    // Почтовый адрес на английском языке
    $qsl_email =    strip_tags($_POST[qsl_email]);  // E-mail для публикации на QSL
    $qsl_other =    str_replace("=", "<br>", strip_tags($_POST[qsl_other]));    // Иная информация для публикации на QSL
    $note =         str_replace("=", "<br>", strip_tags($_POST[note])); //Примечание к заказу
    
    
    //Информация о заказе (задается списками)
    $qsl_var = ""; // Вариант оформления QSL
    $qsl_tir = ""; // Тираж QSL
    $qsl_back = ""; // Вариант оформления оборота полноцветной QSL или лицевой стороны двухкрасочной QSL
    
    
    if ($_POST[qsl_var] == "e20"){
        $qsl_var="«Эконом» 2+0";
    }elseif ($_POST[qsl_var] == "e40"){
        $qsl_var="«Эконом» 4+0";
    }elseif ($_POST[qsl_var] == "e42"){
        $qsl_var="«Эконом» 4+2";
    }else{$qsl_var="Не выбрано";}   
    
    if ($_POST[qsl_tir] == "none"){
        $qsl_tir="Не выбрано";
    }else{$qsl_tir="$_POST[qsl_tir] экз.";}
 
    if ($_POST[qsl_back] == "none"){
        $qsl_back="Не выбрано";
    }elseif ($_POST[qsl_back] == "other"){
        $qsl_back="Свой вариант";
    }else{$qsl_back=$_POST[qsl_back];}  
    
    // Подтверждение оплаты 
    
    if ($_POST[garant] == "garant") {
        $garant="Оплату гарантирую";
    }else{$garant="Нет гарантии оплаты";}   
    
    
// Функция загрузки файлов
    function upload_check_file($name, $size, $type, $new_name){
        $count = count($type);
        if ((empty($_FILES[$name]) == false) && ($_FILES[$name]['size'] > 100)){
            if ($_FILES[$name]['size'] < $size){
                
                    for($i=0; $i < $count; $i++){
                    
                        if ($_FILES[$name][type] == $type[$i]){
                            if(copy ($_FILES[$name]['tmp_name'], $new_name)){
                                return $upload_check_file_report = "Файл успешно загружен";
                            }else{return $upload_check_file_report = "ОШИБКА загрузки файла";}
                    
                        }elseif(($i == $count-1) && ($_FILES[$name][type] != $type[$count-1])){return $upload_check_file_report = "ОШИБКА. Вы пытаетесь загрузить файл неразрешенного типа";}
                    }
                    
                    
            }else{return $upload_check_file_report = "ОШИБКА. Вы пытаетесь загрузить файл слишком большого объема";}
            
        }else{return $upload_check_file_report ="Вы не загружали файл";}
        
    }
    
//Загрузка файлов
$file_size = 10*1024*1024;
$file_type = array('application/msword', 'application/pdf', 'image/jpeg', 'image/pjpeg', 'image/bmp', 'image/gif', 'image/x-pcx', 'image/tiff', 'image/x-tiff', 'image/png');
$qsl_back_file = "files/files".$call."_".$_FILES['qsl_back_file']['name'];
$qsl_face_file = "files/files".$call."_".$_FILES['qsl_face_file']['name'];
 
 
 
$qsl_back_file_report = upload_check_file('qsl_back_file', $file_size, $file_type, $qsl_back_file);
    if (isset($qsl_back_file_report)){$qsl_back_file_report = " class='grey'>Файл оформления оборота QSL. ".$qsl_back_file_report;}
$qsl_face_file_report = upload_check_file('qsl_face_file', $file_size, $file_type, $qsl_face_file);
    if (isset($qsl_face_file_report)) {$qsl_face_file_report = " class='grey'>Файл фотографии (рисунка) на лицевую сторону QSL. ".$qsl_face_file_report;}
 
 
 
        
// Отправка e-mail
 
    $subject = "Заказ QSL с сайта qslprint.ru";
    $to = "radiogazeta73@yandex.ru, mihailz@bk.ru";
    $headers = "From: $email\r\n";
    $headers .= "Content-type: text/html\r\n";
 
    $body = <<<HTML
    <h4>Данные о заказчике QSL:</h4> 
    <p> <strong>Позывной: </strong> $call <br>
        <strong>e-mail: </strong> $email <br>
        <strong>Фамилия: </strong> $surname <br>
        <strong>Имя: </strong> $name <br>
        <strong>Отчество: </strong> $patr_name <br>
        <strong>Почтовый адрес: </strong> $adres <br>
    </p>
    <hr>
    <h4>Данные о заказе QSL:</h4> 
    <p><strong>Вид QSL: </strong>
        $qsl_var
    </p>
    <p><strong>Тираж QSL: </strong>
        $qsl_tir
    </p>
    <p><strong>Оформление оборота 4+2 / лица 2+0: </strong>
        $qsl_back
    </p>
    
    </p>
    <p><strong>Ссылка на оформление оборота 4+2 / лица 2+0: </strong>
        $qsl_url
    </p>
    
    <hr>
    <h4>Информация на QSL:</h4> 
    <p> <strong>Основной позывной: </strong> $qsl_call <br>
        <strong>Дополнительные позывные: </strong> $qsl_second_call <br>
        <strong>Страна DXCC: </strong> $qsl_contry <br>
        <strong>Zone DX (WAZ): </strong> $qsl_waz <br>
        <strong>Zone ITU: </strong> $qsl_itu <br>
        <strong>OBL или RDA: </strong> $qsl_rda <br>
        <strong>QTH-локатор: </strong> $qsl_qthloc <br>
        <strong>Информация Tx/Rx/TRCVR/ANT/Power: </strong> $qsl_tx <br>
        <strong>Фамилия, имя на английском языке: </strong> $qsl_name <br>
        <strong>Почтовый адрес на английском языке: </strong> $qsl_adres <br>
        <strong>E-mail для публикации на QSL: </strong> $qsl_email <br>
        <strong>Иная информация для публикации на QSL: </strong> $qsl_other <br>
        <strong>Примечания к заказу: </strong> $note <br>
    </p>
    
    <!-- Прикрепленные файлы -->
    
    <h4>Заказчик загрузил файлы</h4> 
    
    <p><strong>Оформление оборота 4+2 / лица 2+0: </strong>
        $qsl_back_file
    </p>
    <p><strong>Фотографию на лицевую сторону QSL: </strong>
        $qsl_face_file
    </p>
    
    
    <h5>$garant</h5>
        
HTML;
 
//Проверка на чекбокс "оплату гарантирую", форма отправляется если он поставлен. Т.О. запрещает отправку формы при обновлении страницы
        if ($_POST[garant] == "garant"){ 
            if (mail($to, $subject, $body, $headers)){
            $report = " class='green'>Письмо успешно отправлено. В течении суток Вам придет подтверждение на указанный Вами e-mail: $email";
            $qsl_face_file_report_submit = $qsl_face_file_report; // Иначе до отправки формы выводится сообщение о том, что файл не загружен
            $qsl_back_file_report_submit = $qsl_back_file_report;
            sleep(5); 
            unset($_POST, $to, $subject, $body, $headers); // Через 5 секунд разустанавливается POST, чтобы форма не отправлялась при обновлении страницы
            
            }
        }
        
?>
HTML5
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
            <form name="order_qsl" enctype="multipart/form-data" method="POST">
                        <div class="six columns form3col">
                        
                        <legend>Пожалуйста, заполните данные о себе:</legend>
                        <p class="red">Пункты отмеченные * обязательны для заполнения</p>
                                <label for="call">Позывной сигнал<span class="red">*</span></label>     <input type="text" name="call"  id="call"       required placeholder="Ваш позывной"         <?= $call ?>"       ><br>
                                <label for="email">Ваш e-mail<span class="red">*</span></label>         <input type="email" name="email"    id="email"      required placeholder="Ваш e-mail"       <?= $email ?>"      ><br>
                                <label for="surname">Фамилия<span class="red">*</span></label>          <input type="text" name="surname"   id="surname"    required placeholder="Ваша фамилия"     <?= $surname ?>"    ><br>
                                <label for="name">Имя<span class="red">*</span></label>                 <input type="text" name="name"      id="name"       required placeholder="Ваше имя"         <?= $name ?>"       ><br>
                                <label for="patr_name">Отчество<span class="red">*</span></label>       <input type="text" name="patr_name" id="patr_name"  required placeholder="Ваше отчество"    <?= $patr_name ?>"  ><br>
                                
                                <label for="adres">Полный почтовый адрес, индекс для пересылки тиража QSL<span class="red">*</span></label>
                                <textarea type="textarea" class="u-full-width" name="adres" id="adres" required placeholder="Улица, дом, квартира, город, почтовый индекс"><?= $adres ?></textarea><br>
                                                        
                                                
                        <legend>Сколько и каких именно QSL вы хотите заказать?</legend>
                                
                                <label for="qsl_var">Я хочу заказать QSL<span class="red">*</span></label>
                                 <select name="qsl_var"  id="qsl_var" required>
                                    <option value="none">Нажмите для выбора</option>
                                    <option value="e20">«Эконом» 2+0</option>
                                    <option value="e40">«Эконом» 4+0</option>
                                    <option value="e42">«Эконом» 4+2</option>
                                <!--    <option value="el42">«Элит» 4+2</option> -->
                                 </select>
                                 
                                 <label for="qsl_tir">Я хочу заказать QSL тиражом:<span class="red">*</span></label>
                                 <select name="qsl_tir" id="qsl_tir" required>
                                    <option value="none">Нажмите для выбора</option>
                                    <option value="2000">2000 экз.</option>
                                    <option value="4000">4000 экз.</option>
                                    <option value="6000">6000 экз.</option>
                                 </select>
                                 
                                <label for="qsl_back">Оформление оборота полноцветной QSL / лицевая сторона двухкрасочной QSL:<span class="red">*</span></label>
                                 <select name="qsl_back"  id="qsl_back" required>
                                    <option value="none">Нажмите для выбора</option>
                                    <option value="CK-01">Вариант CK-01</option>
                                    <option value="CK-02">Вариант CK-02</option>
                                    <option value="CK-03">Вариант CK-03</option>
                                    <option value="CK-04">Вариант CK-04</option>
                                    <option value="CK-05">Вариант CK-05</option>
                                    <option value="CK-06">Вариант CK-06</option>
                                    <option value="CK-07">Вариант CK-07</option>
                                    <option value="CK-08">Вариант CK-08</option>
                                    <option value="other">Свой вариант</option>
                                 </select> 
                                <p>*Ознакомиться с предлагаемыми вариантами оборота QSL можно в разделе <a href="variant.php" target="_blank">«Варианты QSL»</a></p> 
                                
                                
                                <label for="qsl_url">Ссылка на свой вариант оформления оборота QSL (лицевой стороны двухкрасочной QSL):</label>
                                <input type="text" name="qsl_url" value="http://" id="qsl_url">
                                
                                <label for="qsl_back_file">Загрузить файл — эскиз оформления оборота QSL (лицевой стороны двухкрасочной QSL):</label>
                                <input type="file" name="qsl_back_file" id="qsl_back_file">
                                
                                <label for="qsl_face_file">Загрузить фотографию (рисунок) для оформления QSL (лицевой стороны полноцветной QSL):</label>
                                <input type="file" name="qsl_face_file" id="qsl_face_file"> 
                                
                                <p class="grey">Загрузить можно файлы с расширением .doc, .pdf, .psd, .jpg, .gif, .tif, .png, .bmp, .pcx объемом не более 10 МБ. 
                                Если у вас имеется файл с другим расширением, обращайтесь по e-mail: mihailz@bk.ru</p>
                                
                                
                                                            
                        </div>
                        
                        <div class="six columns form3col">
                        
                        <legend>Информация для размещения на QSL</legend>
                        
                            
                        
                                <label for="qsl_call">Основной позывной:<span class="red">*</span></label>  
                                <input type="text" class="u-full-width" name="qsl_call" id="qsl_call" required placeholder="Основной позывной" value="<?= $qsl_call ?>"  ><br>
                                
                                <label for="qsl_second_call">Дополнительные позывные (.../P, .../M, и т.п.):</label>    
                                <textarea type="textarea"  class="u-full-width" name="qsl_second_call" id="qsl_second_call" placeholder="Если нет необходимости в этом или в следущих пунктах - поставьте прочерк"><?= $qsl_second_call ?></textarea><br>
                        
                                <label for="qsl_contry">Страна DXCC:</label>    
                                <input type="text" class="u-full-width" name="qsl_contry" id="qsl_contry" placeholder="Страна DXCC"  value="<?= $qsl_contry ?>"  ><br>
                                
                                <label for="qsl_waz">Zone DX (WAZ):</label> 
                                <input type="text" class="u-full-width" name="qsl_waz" id="qsl_waz" placeholder="Zone DX (WAZ)" value="<?= $qsl_waz ?>"><br>
                                
                                <label for="qsl_itu">Zone ITU:</label>  
                                <input type="text" class="u-full-width" name="qsl_itu" id="qsl_itu" placeholder="Zone ITU" value="<?= $qsl_itu ?>"><br>
                                
                                <label for="qsl_rda">OBL или RDA:</label>   
                                <input type="text" class="u-full-width" name="qsl_rda" id="qsl_rda" placeholder="OBL или RDA" value="<?= $qsl_rda ?>"><br>
                                
                                <label for="qsl_qthloc">QTH-локатор:</label>    
                                <input type="text" class="u-full-width" name="qsl_qthloc" id="qsl_qthloc" placeholder="QTH-локатор" value="<?= $qsl_qthloc ?>"><br>
                                
                                <label for="qsl_tx">Информация Tx/Rx/TRCVR/ANT/Power:</label>
                                <p class="red">Для разбиения строк используйте символ = </p>
                                <textarea type="textarea"  class="u-full-width" name="qsl_tx" id="qsl_tx" placeholder="Информация = Tx/Rx/TRCVR/ANT/Power"><?= $qsl_tx ?></textarea><br>
                                
                                <label for="qsl_name">Фамилия, имя на английском языке:</label>
                                <input type="text" class="u-full-width" name="qsl_name" id="qsl_name" placeholder="Фамилия, имя" value="<?= $qsl_name ?>"><br>
                                
                                <label for="qsl_adres">Почтовый адрес на английском языке:</label>
                                <textarea type="textarea"  class="u-full-width" name="qsl_adres" id="qsl_adres" placeholder="Почтовый адрес на английском языке"><?= $qsl_adres ?></textarea><br>
                                
                                <label for="qsl_email">E-mail для публикации на QSL:</label>
                                <input type="text" name="qsl_email" id="qsl_email" placeholder="E-mail" value="<?= $qsl_email ?>"><br>
                                                                
                                <label for="qsl_other">Иная информация для публикации на QSL:</label>
                                <textarea type="textarea"  class="u-full-width" name="qsl_other" id="qsl_other" placeholder="Иная = информация для публикации = на QSL"><?= $qsl_other ?></textarea><br>
                                
                                <label for="note">Примечания к заказу:</label>
                                <textarea type="textarea"  class="u-full-width" name="note" id="note"><?= $note ?></textarea><br>
                                
                                <input type="checkbox" name="garant" value="garant" required> Оплату гарантирую<span class="red">*</span><br>
                                
                                <button type="submit" class="button-primary">ЗАКАЗАТЬ</button>
                                <button type="reset">Очистить форму</button>
                                <p>Процесс отправки заказа может занять некоторое время, что зависит от объема загружаемых фотографий.</p>
                            
                            
                            
                        </div>
                        </form>
                        
                        <!-- Вывод сообщений из формы -->
                        <p <?= $report; ?></p>
                        
                        <p <?= $qsl_back_file_report_submit;  ?></p>
                        <p <?= $qsl_face_file_report_submit;  ?></p>
0
Para bellum
Эксперт PHP
4187 / 3114 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
02.02.2016, 15:45 3
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
Можно ли ее удалить unset - чтобы письмо не отправлялось повторно?
Нельзя. При каждом запросе запускается новый экземпляр скрипта. И он принимает все данные из формы по-новой.
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
Делать редирект на другую страницу с последующим возвратом на страницу заказа?
Так и делается.
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
Как-то можно приаттачить загруженный файл картинки к письму? Я, конечно, и с сервера могу скачать, но хотелось бы, чтобы в письме была картинка.
Используйте уже готовую библиотеку для отправки писем, чтобы не мучиться. Например, phpMailer. Он и вложения поддерживает.
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
потом в директорию FILES поместил .htaccess
Зачем? Если в php скрипте есть нормальная фильтрация, по Mime-типу, то никакого .htaccess не нужно.
1
Mikhail_Z
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
02.02.2016, 15:55  [ТС] 4
А других вариантов, чтобы не отправлялись данные после обновления окна, кроме редиректа, нет?

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

Еще вопрос: Например, все резко бросились заполнять форму и отправлять ее. Если одновременно будет нажата кнопка "Отправить" - данные не перепутаются? Сессий же и авторизаций никаких не устанавливается. Как сервер разбирается, что откуда пришло?
0
Jodah
Эксперт PHP
2836 / 2471 / 1053
Регистрация: 01.08.2012
Сообщений: 8,759
02.02.2016, 15:59 5
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
Ну и корректность самого кода
$_POST['call'], а не $_POST[call]. И остальные по аналогии.
0
Para bellum
Эксперт PHP
4187 / 3114 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
02.02.2016, 16:13 6
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
А других вариантов, чтобы не отправлялись данные после обновления окна, кроме редиректа, нет?
Можно какую-нибудь уникальную строку генерировать для формы и потом сверять. Но это перебор.
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
По поводу фильтрации по типу - читал где-то, что это не спасает, что в любой тип можно вставить исполняемый код, и нужно именно в директории запрещать выполнение скриптов.
Попробуйте, вставьте. Вставить можно, но он безобиден, ибо php-интерпретатор его не обработает.
Цитата Сообщение от Mikhail_Z Посмотреть сообщение
данные не перепутаются?
Могут и перепутаться, если Вы файл какой-то неуникальный создаёте/изменяете. Поэтому имена загружаемым файлам лучше делать уникальными.

Добавлено через 34 секунды
А данные запросов никак не перепутаются. Сервер знает, что делает.
0
Mikhail_Z
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
03.02.2016, 06:55  [ТС] 7
Спасибо всем ответившим! Код подправил, теперь переделаю функцию, чтобы она корректно выводила сообщения об ошибках.
0
03.02.2016, 06:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2016, 06:55

Отправка формы-анкеты на почту
Здравствуйте, сделал анкету в html, теперь пытаюсь понять как реализовать...

Отправка данных из формы на почту
Доброго времени суток! У меня есть форма. ответы с этой формы приходят на...

Отправка формы с сайта на почту
Здравствуйте! Помогите пожалуйста. Очень срочно нужно. Буду очень благодарен. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru