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

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


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

Потребовалось создать дополнительную форму обратной связи, поискал на форуме - решение есть, но оно в разделе для клиентов, хотя мы и купили за всё время работы с DLE порядка 5-6 лицензий, а может и больше, но никогда не покупали поддержку, поэтому доступ в тот раздел нет, а решение нужно. Есть ещё модуль платный для создания форм из админки, но иногда проще потратить денек, чтобы самому найти решение, чем несколько дней, на проверку чужого решения, да и отзывы о модуле настораживают (см. 4dle.ru)

Сразу оговорюсь, я не прораммист, PHP не знаю, javascript не знаю, умею только делать copy -> paste - этим и займемся.

И так, нам надо создать дополнительную форму обратной связи, так как feedback уже используется, а нужно, например получить дополнительные данные от пользовтеля с помощью формы на администраторский email, к примеру форму заказа (делалось на версии 7.3).

1. Берем файл feedback.tpl и по его подобию создаем шаблон с другим названием, например, formorder.tpl

2. Берем файл engine/modules/feedback.php по его подобию создаем файл formorder.php

3. Открываем файл engine/engine.php находим:

case "feedback" :

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

		break;
ниже вставляем:
case "formorder" :

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

		break;
находим:
elseif ($do == 'feedback') $nam_e=$lang['title_feed'];
ниже всталвяем:
elseif ($do == 'formorder') $nam_e=$lang['title_feed'];
4. Открываем созданный нами engine/modules/formorder.php находим:
$tpl->load_template('feedback.tpl');
меняем на
$tpl->load_template('formorder.tpl');
Наша новая форма готова, можно посмотреть: http://.../index.php?do=formorder'>http://.../index.php?do=formorder --------------------------------------------------------------------------------------------------- Но клон уже готовой формы отправки нам не нужен, нам нужно в эту форму вставить дополнительные поля, которые бы пользователь мог заполнить и эти данные пришли бы нам на email. 1. Откроем созданный нами шаблон formorder.tpl, и вставим дополнительные поля, например, добавим 2 новых поля (по аналогии вы сможете сделать больше):
 <tr>

							  <td width="120" height="25">Город:</td>

							  <td><input type="text" maxlength="45" name="city" class="text" /></td>

							</tr>

							<tr>

							  <td width="120" height="25">Страна:</td>

							  <td><input type="text" maxlength="45" name="country" class="text" /></td>

							</tr>
2. Теперь внесем изменения в файл engine/modules/formorder.php чтобы наши поля отправлялись на email, а не просто украшали страницу: находим строчку:
$message = strip_tags(stripslashes($_POST['message']));
заменяем на:
		$message = 'Город: '.strip_tags(stripslashes($_POST['city'])).'

Страна: '.strip_tags(stripslashes($_POST['country'])).'


Сообщение: '.strip_tags(stripslashes($_POST['message']));
Обратите внимание, что между строчками Страна и Сообщение пропущена строка - точно также она будет пропущена и при получении email'а. Сюда же можно вставить и другие поля, которые уже реализованы в DLE: email, name В принципе наша форма уже готова, сообщение приходит на почту так, как нам нужно. Поля, которые мы сделали необязательны к заполнению и пользователь может оставить их пустыми. Но зачем нам форма, если нам поля будут присылать пустые, будем делать проверку - заполнено ли поле, плюс ко всему мне нужно было, чтобы заполненная форма не скидывалась, а сообщение вылатело тут же средствами alert, помимо всего хотелось, чтобы пользователю в алерте писалось, какое поле он не заполнил. начинаем делать: 1. В нашем файле engine/modules/formorder.php находим
$tpl->copy_template = "<form  method=\"post\" name=\"sendmail\" onsubmit=\"if(document.sendmail.subject.value == '' || document.sendmail.message.value == ''){alert('{$lang['comm_req_f']}');return false}\"action=\"\">\n".$tpl->copy_template."
меняем на:
$tpl->copy_template = "<form  method=\"post\" name=\"sendmail\" onsubmit=\"

if(document.sendmail.name.value == ''){alert('{$lang['feed_err_name']}');return false}

if(document.sendmail.subject.value == ''){alert('{$lang['feed_err_subject']}');return false}

