Muddy 5 Опубликовано: 17 марта 2009 Рассказать Опубликовано: 17 марта 2009 Потребовалось создать дополнительную форму обратной связи, поискал на форуме - решение есть, но оно в разделе для клиентов, хотя мы и купили за всё время работы с 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 1 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Muddy 5 Опубликовано: 18 марта 2009 Рассказать Опубликовано: 18 марта 2009 Автор Пардон, совсем уже не смотрю, что копи-паст делаю, Title для нашей страницы можно сделать без проблем. Вернитесь к пункту 3 и вместо него сделайте: 3. Открываем файл engine/engine.php находим: находим: elseif ($do == 'feedback') $nam_e=$lang['title_feed']; ниже всталвяем: elseif ($do == 'formorder') $nam_e=$lang['title_formorder']; И в языковом файле прописываем 'title_formorder' с названием нашей страницы. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
roman78 0 Опубликовано: 28 марта 2009 Рассказать Опубликовано: 28 марта 2009 мысли по п.4 при юзе браузерной кнопки "назад" (в случае оперы машинайльный клик райт-лефт) ничего не пропадает. Если не ошибаюсь нет больших сложностей в установке аналога кнопки в хтмл. Что с этим можно сделать дальше хз Цитата Ссылка на сообщение Поделиться на других сайтах
SKDzR 1 Опубликовано: 4 апреля 2009 Рассказать Опубликовано: 4 апреля 2009 на php такую вещь легко сделать... (естественно с элементами html, a именно "<form action="mail.php"> input.... </form>")... ыы)) и никакой мароки) Цитата Ссылка на сообщение Поделиться на других сайтах
domeni 2 Опубликовано: 20 апреля 2009 Рассказать Опубликовано: 20 апреля 2009 а я просто стандартную форму обратной связи переделал под форму заказа, на мыле поставил фильтр по заголовку (заголовок скрыт от пользователя) и сейчас все письма с заказом попадают в одну папку очень удобно и сразу понятно от какого юзера Цитата Ссылка на сообщение Поделиться на других сайтах
Testing 0 Опубликовано: 11 июля 2009 Рассказать Опубликовано: 11 июля 2009 Пардон, совсем уже не смотрю, что копи-паст делаю, Title для нашей страницы можно сделать без проблем. Вернитесь к пункту 3 и вместо него сделайте: 3. Открываем файл engine/engine.php находим: находим: elseif ($do == 'feedback') $nam_e=$lang['title_feed']; ниже всталвяем: elseif ($do == 'formorder') $nam_e=$lang['title_formorder']; И в языковом файле прописываем 'title_formorder' с названием нашей страницы. Спасибо, помог организовать форму! А как сделать, чтобы поле "Получатель:" не было, а всегда на один и тот же адрес электронной почты отправлялись данные с форм??? Помогите пожалуйста! Цитата Ссылка на сообщение Поделиться на других сайтах
Muddy 5 Опубликовано: 11 июля 2009 Рассказать Опубликовано: 11 июля 2009 (изменено) Автор В шаблоне делаешь <input type="hidden" name="recip" value="1"> value - это ID пользователя, которому будут отправлятюся email. ID можно посмотреть в админке - редактирование пользователя, кликни на никнейм (изменить) и увидишь в открывшемся окне URL, в котором и присутствует ID, например, .../admin.php?mod=editusers&action=edituser&id=1 а я просто стандартную форму обратной связи переделал под форму заказа, на мыле поставил фильтр по заголовку (заголовок скрыт от пользователя) и сейчас все письма с заказом попадают в одну папку очень удобно и сразу понятно от какого юзера проблема в том, что мне надо было сделать три независмые и разные формы. То есть одна форма связи и два опросника. Изменено 11 июля 2009 пользователем Muddy 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Captain 623 Опубликовано: 13 июля 2009 Рассказать Опубликовано: 13 июля 2009 (изменено) Вот довольно мощный скрипт, можно к DLE прикрутить, выкладывал уже вроде Скачать здесь... Основные настройки формы: <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 ----------> // Изменено 13 июля 2009 пользователем Captain 1 Цитата Ссылка на сообщение Поделиться на других сайтах
gravisit 1 Опубликовано: 4 сентября 2009 Рассказать Опубликовано: 4 сентября 2009 Молодец Muddy, спасибо за метод. Может и знаешь как поля для отправки файла изображения туда прилепить? 1 Цитата Ссылка на сообщение Поделиться на других сайтах
CTALKEP 0 Опубликовано: 12 сентября 2009 Рассказать Опубликовано: 12 сентября 2009 а это всё на 8.2 работает?? подскажите, пожалуйста, что нужно и где прописать, чтобы в письме приходила ссылка (ну или просто адрес) на страницу с которой пользователь пришёл на эту страницу с формой обратной связи?? нужно для того, чтобы реализовать функцию "жалобы на материал" .. заранее спасибо Цитата Ссылка на сообщение Поделиться на других сайтах
nohc 0 Опубликовано: 14 сентября 2009 Рассказать Опубликовано: 14 сентября 2009 Подскажите, пожалуйста, как подключить этот шаблон в main.tpl (по типу {formorder})? Очень нужно Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 14 сентября 2009 Рассказать Опубликовано: 14 сентября 2009 Подскажите, пожалуйста, как подключить этот шаблон в main.tpl (по типу {formorder})? берете и вставляете просто HTML форму с нужными полями и с нужным действием в форме. Как должна выглядеть форма, и ее параметры можно просто посмотреть на странице обратной связи в исходном коде 1 Цитата Ссылка на сообщение Поделиться на других сайтах
nohc 0 Опубликовано: 15 сентября 2009 Рассказать Опубликовано: 15 сентября 2009 берете и вставляете просто HTML форму с нужными полями и с нужным действием в форме. Как должна выглядеть форма, и ее параметры можно просто посмотреть на странице обратной связи в исходном коде Сделал так, как Вы сказали. Выглядит ровно, все нажимается, но почему то письмо не отправляет. (vasha-kniga.ru - кнопка "Совет" сверху) И еще, заметил что при регистрации уведомление на e-mail не уходит. Может подскажет кто-нибудь, с чем это может быть связано? И еще вопрос, извиняюсь, что так много. Как можно сделать так, чтобы капча выводилась только для неавторизованных? Заранее благодарю. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 16 сентября 2009 Рассказать Опубликовано: 16 сентября 2009 Сделал так, как Вы сказали. Выглядит ровно, все нажимается, но почему то письмо не отправляет. (vasha-kniga.ru - кнопка "Совет" сверху) форма должна отправляться на http://www.vasha-kniga.ru/index.php?do=feedback а не на главную страницуИ еще, заметил что при регистрации уведомление на e-mail не уходит. Может подскажет кто-нибудь, с чем это может быть связано? всем не уходить или кому то одному? И еще вопрос, извиняюсь, что так много. Как можно сделать так, чтобы капча выводилась только для неавторизованных? Нет. Хотите чтобы почта подверглась атаке? Как? Сделаю скрипт который будет слать 1000 писем в минуту. Цитата Ссылка на сообщение Поделиться на других сайтах
nohc 0 Опубликовано: 16 сентября 2009 Рассказать Опубликовано: 16 сентября 2009 форма должна отправляться на http://www.vasha-kniga.ru/index.php?do=feedback а не на главную страницу То есть в этом месте форму разместить не удасться? Не уходит всем. Я прововал регистрироваться на три разных ящика, ни на один письмо не пришло. А через форму обратной связи все нормально уходит. Цитата Ссылка на сообщение Поделиться на других сайтах
Respayn 1 Опубликовано: 16 ноября 2011 Рассказать Опубликовано: 16 ноября 2011 (изменено) Либо что-то сам промозговал в статье - или в 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 Изменено 16 ноября 2011 пользователем Respayn 1 Цитата Ссылка на сообщение Поделиться на других сайтах
alternativa 4 Опубликовано: 27 февраля 2012 Рассказать Опубликовано: 27 февраля 2012 (изменено) Подскажите, пожалуйста, как подключить этот шаблон в main.tpl (по типу {formorder})? берете и вставляете просто HTML форму с нужными полями и с нужным действием в форме. Как должна выглядеть форма, и ее параметры можно просто посмотреть на странице обратной связи в исходном коде Подскажите как это правильно сделать? Попробовал сделать в main.tpl - получилось просто пустая форма, код не меняет, письмо не отправляется. alt-ural.ru Изменено 27 февраля 2012 пользователем alternativa Цитата Ссылка на сообщение Поделиться на других сайтах
Istigrit 2 Опубликовано: 29 марта 2012 Рассказать Опубликовано: 29 марта 2012 (изменено) 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'] ) ) ); Кстати подправьте код пожалуйста, я не программист просто, подозреваю что все можно написать более лаконично. Изменено 29 марта 2012 пользователем Istigrit 2 Цитата Ссылка на сообщение Поделиться на других сайтах
Klemanso 15 Опубликовано: 31 января 2013 Рассказать Опубликовано: 31 января 2013 Никто не прикручивал к подобной форме - вложение файлов ?! Цитата Ссылка на сообщение Поделиться на других сайтах
Klemanso 15 Опубликовано: 3 февраля 2013 Рассказать Опубликовано: 3 февраля 2013 все, решил проблему ! теперь у меня есть готовый модуль отправки с вложениями... Цитата Ссылка на сообщение Поделиться на других сайтах
Ramazello 1 Опубликовано: 5 февраля 2013 Рассказать Опубликовано: 5 февраля 2013 все, решил проблему ! теперь у меня есть готовый модуль отправки с вложениями... привет, поделись)) Цитата Ссылка на сообщение Поделиться на других сайтах
Klemanso 15 Опубликовано: 16 февраля 2013 Рассказать Опубликовано: 16 февраля 2013 (изменено) так налей куда ! там же три файлоса разом рукописных... http://www.bombmotors.ru/ работа видна тут по сцылке завка на обслуживание, только нада регистрацию пройти (ну типа защита от спаму... примитивная) Изменено 16 февраля 2013 пользователем Klemanso 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Klemanso 15 Опубликовано: 30 марта 2013 Рассказать Опубликовано: 30 марта 2013 все, тут уже можно не пробовать - закрыто.. кому интересно - могу намылить скрипты Цитата Ссылка на сообщение Поделиться на других сайтах
Klemanso 15 Опубликовано: 19 апреля 2013 Рассказать Опубликовано: 19 апреля 2013 http://www.rekinco2.ru/viewpage.php?page_id=10 вот тут видно как выглядит вроде работает нормально Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.