Перейти к публикации

Форма обратной связи


Рекомендованные сообщения

Всем привет.

Есть у меня форма обратной связи на ПХП

<?

error_reporting(0);

function show_form()

{

?>

                        <table width="100%" border="0" cellspacing="0" cellpadding="0">

                          <tr>

                            <td width="20" align="left" valign="top"><img src="{THEME}/images/dlet_abl01.gif" width="20" height="30" alt="" /></td>

                            <td align="left" valign="top" class="abl02"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="abl121">

                                <tr>

                                  <td width="40" height="30"><img src="{THEME}/images/spacer.gif" width="40" height="1" alt="" /></td>

                                  <td align="left" class="ntitle">Обратная связь</td>

                                </tr>

                              </table></td>

                            <td width="20" align="right" valign="top"><img src="{THEME}/images/dlet_abl13.gif" width="20" height="30" alt="" /></td>

                          </tr>

                          <tr>

                            <td width="20" align="left" valign="top"><img src="{THEME}/images/dlet_abl51.gif" width="20" height="30" alt="" /></td>

                            <td align="left" valign="top" class="abl22"><table width="100%" border="0" cellspacing="0" cellpadding="0">

                                <tr>

                                  <td height="30" class="abl221">&nbsp;</td>

                                </tr>

                              </table></td>

                            <td width="20" align="right" valign="top"><img src="{THEME}/images/dlet_abl53.gif" width="20" height="30" alt="" /></td>

                          </tr>

                          <tr>

                            <td width="20" align="left" valign="top" class="abl31"><img src="{THEME}/images/spacer.gif" width="20" height="1" alt="" /></td>

                            <td align="left" valign="top" class="stext">


<form action="" method=post>

                                    <table width="98%" border="0" cellpadding="0" cellspacing="0">

                                      <tr>

                                        <td width="130" height="25">Ваше имя:</td>

                                        <td><input class="f_input" type="text" name="input_name[0]" size="45" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][0])), 0, 500);?>"><input type="hidden" name="check[]" value="1"></td>

                                      </tr>


                                      <tr>

                                        <td width="130" height="25">E-Mail:</td>

                                        <td><input class="f_input" type="text" name="input_name[1]" size="45" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][1])), 0, 500);?>"><input type="hidden" name="check[]" value="1"></td>

                                      </tr>

                                      <tr>

                                        <td width="130" height="25">Телефон:</td>

                                        <td><input class="f_input" type="text" name="input_name[2]" size="45" value="<?=substr(htmlspecialchars(trim($_POST['input_name'][2])), 0, 500);?>"><input type="hidden" name="check[]" value="1"></td>

                                      </tr>

                                      <tr>

                                        <td width="130">Сообщение:</td>

                                        <td><textarea class="f_textarea" style="width:420px; height:160px" rows="" cols="" name="input_name[3]" ><?=substr(htmlspecialchars(trim($_POST['input_name'][3])), 0, 10000);?></textarea><input type="hidden" name="check[]" value="1"></td>

                                      </tr>

                                      <tr>

                                        <td width="130" height="25">&nbsp;</td>

                                        <td><input type="submit" value="Отправить" name="submit"></td>

                                      </tr>

                                      <tr>

                                        <td width="130" height="25">&nbsp;</td>

                                        <td><b style="color:red;">* Помечены поля, которые необходимо заполнить!</b></td>

                                      </tr>

                                    </table>

</form>

                            </td>

                            <td width="20" align="right" valign="top" class="abl33"><img src="{THEME}/images/spacer.gif" width="20" height="1" alt="" /></td>

                          </tr>

                          <tr>

                            <td width="20" align="left" valign="top"><img src="{THEME}/images/dlet_abl31.gif" width="20" height="5" alt="" /></td>

                            <td><img src="{THEME}/images/spacer.gif" width="1" height="5" alt="" /></td>

                            <td width="20" align="right" valign="top"><img src="{THEME}/images/dlet_abl33.gif" width="20" height="5" alt="" /></td>

                          </tr>

                          <tr>

                            <td width="20" align="left" valign="top"><img src="{THEME}/images/dlet_abl41.gif" width="20" height="40" alt="" /></td>

                            <td class="abl42">&nbsp;</td>

                            <td width="20" align="right" valign="top"><img src="{THEME}/images/dlet_abl43.gif" width="20" height="40" alt="" /></td>

                          </tr>

                        </table>

                        <br />

                        <br />

<?

}