if(document.sendmail.city.value == ''){alert('{$lang['feed_err_city']}');return false}

if(document.sendmail.country.value == ''){alert('{$lang['feed_err_country']}');return false}

if(document.sendmail.message.value == ''){alert('{$lang['feed_err_message']}');return false}

if(document.sendmail.sec_code.value == ''){alert('{$lang['reg_err_sec_code']}');return false}

\"action=\"\">\n".$tpl->copy_template."
Обратите внимание, что мы также повесили проверки без перезагрузки страницы на name, message и sec-code. 2. Открываем файл language/Russian/website.lng находим строку (чтобы всё в одном месте было):
'feed_err_7'		=>	"Данный пользователь не найден в базе данных, либо он не хочет получать письма от других пользователей",
после неё добавляем:
'feed_err_name'			=>	"Вы не указали имя.",

'feed_err_subject'		=>	"Вы не указали Заголовок.",

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

'feed_err_country'		=>	"Вы не указали страну.",

'feed_err_message'		=>	"Вы не написали сообщение.",

'reg_err_sec_code'		=>	"Вы не написали защитный код.",
В принципе всё. Теперь по багам и улучшениям: 1. Title страницы http://.../index.php?do=formorder'>http://.../index.php?do=formorder - будет таким же, как и у формы обратной связи, что в принципе не страшно. 2. Для своей формы я прятал заголовок письма, так как пользовтаелю это дополнительное поле, а мы будем знать какую форму он нам заполнил по заголовку: Открываем файл formorder.tpl находим:
<tr>

							  <td width="120" height="25">Заголовок:</td>

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

							</tr>
заменяем на:
<tr>

							  <td width="120"></td>

							  <td><input maxlength="45" value="Form: Order" name="subject" class="text" type="hidden" /></td>

							</tr>

Проверку в этом случаев файле engine/modules/formorder.php , мне кажется, можно снять, но не обязательно.

3. Форма письма, которое приходит к нам на email, имеет точный вид формы feedback - саму форму можно редактировать в административной панели "Шаблоны E-mail сообщений" - я оставил шаблон единый, очень не хотелось погружаться в это, так как там правки нужно вносить и в БД, насколько я понимаю.

4. Капча. Если поле остается пустым, то мы его проверяем, но если пользователь что-то неправильно ввел, то страница перезагрузится, выдавая ошибку ив се введенные данные пропадут - это, пожалуй, самое большое упущение DLE, так как при заполнении большой формы - скидывание введенного бесит невероятно. Если кто-то нашел решение - прошу поделиться. Возможно celsoft реализует проверку капчи без перезагрузки страницы и потери введенного, так как неоднократно слышал - мы ввели ВО-О-От такое сообщение в форме обратной связи, а капчу ошиблись и всё пропало.

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

В принципе всё. Если кто-то найдет решение с капчей, пожалуйста напишите. В создании хака очень помог Kiborgik

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

Пардон, совсем уже не смотрю, что копи-паст делаю, Title для нашей страницы можно сделать без проблем. Вернитесь к пункту 3 и вместо него сделайте:

3. Открываем файл engine/engine.php находим:

находим:

elseif ($do == 'feedback') $nam_e=$lang['title_feed'];
ниже всталвяем:
elseif ($do == 'formorder') $nam_e=$lang['title_formorder'];

И в языковом файле прописываем 'title_formorder' с названием нашей страницы.

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

мысли по п.4

при юзе браузерной кнопки "назад" (в случае оперы машинайльный клик райт-лефт) ничего не пропадает. Если не ошибаюсь нет больших сложностей в установке аналога кнопки в хтмл. Что с этим можно сделать дальше хз :)

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

на php такую вещь легко сделать... (естественно с элементами html, a именно "<form action="mail.php"> input.... </form>")... ыы)) и никакой мароки)

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

а я просто стандартную форму обратной связи переделал под форму заказа, на мыле поставил фильтр по заголовку (заголовок скрыт от пользователя) и сейчас все письма с заказом попадают в одну папку ;) очень удобно и сразу понятно от какого юзера ;)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

Пардон, совсем уже не смотрю, что копи-паст делаю, Title для нашей страницы можно сделать без проблем. Вернитесь к пункту 3 и вместо него сделайте:

3. Открываем файл engine/engine.php находим:

находим:

elseif ($do == 'feedback') $nam_e=$lang['title_feed'];
ниже всталвяем:
elseif ($do == 'formorder') $nam_e=$lang['title_formorder'];

И в языковом файле прописываем 'title_formorder' с названием нашей страницы.

Спасибо, помог организовать форму!

А как сделать, чтобы поле "Получатель:" не было, а всегда на один и тот же адрес электронной почты отправлялись данные с форм??? Помогите пожалуйста!

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

В шаблоне делаешь

<input type="hidden" name="recip" value="1">

value - это ID пользователя, которому будут отправлятюся email. ID можно посмотреть в админке - редактирование пользователя, кликни на никнейм (изменить) и увидишь в открывшемся окне URL, в котором и присутствует ID, например,

.../admin.php?mod=editusers&action=edituser&id=1

а я просто стандартную форму обратной связи переделал под форму заказа, на мыле поставил фильтр по заголовку (заголовок скрыт от пользователя) и сейчас все письма с заказом попадают в одну папку ;) очень удобно и сразу понятно от какого юзера ;)

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

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

Вот довольно мощный скрипт, можно к DLE прикрутить, выкладывал уже вроде ;)

Скачать здесь...

mail.jpg

Основные настройки формы:

<input type="hidden" name="MAX_FILE_SIZE" value="Максимальный размер файла">

<input type="hidden" name="require" value="обязательные поля через запятую">

<input type="hidden" name="recipient" value="емайл получателя">

<input type="hidden" name="subject" value="Тема письма">


в пхп файле можно также настраивать:

$banlist = черный список емайлов

$bcc = скрытая копия

$referers = адрес формы, защита от роботов


также есть настройки:

redirect

path_to_file

sort

style_sheet

bgcolor

text_color

link_color

vlink_color

alink_color

title

missing_fields_redirect

env_report
Скрипт:
<?


// for ultimate security, use this instead of using the form

//$recipient = "youremail@domain.com"; // youremail@domain.com


// bcc emails (separate multiples with commas (,))

$bcc = "";


// referers.. domains/ips that you will allow forms to

// reside on.

//$referers = array ('somedomain.com','www.somedomain.com','121.0.0.111');


// banned emails, these will be email addresses of people

// who are blocked from using the script (requested)

//$banlist = array ('*@somedomain.com', 'user@domain.com', 'etc@domains.com');


// field / value seperator

define("SEPARATOR", ($separator)?$separator:": ");


// content newline

define("NEWLINE", ($newline)?$newline:"\n");


// formmail version (for debugging mostly)

define("VERSION", "5.0");



// our mighty error function..

function print_error($reason,$type = 0) {

   build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);

   // for missing required data

   if ($type == "missing") {

	  if ($missing_field_redirect) {

		 header("Location: $missing_field_redirect?error=$reason");

		 exit;

	  } else {

	  ?>

	  Форма не была отправлена по следующим причинам:<p>

	  <ul><?

	  echo $reason."\n";

	  ?></ul>

	  <a href="#" onclick="java script:window.close();">Закройте</a> окно, чтобы вернуться к форме и попытаться снова.<?

	  }

   } else { // every other error

	  ?>

	  Форма не была отправлена по следующим причинам:<p>

	  <?

   }

   exit;

}


// function to check the banlist

// suggested by a whole lot of people.. Thanks

function check_banlist($banlist, $email) {

   if (count($banlist)) {

	  $allow = true;

	  foreach($banlist as $banned) {

		 $temp = explode("@", $banned);

		 if ($temp[0] == "*") {

			$temp2 = explode("@", $email);

			if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))

			   $allow = false;

		 } else {

			if (trim(strtolower($email)) == trim(strtolower($banned)))

			   $allow = false;

		 }

	  }

   }

   if (!$allow) {

	  print_error("You are using from a <b>banned email address.</b>");

   }

}


// function to check the referer for security reasons.

// contributed by some one who's name got lost.. Thanks

// goes out to him any way.

