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

Дополнительные поля формы обратной связи - отправка данных


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

Знаю что подобная тема уже обсуждалась неоднократно но все же подниму ее снова. И так в общем чтобы создать вторую форму обратной связи по мимо основной которую предлагает CMS DLE 9.4. Я проделал следующие шаги.

1. Скопировал файлы feedback.tpl, feedback.php (modules), feedback.php (ajax), в те же директории где лежат оригинальные файлы. Они у меня имели теже названия с припиской "Копия".

2. Переименовал скопированные файлы - advertise.tpl, advertise.php (modules), advertise.php (ajax).

3. Отредактировал файл advertise.tpl для нужного отображения формы, а именно добавил два новых текстовых поля - "Домашний телефон", "Сотовый телефон". Файл приобрел след. код.


<table width="100%" align="center">

<tr>

<td align="left"><img src="{THEME}/images/techhelp.png"/></td>

</tr>

</table>

<div class="pheading"><h7>Дать бесплатное объявление</h7></div>

<table width="100%" align="center">

[not-logged]

  <tr>

   <td class="label">

	Ваше имя:<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td><input type="text" maxlength="35" name="name" class="f_input" /></td>

  </tr>

  <tr>

   <td class="label">

	Ваш E-Mail:<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td><input type="text" maxlength="40" name="email" class="f_input" /></td>

  </tr>

[/not-logged]

  <tr>

   <td class="label">

	Кому:<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td>{recipient}</td>

  </tr>

  <tr>

   <td class="label">

	Тема:<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td><input type="text" maxlength="60" name="subject" /></td>

  </tr>

  <tr>

   <td class="label" valign="top">

	Сообщение:

   </td>

   <td><textarea name="message" style="width: 380px; height: 160px" class="f_textarea" /></textarea></td>

  </tr>

  <tr>

   <td class="label">

	Домашний телефон (Пример: +7123456789):<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td><input type="text" maxlength="40" name="homenumber" class="f_input" /></td>

  </tr>

  <tr>

   <td class="label">

	Сотовый телефон (Пример: +7123456789):<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td><input type="text" maxlength="40" name="sotnumber" class="f_input" /></td>

  </tr>

  [sec_code]<tr>

   <td class="label">

	Введите код:<span class="impot"><font color="#FF0000">*</font></span>

   </td>

   <td>

	<div>{code}</div>

	<div><input type="text" maxlength="45" name="sec_code" style="width:115px" class="f_input" /></div>

   </td>

  </tr>[/sec_code]

  [recaptcha]<tr>

   <td class="label">

	Введите два слова, показанных на изображении:<span class="impot">*</span>

   </td>

   <td>

	<div>{recaptcha}</div>

   </td>

  </tr>[/recaptcha]

</table>

<div class="fieldsubmit">

  <button name="send_btn" class="fbutton" type="submit"><span>Отправить</span></button>

</div>

<table width="100%" align="center">

<tr>

<td align="right"> " <font color="#FF0000">*</font> " - Поля обязательного ввода информации!</td>

</tr>

</table>

4. Отредактировал файл engine.php - а именно обозначил новую переменную.

case "feedback" :

  include ENGINE_DIR . '/modules/feedback.php';

  break;

case "advertise" :

  include ENGINE_DIR . '/modules/advertise.php';

  break;

5. Отредактировал файл advertise.php из папки modules изменив там след строки. Вид письма отправляемого на мое мыло.

$subject = strip_tags( stripslashes( $_POST['subject'] ) );

  $message = stripslashes( $_POST['message'] . "\n".'Сотовый телефон: '.$_POST ['sotnumber'] . "\n".'Домашний телефон: '.$_POST ['homenumber'], $config['charset'] );

  $recip = intval( $_POST['recip'] );

Обозначил подгружаемый tpl файл для скрипта.

$tpl->load_template( 'advertise.tpl' );

6. Подобным образом отредактировал advertise.php из папки ajax (Примечание: В статье которую я читал на этом форуме, было описано что именно данный файл отвечает за отправку данных из дополнительных полей. В этой же статье есть ссылка на основные действия по созданию доп. полей в форме обратной связи, на которую опирался автор), изменил строки как в шаге номер 5. Изменил вид отправляемого письма, и обозначил прогрузку tpl файла для скрипта.