function complete_mail() {


        $empty_input[] = 'Имя';

        $empty_input[] = 'E-mail';

        $empty_input[] = 'Телефон';

        $empty_input[] = 'Сообщение';

        for ($i=0; $i<count($_POST['input_name']); $i++) {

              $_POST['input_name'][$i] = substr(htmlspecialchars(trim($_POST['input_name'][$i])), 0, 100000);

              if(substr(htmlspecialchars(trim($_POST['check'][$i])), 0, 1) == 1) {

                 if(empty($_POST['input_name'][$i])) {

                         $sendemail = 'No';

                         echo '<br /><b>Необходимо заполнить поле '.$empty_input[$i].'!</b>';


                 }

              }

        }

        if($sendemail == 'No') show_form();

        $mess = '';

        $mess .= '<b>Имя: </b>'.$_POST['input_name'][0].'<br />';

        $mess .= '<b>E-mail: </b>'.$_POST['input_name'][1].'<br />';

        $mess .= '<b>Телефон: </b>'.$_POST['input_name'][2].'<br />';

        $mess .= '<b>Сообщение: </b>'.$_POST['input_name'][3].'<br />';


        // подключаем файл класса для отправки почты

        require 'class.phpmailer.php';

        $mail = new PHPMailer();

        $mail->From = 'mail@mail.ru';                    // от кого email

        $mail->FromName = 'Пользователь сайта';          // от кого имя

        $mail->AddAddress('mail@mail.ru', 'Вася');       // кому - адрес, Имя

        $mail->IsHTML(true);                             // выставляем формат письма HTML

        $mail->Subject = 'Письмо с сайта';               // тема письма

        $mail->Body = $mess;


        if($sendemail != 'No'){

              // отправляем наше письмо

              if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);

              echo 'Спасибо! Ваше письмо отправлено.';

        }

}

if (!empty($_POST['submit'])) complete_mail();

else show_form();

?>
Эта форма работает как положено. А как мне сделать что бы когда приходит письмо ко мне из этой формы, то в поле кто отправил и имя того кто отправил были не те что я вбил в фому (// от кого email, // от кого имя), а те что вбивает пользователь? И ещё один момент, если кнопка отправить у меня в коде выглядит так:
<input type="submit" value="Отправить" name="submit">
то всё отправляется, а вот если я делаю графическую кнопку вот так:
<input name="submit" type="image" style="width:80px; height:20px; cursor:hand" src="{THEME}/images/dlet_bttn_submit.gif" alt="submit" />

то не отправляет, что я не так делаю?

Изменено пользователем n0lik
Ссылка на сообщение
Поделиться на других сайтах

Только сегодня поставил такой модуль))) Все работает... http://www.web-sdelka.ru/index.php?do=form&id=1 :D

Но как ты советовал мне в соседнем поиске, могу только посоветовая воспользоваться поиском и желанием :rolleyes:

Ссылка на сообщение
Поделиться на других сайтах

Только сегодня поставил такой модуль))) Все работает... http://www.web-sdelk...hp?do=form&id=1

Какой модуль? У меня просто форма обратной связи на ПХП и не более того.

Но как ты советовал мне в соседнем поиске, могу только посоветовая воспользоваться поиском и желанием

Зачем мне модуль? :lol: Мне нужен совет непосредственно по этой форме связи.

Изменено пользователем n0lik
Ссылка на сообщение
Поделиться на других сайтах

Видимо, в этом причина:

value="Отправить"
сабмит не должен быть пустым из условия:
if (!empty($_POST['submit'])) complete_mail();

else show_form();

Ссылка на сообщение
Поделиться на других сайтах

zgr, спасибо большое.

Не подскажите, а как быть вот с этим?

А как мне сделать что бы когда приходит письмо ко мне из этой формы, то в поле кто отправил и имя того кто отправил были не те что я вбил в фому (// от кого email, // от кого имя), а те что вбивает пользователь?
Ссылка на сообщение
Поделиться на других сайтах

Это делается примерно так:

if ($is_logged==1) $login = true; else $login = false;
или аналогично, т.е. делаем проверку на того, кто залогинен, либо на логин и конкретную группу пользователей, которым разрешено отправлять сообщение на почту.
if ($is_logged==1 && $user_group[$member_id['user_group']]['allow_admin']) $login = true; else $login = false;
Далее вытаскиваем нужные данные юзера (ник, имя, айди, фото и т.д.), вот весь список массива:
if ($login) $nik = $member_id['name']; else $nik = 'unknow';
Остальные по аналогии, думаю, догадаетесь :) Чтобы наши переменные заработали в вашей функции, их нужно объявить:
function show_form() {

  global $is_logged, $user_group;

  if ($is_logged==1) $login = true; else $login = false;

  if ($login) $nik = ''; else $nik = 'unknow';

  ...

Теперь подставьте полученные переменные (например, $nik) вместо тех, что сейчас в форме.

Вот и всё. :)