function check_referer($referers) {

   if (count($referers)) {

	  $found = false;


	  $temp = explode("/",getenv("HTTP_REFERER"));

	  $referer = $temp[2];


	  if ($referer=="") {$referer = $_SERVER['HTTP_REFERER'];

		 list($remove,$stuff)=split('//',$referer,2);

		 list($home,$stuff)=split('/',$stuff,2);

		 $referer = $home;

	  }


	  for ($x=0; $x < count($referers); $x++) {

		 if (eregi ($referers[$x], $referer)) {

			$found = true;

		 }

	  }

	  if ($referer =="")

		 $found = false;

	  if (!$found){

		 print_error("You are coming from an <b>unauthorized domain.</b>");

		 error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);

	  }

		 return $found;

	  } else {

		 return true; // not a good idea, if empty, it will allow it.

   }

}

if ($referers)

   check_referer($referers);


if ($banlist)

   check_banlist($banlist, $email);


// This function takes the sorts, excludes certain keys and 

// makes a pretty content string.

function parse_form($array, $sort = "") {

   // build reserved keyword array

   $reserved_keys[] = "MAX_FILE_SIZE";

   $reserved_keys[] = "required";

   $reserved_keys[] = "redirect";

   $reserved_keys[] = "require";

   $reserved_keys[] = "path_to_file";

   $reserved_keys[] = "recipient";

   $reserved_keys[] = "subject";

   $reserved_keys[] = "sort";

   $reserved_keys[] = "style_sheet";

   $reserved_keys[] = "bgcolor";

   $reserved_keys[] = "text_color";

   $reserved_keys[] = "link_color";

   $reserved_keys[] = "vlink_color";

   $reserved_keys[] = "alink_color";

   $reserved_keys[] = "title";

   $reserved_keys[] = "missing_fields_redirect";

   $reserved_keys[] = "env_report";

   $reserved_keys[] = "submit";

   if (count($array)) {

	  if (is_array($sort)) {

		 foreach ($sort as $field) {

			$reserved_violation = 0;

			for ($ri=0; $ri<count($reserved_keys); $ri++)

			   if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1;


			if ($reserved_violation != 1) {

			   if (is_array($array[$field])) {

				  for ($z=0;$z<count($array[$field]);$z++)

					 $content .= $field.SEPARATOR.$array[$field][$z].NEWLINE;

			   } else

				  $content .= $field.SEPARATOR.$array[$field].NEWLINE;

			}

		 }

	  }

	  while (list($key, $val) = each($array)) {

		 $reserved_violation = 0;

		 for ($ri=0; $ri<count($reserved_keys); $ri++)

			if ($key == $reserved_keys[$ri]) $reserved_violation = 1;


		 for ($ri=0; $ri<count($sort); $ri++)

			if ($key == $sort[$ri]) $reserved_violation = 1;


		 // prepare content

		 if ($reserved_violation != 1) {

			if (is_array($val)) {

			   for ($z=0;$z<count($val);$z++)

				  $content .= $key.SEPARATOR.$val[$z].NEWLINE;

			} else

			   $content .= $key.SEPARATOR.$val.NEWLINE;

		 }

	  }

   }

   return $content;

}


// mail the content we figure out in the following steps

function mail_it($content, $subject, $email, $recipient) {

   global $attachment_chunk, $attachment_name, $attachment_type, $attachment_sent, $bcc;


   $ob = "----=_OuterBoundary_000";

   $ib = "----=_InnerBoundery_001";


   $headers  = "MIME-Version: 1.0\r\n"; 

   $headers .= "From: ".$email."\n"; 

   $headers .= "To: ".$recipient."\n"; 

   $headers .= "Reply-To: ".$email."\n";

   if ($bcc) $headers .= "Bcc: ".$bcc."\n"; 

   $headers .= "X-Priority: 1\n"; 

   $headers .= "X-Mailer: DT Formmail".VERSION."\n"; 

   $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$ob."\"\n";



   $message  = "This is a multi-part message in MIME format.\n";

   $message .= "\n--".$ob."\n";

   $message .= "Content-Type: multipart/alternative;\n\tboundary=\"".$ib."\"\n\n";

   $message .= "\n--".$ib."\n";

   $message .= "Content-Type: text/plain;\n\tcharset=\"windows-1251\"\n";

   $message .= "Content-Transfer-Encoding: quoted-printable\n\n";

   $message .= $content."\n\n";

   $message .= "\n--".$ib."--\n";

   if ($attachment_name && !$attachment_sent) {

	  $message .= "\n--".$ob."\n";

	  $message .= "Content-Type: $attachment_type;\n\tname=\"".$attachment_name."\"\n";

	  $message .= "Content-Transfer-Encoding: base64\n";

	  $message .= "Content-Disposition: attachment;\n\tfilename=\"".$attachment_name."\"\n\n";

	  $message .= $attachment_chunk;

	  $message .= "\n\n";

	  $attachment_sent = 1;

   }

   $message .= "\n--".$ob."--\n";


   mail($recipient, $subject, $message, $headers);

}


