За последние 24 часа нас посетили 18227 программистов и 1651 робот. Сейчас ищут 1605 программистов ...

Можно ли поправить форму обратной связи?

Тема в разделе "Сделайте за меня", создана пользователем zuniga, 2 фев 2017.

  1. zuniga

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

    С нами с:
    2 апр 2010
    Сообщения:
    8
    Симпатии:
    1
    Доброй ночи, есть php форма обратной связи, которую я поставил на сайт. Все бы ничего, но в форме есть графа "ваш емэйл", так вот, после того как пользователь все заполнит и отправит письмо, то оно отправляется от имени почтового ящика юзера, который он указал, а многие почтовые сервера сегодня сделали запрет на подобные действия, то есть они не допускают чтобы со сторонних серверов отправлялись письма от имени ихних почтовых ящиков. В общем мне нужно решить данную проблему. Сейчас когда письмо приходит ко мне на ящик, оно выглядит так: от кого: pupkin@gmail.com через 8009.us-imm-node1b.000webhost.io , как видите в начале стоит адрес pupkin@gmail.com. В общем можно ли сделать так, чтобы pupkin@gmail.com и т.д. не вставлялось в поле "от кого"? Потому что часто из за этого не доходят письма. Можно конечно взять платный хостинг, прописать все зоны и т.д., но может быть можно что то подправить в коде? Скажите что нужно исправить в форме обратной связи чтобы решить подобную проблему? В ней 2 файла index и validator.php . Вот собственно ихние коды:

    Код (Text):
    1. <?php
    2.  
    3. session_start();
    4.  
    5. //error_reporting(E_ALL);
    6. //ini_set('display_errors', 'On');
    7.  
    8. require_once 'validator.php';
    9.  
    10. $validator = new Validator();
    11.  
    12. $validator->set_error_delimiters('<div class="error">', '</div>');
    13.  
    14. //Задаем правила валидации
    15. $rules = array(
    16.     array(
    17.         'field' => 'user_name',
    18.         'label' => 'Ваше имя',
    19.         'rules' => array(
    20.                         'trim' => '', //Обрезаем пробелы по бокам
    21.                         'strip_tags' => '', // Удаляем HTML и PHP теги
    22.                         'required' => 'Поле %s обязательно для заполнения'
    23.                     )
    24.     ),
    25.     array(
    26.         'field' => 'user_email',
    27.         'label' => 'Ваш e-mail адрес',
    28.         'rules' => array(
    29.                         'trim' => '',
    30.                         'required' => 'Поле %s обязательно для заполнения',
    31.                         'valid_email' => 'Поле %s должно содержать правильный email-адрес'
    32.                     )
    33.     ),
    34.     array(
    35.         'field' => 'user_url',
    36.         'label' => 'URL адрес сайта',
    37.         'rules' => array(
    38.                         'trim' => '',
    39.                         'valid_url' => 'Поле %s должно содержать правильный URL адрес'
    40.                     )
    41.     ),
    42.     array(
    43.         'field' => 'subject',
    44.         'label' => 'Тема письма',
    45.         'rules' => array(
    46.                         'trim' => '', //Обрезаем пробелы по бокам
    47.                         'strip_tags' => '', // Удаляем HTML и PHP теги
    48.                         'required' => 'Поле %s обязательно для заполнения'
    49.                     )
    50.     ),
    51.     array(
    52.         'field' => 'text',
    53.         'label' => 'Текст сообщения',
    54.         'rules' => array(
    55.                         'trim' => '', //Обрезаем пробелы по бокам
    56.                         'strip_tags' => '', // Удаляем HTML и PHP теги
    57.                         'required' => 'Поле %s обязательно для заполнения'
    58.                     )
    59.     ),
    60.     array(
    61.         'field' => 'keystring',
    62.         'label' => 'Капча',
    63.         'rules' => array(
    64.                         'trim' => '', //Обрезаем пробелы по бокам
    65.                         'required' => 'Вы не ввели цифры изображенные на картинке',
    66.                         'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки'
    67.                     )
    68.     )
    69. );
    70.  
    71. //Устанавливаем правила валидации
    72. $validator->set_rules($rules);
    73. $message = '';
    74.  
    75. //Запускаем валидацию POST данных
    76. if($validator->run()){
    77.    
    78.     //Здесь впишите свой e-mail адрес
    79.     //на негу будут приходить уведомления с формы
    80.     $to = 'mail@gmail.com';
    81.     $from = "=?UTF-8?b?" . base64_encode($validator->postdata('user_name')) . "?=";
    82.     $subject = "=?UTF-8?b?" . base64_encode( $validator->postdata('subject') ) . "?=";
    83.    
    84.     $mail_body = "Поступил новый ответ от формы обратной связи.\r\nАвтор оставил такие данные:\r\n";
    85.    
    86.     //Формируем текст сообщения
    87.     foreach($rules as $rule){
    88.         if($rule['field'] == 'keystring') continue;
    89.         $mail_body .= $rule['label'].': '.$validator->postdata($rule['field'])."\r\n";
    90.     }
    91.    
    92.     $header = "MIME-Version: 1.0\n";
    93.     $header .= "Content-Type: text/plain; charset=UTF-8\n";
    94.     $header .= "From: ". $from . " <" . $validator->postdata('user_email'). ">";
    95.  
    96.     //Отправка сообщения
    97.     if(mail($to, $subject, $mail_body, $header)){
    98.        
    99.         $message = '<div class="error">Ваше сообщение успешно отправлено!</div>';
    100.        
    101.         //Очищаем форму обратной связи
    102.         $validator->reset_postdata();
    103.     }
    104.     else{
    105.        
    106.         $message = '<div class="error">Ваше сообщение не отправлено!</div>';
    107.     }
    108. }
    109. else{
    110.    
    111.     //Получаем сообщения об ошибках в виде строки
    112.     $message = $validator->get_string_errors();
    113.    
    114.     //Получаем сообщения об ошибках в виде массива
    115.     $errors = $validator->get_array_errors();
    116.  
    117. }
    118.  
    119. ?>
    120. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    121. <html>
    122. <head>
    123. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    124. <title>Форма обратной связи для сайта с капчей</title>
    125.  
    126. <style type="text/css">
    127. <!--
    128. body {
    129.     font: 100% Verdana, Arial, Helvetica, sans-serif;
    130.     background: #666666;
    131.     margin: 0;
    132.     padding: 0;
    133.     text-align: center;
    134.     color: #000000;
    135. }
    136. .oneColFixCtrHdr #container {
    137.     width: 780px;
    138.     background: #FFFFFF;
    139.     margin: 15px auto;
    140.     border: 1px solid #000000;
    141.     text-align: left;
    142. }
    143. .oneColFixCtrHdr #mainContent {
    144.     padding: 0 20px;
    145.     background: #FFFFFF;
    146.     position: relative;
    147. }
    148. .oneColFixCtrHdr #footer {
    149.     padding: 0 10px;
    150.     background:#DDDDDD;
    151. }
    152. .oneColFixCtrHdr #footer p {
    153.     margin: 0;
    154.     padding: 10px 0;
    155. }
    156.  
    157.  
    158. form.form{
    159.     width: 600px;
    160.     margin: 0 auto;
    161. }
    162.  
    163. form.form div {
    164.     padding:4px;
    165.     margin: 4px 0;
    166.     position:relative;
    167. }
    168.  
    169. form.form input.text,
    170. .textarea {
    171.     padding:5px 10px;
    172.     height:20px;
    173.     border:1px solid #ddd;
    174.     color:#333;
    175.     background:url(images/bginput.jpg) repeat-x bottom #fff;
    176.     position:relative;
    177.     z-index:2;
    178.     font-size: 16px;
    179. }
    180.  
    181. form.form input.text {
    182.     width:290px;
    183. }
    184.  
    185. form.form .textarea {
    186.     height:150px;
    187.     width:290px;
    188. }
    189.  
    190. form.form label {
    191.     float:left;
    192.     width:120px;
    193.     text-align:right;
    194.     margin-right:15px;
    195.     font-weight:bold;
    196.     color:#666;
    197.     font-size: 13px;
    198. }
    199.  
    200. form.form .btn {
    201.     display:block;
    202.     height:31px;
    203.     padding:0 10px;
    204.     background:url(images/bgbtn.jpg) repeat-x;
    205.     color:#565e62;
    206.     font-weight:bold;
    207.     font-size:12px;
    208.     border:1px solid #e1e0df;
    209.     outline:none;
    210.     cursor: pointer;
    211. }
    212.  
    213. /* CSS3 */
    214. form.form .btn,
    215. form.form .text,
    216. form.form .textarea {
    217. -moz-border-radius:8px;
    218. -webkit-border-radius:8px;
    219. border-radius:8px;
    220. }
    221.  
    222.  
    223. div.error_field{
    224.     background: #FEDAFB;
    225.     border: 1px solid #FA74F0;
    226. }
    227.  
    228. div.errors{
    229.     width: 580px;
    230.     margin: 15px auto;
    231.     padding: 10px;
    232.     border: 1px solid #ccc;
    233.     background: #FDFEC2;
    234. }
    235.  
    236. div.errors .error{
    237.     color: red;
    238.     font-weight: bold;
    239.     font-size: 12px;
    240.     margin: 5px;
    241. }
    242.  
    243.  
    244. -->
    245. </style>
    246. </head>
    247. <body class="oneColFixCtrHdr">
    248.  
    249. <div id="container">
    250.  
    251.   <div id="mainContent">
    252.  
    253.    <?=(!empty($message))? '<div class="errors">'.$message.'</div>': ''?>
    254.    <form action="" method="post" class="form">
    255.     <div <?=(!empty($errors['user_name']))? 'class="error_field"': '';?>>
    256.         <label>Ваше имя:</label>
    257.         <input type="text" class = "text" name="user_name" value="<?=$validator->postdata('user_name');?>" />
    258.     </div>
    259.    
    260.     <div <?=(!empty($errors['user_email']))? 'class="error_field"': '';?>>
    261.         <label>Ваш e-mail адрес:</label>
    262.         <input type="text" class = "text" name="user_email" value="<?=$validator->postdata('user_email');?>" />
    263.     </div>
    264.    
    265.     <div <?=(!empty($errors['user_url']))? 'class="error_field"': '';?>>
    266.         <label>URL адрес сайта:</label>
    267.         <input type="text" class = "text" name="user_url" value="<?=$validator->postdata('user_url');?>" />
    268.     </div>
    269.    
    270.     <div <?=(!empty($errors['subject']))? 'class="error_field"': '';?>>
    271.         <label>Тема письма:</label>
    272.         <input type="text" class = "text" name="subject" value="<?=$validator->postdata('subject');?>"/>
    273.     </div>
    274.    
    275.     <div class="area<?=(!empty($errors['text']))? ' error_field': '';?>">
    276.         <label>Текст сообщения:</label>
    277.         <textarea cols="40" class = "textarea" rows="5" name="text"><?=$validator->postdata('text');?></textarea>
    278.     </div>
    279.    
    280.     <div <?=(!empty($errors['keystring']))? 'class="error_field"': '';?>>
    281.         <label class="captcha">Введите цифры изображенные на картинке:</label>
    282.         <div class="capth_images"><?php require 'captcha.php';?></div>
    283.         <input type="text" class = "text" name="keystring" value=""/>
    284.     </div>
    285.  
    286.     <div>
    287.         <label>&nbsp;</label>
    288.         <input type="submit" class="btn" value="Отправить сообщение" />
    289.     </div>
    290.  
    291.    
    292. </form>
    293. </div>
    294.  
    295.  
    296. </div>
    297. </body>
    298. </html>


    А вот здесь файл validator.php http://rgho.st/private/8fN8l7ZBp/be8cc2f6ce26a41716bc1da3f5863f3d ( из за того что сообщение не пропускалось, вынужден был загрузить код туда).

    Уважаемые спецы, если не сложно, подправьте пожалуйста то что нужно или скажите где нужно что исправить? Заранее благодарн!
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $header .= "From: ". $from . " <" . $validator->postdata('user_email'). ">";
    замени на
    $header .= "From: ". $from . " <твой@адрес>";
    будет типа от тебя приходить
     
    denis01 нравится это.
  3. zuniga

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

    С нами с:
    2 апр 2010
    Сообщения:
    8
    Симпатии:
    1
    Благодарю за ответ, сработало! Все письма стабильно доходят до моего ящика! Это единственнй форум где мне ответили по делу и не флудили!
     
    denis01 нравится это.
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нет проблем! Хотя обычно я отвечаю "либо учись, либо плати" :D