7.Теперь исходя из проделанных действий итог нашей работы должен был выглядеть след. образом:

Юзер пишет объявление в форме обратной связи где помимо стандартных полей "Ваше имя", "Кому", и "Ваш email адрес" (Для не регнутых пользователей), "Поле для написания сообщения", присутствую дополнительные поля с названиями "Домашний телефон" и "Сотовый телефон". После заполнения всех полей и проверки капчи, при отправке на мою почту должно прийти письмо след. вида:

Администратор, данное письмо вам отправил Вася Пупкин с сайта вашсайт.ru

---------------------------------------

Текст сообщения:

---------------------------------------

Какое-то объявление

---------------------------------------

Домашний телефон:

--------------------------------------

123456789

--------------------------------------

Сотовый телефон:

--------------------------------------

123456789

--------------------------------------

Но приходит письмо след вида:

Администратор, данное письмо вам отправил Вася Пупкин с сайта вашсайт.ru

---------------------------------------

Текст сообщения:

---------------------------------------

Какое-то объявление

Т.е. нет данных с дополнительных полей.

А теперь вопрос! - Как эту лабуду исправить?

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

А ответить по существу не судьба? А не просто так постить "проще юзать JS"?! Да будет известно JS не всегда уместен - так как подгружаемость сайта сразу вырастает из-за кучи скриптов, которые выполняются на стороне клиента, а не сервера.

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

Respayn

тебе нужно отредактировать файл advertise.php в папке engine/ajax

и вместо в 122 и 123 строки написать свои доп поля

вот приведу код который я делал у себя (php знаю плохо, поэтому сам подправишь как надо)


$not_allow_symbolp = array ("\x22", "\x60", "\t", '\n', '\r', "\n", "\r", '\\', ",", "/", "¬", ";", ":", "~", "[", "]", "{", "}", "^", "%", "$", "<", ">", "?", "!", '"', "'" );

$phone = trim( str_replace( $not_allow_symbolp, '', strip_tags( stripslashes( $_POST['phone'] ) ) ) );

$city = trim(strip_tags( stripslashes( convert_unicode( $_POST['city'], $config['charset']  ) ) ) );

$from_know = trim(strip_tags( stripslashes( convert_unicode( $_POST['from_know'], $config['charset']  ) ) ) );

$subject = trim(strip_tags( stripslashes( convert_unicode( $_POST['subject'], $config['charset']  ) ) ) );

//$message = stripslashes( $_POST['phone'] ) . " " . $email . "" . stripslashes( $_POST['message'] );

$message = "Имя: " . $name . "

e-mail: " . $email . "

Телефон: " . $phone /* trim(stripslashes( convert_unicode($_POST['phone'], $config['charset'] ) ) ) */ . "

Город: " . $city . "

От куда о нас узнали: " . $from_know . "

Тема сообщения: " . $subject . "

Текcт сообщения: " . trim(stripslashes( convert_unicode($_POST['message'], $config['charset'] ) ) );

$recip = intval( $_POST['recip'] );

так же в этом же файле нужно сделать что б он выдавал ошибку, что эти поля не заполнены поэтому я после

if( empty($subject) OR dle_strlen($subject, $config['charset']) > 200 ) {

$stop .= $lang['feed_err_4'];

}

вставил

if( empty( $phone ) OR dle_strlen($phone, $config['charset']) > 200 )  {

$stop .= $lang['feed_err_phone'];

}

if( empty( $from_know ) OR dle_strlen($from_know, $config['charset']) > 100 )  {

$stop .= $lang['feed_err_from_know'];

}

if( empty( $city ) OR dle_strlen($city, $config['charset']) > 200 )  {

$stop .= $lang['feed_err_city'];

}

также нужно добавить данные ошибки в языковой файл website.lng из language/Russian/

'feed_err_phone' => "<li>Вы не указали свой телефон.</li>",

'feed_err_city'  => "<li>Вы не указали город.</li>",

'feed_err_from_know'=>  "<li>Вы не указали от куда о нас узнали.</li>",

главное потом не забыть при обновлении движка потом эти ошибки опять добавить

ну или можно в самом php вставить $stop .= "ошибка такая-то";

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

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

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

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

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

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

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

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

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

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