// take in the body building arguments and build the body tag for page display

function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {

   if ($style_sheet)

	  echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";

   if ($title)

	  echo "<title>$title</title>\n";

   if (!$bgcolor)

	  $bgcolor = "#FFFFFF";

   if (!$text_color)

	  $text_color = "#000000";

   if (!$link_color)

	  $link_color = "#0000FF";

   if (!$vlink_color)

	  $vlink_color = "#FF0000";

   if (!$alink_color)

	  $alink_color = "#000088";

   if ($background)

	  $background = "background=\"$background\"";

   echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";

}


// check for a recipient email address and check the validity of it

// Thanks to Bradley miller (bradmiller@accesszone.com) for pointing

// out the need for multiple recipient checking and providing the code.

$recipient_in = split(',',$recipient);

for ($i=0;$i<count($recipient_in);$i++) {

   $recipient_to_test = trim($recipient_in[$i]);

   if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,6}$", $recipient_to_test)) {

	  print_error("<b>I NEED VALID RECIPIENT EMAIL ADDRESS ($recipient_to_test) TO CONTINUE</b>");

   }

}


// This is because I originally had it require but too many people

// were used to Matt's Formmail.pl which used required instead.

if ($required)

   $require = $required;

// handle the required fields

if ($require) {

   // seperate at the commas

   $require = ereg_replace( " +", "", $require);

   $required = split(",",$require);

   for ($i=0;$i<count($required);$i++) {

	  $string = trim($required[$i]);

	  // check if they exsist

	  if((!(${$string})) || (!(${$string}))) {

		 // if the missing_fields_redirect option is on: redirect them

		 if ($missing_fields_redirect) {

			header ("Location: $missing_fields_redirect");

			exit;

		 }

		 $require;

		 $missing_field_list .= "<b>Не заполнены: $required[$i]</b><br>\n";

	  }

   }

   // send error to our mighty error function

   if ($missing_field_list)

	  print_error($missing_field_list,"missing");

}


// check the email fields for validity

if (($email) || ($EMAIL)) {

   $email = trim($email);

   if ($EMAIL) $email = trim($EMAIL);

   if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email))

	  print_error("Ваш <b>email </b> неверный");

   $EMAIL = $email;

}


// check zipcodes for validity

if (($ZIP_CODE) || ($zip_code)) {

   $zip_code = trim($zip_code);

   if ($ZIP_CODE) $zip_code = trim($ZIP_CODE);

   if (!ereg("(^[0-9]{5})-([0-9]{4}$)", trim($zip_code)) && (!ereg("^[a-zA-Z][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$", trim($zip_code))) && (!ereg("(^[0-9]{5})", trim($zip_code))))

	  print_error("your <b>zip/postal code</b> is invalid");

}


// check phone for validity

if (($PHONE_NO) || ($phone_no)) {

   $phone_no = trim($phone_no);

   if ($PHONE_NO) $phone_no = trim($PHONE_NO);

   if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $phone_no))

	  print_error("your <b>phone number</b> is invalid");

}


// check phone for validity

if (($FAX_NO) || ($fax_no)) {

   $fax_no = trim($fax_no);

   if ($FAX_NO) $fax_no = trim($FAX_NO);

   if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $fax_no))

	  print_error("your <b>fax number</b> is invalid");

}


// sort alphabetic or prepare an order

if ($sort == "alphabetic") {

   uksort($HTTP_POST_VARS, "strnatcasecmp");

} elseif ((ereg('^order:.*,.*', $sort)) && ($list = explode(',', ereg_replace('^order:', '', $sort)))) {

   $sort = $list;

}