П.С. Если грамотно делать, чтоб не спамили, не взламывали и т.д., то нужно проверять очень большой список данных: ЮзерАгент, айпи, отмечать кто и когда и что отправляет, какие сообщения и т.д. - это может занять пару недель работы и километр кода. Думаю, далее разберетесь сами, уже есть от чего отталкиваться.

//Не зарегистрированый юзер
$member_id = Array([user_group] => 5)
//Зарегистрированый юзер $member_id = Array ( => zgr@bk.ru [password] => 95e1cd33d [name] => Администратор [user_id] => 1 [news_num] => 91 [comm_num] => 5 [user_group] => 1 [lastdate] => 1278685014 [reg_date] => 1271399014 [banned] => [allow_mail] => 1 [info] => Простой христианско-советский рабочий парень. [signature] => Хорошо, когда собака друг, плохо, когда друг - собака. [foto] => foto_1.png [fullname] => Зайва Игорь Леонидович [land] => Казахсттан, Алматы [icq] => 463768885 [favorites] => [pm_all] => 0 [pm_unread] => 0 [time_limit] => [xfields] => [allowed_ip] => [hash] => [logged_ip] => 0.0.0.0 [restricted] => 0 [restricted_days] => 0 [restricted_date] => ) $user_group = Array( [1] => Array( [id] => 1 [group_name] => Администраторы [allow_cats] => all [allow_adds] => 1 [cat_add] => all [allow_admin] => 1 [allow_addc] => 1 [allow_editc] => 1 [allow_delc] => 1 [edit_allc] => 1 [del_allc] => 1 [moderation] => 1 [allow_all_edit] => 1 [allow_edit] => 1 [allow_pm] => 1 [max_pm] => 50 [max_foto] => 101 [allow_files] => 1 [allow_hide] => 1 [allow_short] => 1 [time_limit] => 0 [rid] => 1 [allow_fixed] => 1 [allow_feed] => 1 [allow_search] => 1 [allow_poll] => 1 [allow_main] => 1 [captcha] => 0 [icon] => /templates/isle/images/icon_1.png [allow_modc] => 0 [allow_rating] => 1 [allow_offline] => 1 [allow_image_upload] => 1 [allow_file_upload] => 1 [allow_signature] => 1 [allow_url] => 1 [news_sec_code] => 0 [allow_image] => 1 [max_signature] => 500 [max_info] => 1000 [admin_addnews] => 1 [admin_editnews] => 1 [admin_comments] => 1 [admin_categories] => 1 [admin_editusers] => 1 [admin_wordfilter] => 1 [admin_xfields] => 1 [admin_userfields] => 1 [admin_static] => 1 [admin_editvote] => 1 [admin_newsletter] => 1 [admin_blockip] => 1 [admin_banners] => 1 [admin_rss] => 1 [admin_iptools] => 1 [admin_rssinform] => 1 [admin_googlemap] => 1 [allow_html] => 1 [group_prefix] => [group_suffix] => [allow_subscribe] => 1 [allow_image_size] => 1 [cat_allow_addnews] => all ) [2] => Array(...) ... [5] => Array(...)
Делаем проверку, чтобы вытащить, например, ник для отправки в форме:
Изменено пользователем zgr
Ссылка на сообщение
Поделиться на других сайтах

zgr, вы меня не так поняли, у меня форма ни как не связанна с DLE, это обычная форма на PHP и когда мне приходит письмо с этой формы, то данные от кого оно пришло берутся вот эти

        $mail->From = 'mail@mail.ru';                    // от кого email

        $mail->FromName = 'Пользователь сайта';          // от кого имя
то есть те которые я вбил в php код, а мне надо, что бы вместо мыла и имени которые прописаны в форме было имя и мыло того, кто отправляет мне письмо, то есть вот эти
        $mess .= '<b>Имя: </b>'.$_POST['input_name'][0].'<br />';

        $mess .= '<b>E-mail: </b>'.$_POST['input_name'][1].'<br />';

Изменено пользователем n0lik
Ссылка на сообщение
Поделиться на других сайтах

А, вот чего. Для начала распечатайте массивы передачи - ПОСТы, посмотрите, что в них, включите на сайте и опишите ошибки, на глазок - всё рабочее, проблем не вижу, хотя код очень кривой и сырой. Если посты проходят, то обратитесь к разработчику, тратить день на изучение всей этой кривой мути нет времени, по мелочам подскажу.

П.С. Спросите inokentik, как он сделал у себя.

Изменено пользователем zgr
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...