// prepare the content

$content = parse_form($HTTP_POST_VARS, $sort);


// check for an attachment if there is a file upload it

if ($attachment_name) {

   if ($attachment_size > 0) {

	  if (!$attachment_type) $attachment_type =  "application/unknown";

	  $content .= "Attached File: ".$attachment_name."\n";

	  $fp = fopen($attachment,  "r");

	  $attachment_chunk = fread($fp, filesize($attachment));

	  $attachment_chunk = base64_encode($attachment_chunk);

	  $attachment_chunk = chunk_split($attachment_chunk);

   }

}


// check for a file if there is a file upload it

if ($file_name) {

   if ($file_size > 0) {

	  if (!ereg("/$", $path_to_file))

		 $path_to_file = $path_to_file."/";

	  $location = $path_to_file.$file_name;

	  if (file_exists($path_to_file.$file_name))

		 $location = $path_to_file.rand(1000,3000).".".$file_name;

	  copy($file,$location);

	  unlink($file);

	  $content .= "Uploaded File: ".$location."\n";

   }

}


// second file (see manual for instructions on how to add more.)

if ($file2_name) {

   if ($file_size > 0) {

	  if (!ereg("/$", $path_to_file))

		 $path_to_file = $path_to_file."/";

	  $location = $path_to_file.$file2_name;

	  if (file_exists($path_to_file.$file2_name))

		 $location = $path_to_file.rand(1000,3000).".".$file2_name;

	  copy($file2,$location);

	  unlink($file2);

	  $content .= "Uploaded File: ".$location."\n";

   }

}


// if the env_report option is on: get eviromental variables

if ($env_report) {

   $env_report = ereg_replace( " +", "", $env_report);

   $env_reports = split(",",$env_report);

   $content .= "\n------ eviromental variables ------\n";

   for ($i=0;$i<count($env_reports);$i++) {

	  $string = trim($env_reports[$i]);

	  if ($env_reports[$i] == "REMOTE_HOST")

		 $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";

	  if ($env_reports[$i] == "REMOTE_USER")

		 $content .= "REMOTE USER: ". $REMOTE_USER."\n";

	  if ($env_reports[$i] == "REMOTE_ADDR")

		 $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";

	  if ($env_reports[$i] == "HTTP_USER_AGENT")

		 $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";

   }

}


// send it off

mail_it(stripslashes($content), ($subject)?stripslashes($subject):"Form Submission", $email, $recipient);

if (file_exists($ar_file)) {

   $fd = fopen($ar_file, "rb");

   $ar_message = fread($fd, filesize($ar_file));

   fclose($fd);

   mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Form Submission", ($ar_from)?$ar_from:$recipient, $email);

}


// if the redirect option is set: redirect them

if ($redirect) {

   header("Location: $redirect");

   exit;

} else {

   echo "Спасибо! Форма отправлена\n<a href=\"#\" onclick=\"java script:window.close();\">Закройте</a> окно, чтобы вернуться к форме.";

   exit;

}


// <----------	THE END	----------> //

Изменено пользователем Captain
Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...
  • 2 недели спустя...

а это всё на 8.2 работает??

подскажите, пожалуйста, что нужно и где прописать, чтобы в письме приходила ссылка (ну или просто адрес) на страницу с которой пользователь пришёл на эту страницу с формой обратной связи??

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

заранее спасибо

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

Подскажите, пожалуйста, как подключить этот шаблон в main.tpl (по типу {formorder})?

берете и вставляете просто HTML форму с нужными полями и с нужным действием в форме. Как должна выглядеть форма, и ее параметры можно просто посмотреть на странице обратной связи в исходном коде

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

берете и вставляете просто HTML форму с нужными полями и с нужным действием в форме. Как должна выглядеть форма, и ее параметры можно просто посмотреть на странице обратной связи в исходном коде

Сделал так, как Вы сказали. Выглядит ровно, все нажимается, но почему то письмо не отправляет. (vasha-kniga.ru - кнопка "Совет" сверху)

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

И еще вопрос, извиняюсь, что так много. Как можно сделать так, чтобы капча выводилась только для неавторизованных?

Заранее благодарю.

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

Сделал так, как Вы сказали. Выглядит ровно, все нажимается, но почему то письмо не отправляет. (vasha-kniga.ru - кнопка "Совет" сверху)

форма должна отправляться на http://www.vasha-kniga.ru/index.php?do=feedback а не на главную страницу

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

всем не уходить или кому то одному?

И еще вопрос, извиняюсь, что так много. Как можно сделать так, чтобы капча выводилась только для неавторизованных?

Нет. Хотите чтобы почта подверглась атаке? Как? Сделаю скрипт который будет слать 1000 писем в минуту.

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

форма должна отправляться на http://www.vasha-kniga.ru/index.php?do=feedback а не на главную страницу

То есть в этом месте форму разместить не удасться?

Не уходит всем. Я прововал регистрироваться на три разных ящика, ни на один письмо не пришло. А через форму обратной связи все нормально уходит.

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

Либо что-то сам промозговал в статье - или в 9,4 такая тема не рулит (хотя на врятли) руки кривые скорее всего. С формы отправляется только текст сообщения, а инфа с дополнительных полей не шлется на мыло. Вот код модуля.


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

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

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

В результате мне шлется только от кого и сообщение. Вод код формы tpl файла.

[not-logged]

  <tr>

   <td class="label">

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

   </td>

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

  </tr>

  <tr>

   <td class="label">

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

   </td>

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

  </tr>

  <tr>

   <td class="label">

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

   </td>

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

  </tr>

  <tr>

   <td class="label">

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

   </td>

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

  </tr>

[/not-logged]

Каким образом заставить слать инфу с полей домашний номер и сотовый номер?

Приходит письмо след вида.

Root,

Данное письмо вам отправил Василий Пупкин с сайта http://*******.dle/

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

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

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

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

IP адрес отправителя: ***.***.***.***

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

Помните, что администрация сайта не несет ответственности за содержание данного письма

С уважением,

Администрация http://****.dle/

Нужно письмо след вида:

Root,

Данное письмо вам отправил Василий Пупкин с сайта http://*******.dle/

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

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

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

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

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

Объявление: Объявление какое-то!

IP адрес отправителя: ***.***.***.***

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

Помните, что администрация сайта не несет ответственности за содержание данного письма

С уважением,

Администрация http://****.dle/

Звездочки подставил сам в целях сокрытия информации. Используется при отсылке письма модуль денвера Sendmail

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

Подскажите, пожалуйста, как подключить этот шаблон в main.tpl (по типу {formorder})?

берете и вставляете просто HTML форму с нужными полями и с нужным действием в форме. Как должна выглядеть форма, и ее параметры можно просто посмотреть на странице обратной связи в исходном коде

Подскажите как это правильно сделать? Попробовал сделать в main.tpl - получилось просто пустая форма, код не меняет, письмо не отправляется.

alt-ural.ru

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

Respayn описал ситуацию которая один в один похожа на мою. Если кто нашел решение, подскажите пожалуйста. Есть подозрение что в 9. и выше версиях надо править еще какие то файлы.

kazna74.ru

Добавляю информацию может кому пригодится:

Собственно как я и писал выше изменять нужно еще файл engine/ajax/formorder.php

Находим там строчку



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

и заменяем на


$message = 'Город: '.trim(stripslashes( convert_unicode($_POST['city'], $config['charset'] ) ) ).'[/font][/color]

[color=#282828][font=helvetica, arial, sans-serif]Cтрана: '.trim(stripslashes( convert_unicode($_POST['country'], $config['charset'] ) ) ).'[/font][/color]

[color=#282828][font=helvetica, arial, sans-serif]Сообщение: '.trim(stripslashes( convert_unicode($_POST['message'], $config['charset'] ) ) );

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

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

все, решил проблему ! теперь у меня есть готовый модуль отправки с вложениями...

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

так налей куда ! :D

там же три файлоса разом рукописных...

http://www.bombmotors.ru/

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

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

все, тут уже можно не пробовать - закрыто..

кому интересно - могу намылить скрипты

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

http://www.rekinco2.ru/viewpage.php?page_id=10

вот тут видно как выглядит

вроде работает нормально

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

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

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

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

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

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

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

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

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

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