|
Форум -> Обо всём... -> Форма обратной связи с возможностью прекрепить файл | Форма обратной связи с возможностью прекрепить файл |
---|
otherside | Дата: 01.06.2009, в 14:28 | Сообщение №1 | СтарожилПользователь №: 22 Сообщений: 387
| Добрый день, господа!
ИТак, нужно сделать форму обратной связи на сайте и чтоб была возможностиь прикрепить файл (а точнее несколько файлов) и чтоб все это добро падало на e-mail. Сама то форма обратной связи есть и она прекрасно пашет, а вот подскажите, как реализовать прикрепление файлов?
Благодарю!
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно otherside 01.06.2009 г. в 14:30:06 |
| | Serg_pnz | Дата: 01.06.2009, в 14:46 | Сообщение №2 | АдминистраторПользователь №: 1 Сообщений: 2243
| Код | 1
| function send_mail($to, $thm, $html, $path)
{
$fp = fopen($path,"r");
if (!$fp)
{
print "Файл $path не может быть прочитан";
exit();
}
$file = fread($fp, filesize($path));
fclose($fp);
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers .= "MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$headers .= "From: =?тут не знаю что писать, что бы пришел по-русски заголовок этот код брал из outlook express?= <adres@yandex.ru>\r\n";
$multipart .= "--$boundary\n";
$kod = 'windows-1251'; // или $kod = 'windows-1251';
$multipart .= "Content-Type: text/html; charset=$kod\n";
$multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
$multipart .= "$html\n\n";
$message_part = "--$boundary\n";
$message_part .= "Content-Type: application/octet-stream\n";
$message_part .= "Content-Transfer-Encoding: base64\n";
$message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
$message_part .= chunk_split(base64_encode($file))."\n";
$multipart .= $message_part."--$boundary--\n";
if(!mail($to, $thm, $multipart, $headers))
{
echo "К сожалению, письмо не отправлено";
exit();
}
} |
где
Код | 1
| $to - мыло получателя
$thm - заголовок письма
$html - тело письма
$path - путь к файлу |
Так же обратите внимание на этот участок кода
Код | 1
| $headers .= "From: =?тут не знаю что писать, что бы пришел по-русски заголовок этот код брал из outlook express?= <adres@yandex.ru>\r\n"; |
| Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
| | Serg_pnz | Дата: 01.06.2009, в 14:49 | Сообщение №3 | АдминистраторПользователь №: 1 Сообщений: 2243
| Исходник, откуда выдернул вспомогательную функцию | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
| | otherside | Дата: 16.03.2010, в 23:55 | Сообщение №4 | СтарожилПользователь №: 22 Сообщений: 387
| Появилась необходимость в модуле Account добавить функцию (назовем её editdata) с простой формой обратной связи, отсылающая данные на указанный e-mail.
Есть у меня модуль подобный, состоящий только из одной формы, но вот перетащить её в функцию в модуль Account не получается ни как.
Товарищи, поделитесь кто нить формой обратной связи, которую можно было в функцию Аккаунт внедрить.
Slaed 2.5
Спасибо.
Я вот примерно так пытаюсь эту функцию соорудить. Отдельно, как модуль эта форма отлично работает.
PHP - Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| <?php function editdata() { global $user, $userinfo, $Default_Theme, $user_newsletter, $broadcast_msg, $user_news, $storyhome, $module_name, $pagetitle, $defis, $update_points, $stop, $aupload, $adirectory, $atypefile, $amaxsize, $awidth, $aheight, $nomer_company, $result7, $db, $prefix, $sitekey, $form_block; $pagetitle = "$defis "._CHANGEHOME.""; head(); title(""._CHANGEHOME." | Изменить данные компании"); if ($_POST['op'] != "sys") { OpenTable(); echo ""._PRAVILO.""; echo "<form method=\"post\" action=\"index.php?name=Account&op=editdata\">"; CloseTable(); }
$callip = getenv("REMOTE_ADDR"); $callip2 = getenv("HTTP_USER_AGENT"); $form_block = "<form method=\"post\" action=\"index.php?name=Account&op=editdata\">" ."<table border=\"0\" cellpadding=\"10\" cellspacing=\"1\" width=\"100%\" class=\"bgcolor4\" align=\"center\">" ."<tr class=\"bgcolor1\"><th colspan=\"2\" align=\"center\">"._S_TITLE."</th></tr>" ."<tr class=\"bgcolor1\"><td>"._fio."</td><td><input type=\"text\" name=\"sender_fio\" size=\"65\" style=\"width: 350px\"> </td></tr>" ."<tr class=\"bgcolor1\"><td>"._god_mesto."</td><td><input type=\"text\" name=\"god_mesto\" size=\"65\" style=\"width: 350px\"> </td></tr>" ."<tr class=\"bgcolor1\"><td>"._sender_obr."</td><td><textarea name=\"sender_obr\" cols=\"65\" rows=\"3\" style=\"width: 350px\"></textarea></td></tr>" ."<tr class=\"bgcolor1\"><td>"._svyazi."</td><td><input type=\"text\" name=\"svyazi\" size=\"65\" style=\"width: 350px\"> </td></tr>" ."<tr class=\"bgcolor1\"><td>"._opit."</td><td><textarea name=\"opit\" cols=\"65\" rows=\"3\" style=\"width: 350px\"></textarea></td></tr>" ."<tr class=\"bgcolor1\"><td>"._doljnost."</td><td><input type=\"text\" name=\"doljnost\" size=\"65\" style=\"width: 350px\"> </td></tr>" ."<tr class=\"bgcolor1\"><td>"._sem."</td><td><input type=\"text\" name=\"sem\" size=\"65\" style=\"width: 350px\"> </td></tr>" ."<tr class=\"bgcolor1\"><td>"._rec."</td><td><textarea name=\"rec\" cols=\"65\" rows=\"3\" style=\"width: 350px\"></textarea></td></tr>" ."<tr class=\"bgcolor1\"><td>"._con."</td><td><textarea name=\"con\" cols=\"65\" rows=\"3\" style=\"width: 350px\"></textarea></td></tr>" ."<tr class=\"bgcolor1\"><td>"._S_MAIL."</td><td><input type=\"text\" name=\"sender_email\" value=\"$sender_email\" size=\"65\" style=\"width: 350px\"></td></tr>"
."<tr class=\"bgcolor1\"><td colspan=\"2\" align=\"center\"><input type=\"hidden\" name=\"op\" value=\"sys\"><input type=\"submit\" value=\""._S_SEND."\"></td></tr></form></table>"; if ($_POST['op'] != "sys") { OpenTable(); echo $form_block; CloseTable(); } elseif ($_POST['op'] == "sys") { $sender_fio = $_POST['sender_fio']; $god_mesto = $_POST['god_mesto']; $sender_obr = $_POST['sender_obr']; $svyazi = $_POST['svyazi']; $opit = $_POST['opit']; $doljnost = $_POST['doljnost']; $sem = $_POST['sem']; $rec = $_POST['rec']; $con = $_POST['con']; $sender_email = $_POST['sender_email']; if ($sender_fio == "" OR $god_mesto == "" OR $sender_obr == "" OR $svyazi == "" OR $opit == "" OR $doljnost == "" OR $sem == "" OR $rec == "" OR $con == "" OR $sender_email == "") { $send_error = "<center><font class=\"option\"><b>"._S_ERROR."</b></font></center>"; } if ($send_error == "") { $to = "sdfsdf@sdfsfolg.ru"; $subject = "Отклик на вакансию"; $msg .= "Обязательные поля:\n\n"; $msg .= "Ф.И.О.: $sender_fio\n\n"; $msg .= "Год и место рождения: $god_mesto\n\n"; $msg .= "Образование (наименование учебного заведения, годы учебы, специальность, степень), владение иностранными языками: $sender_obr\n\n"; $msg .= "С руководством каких предприятий имеете наработанные связи: $svyazi\n\n"; $msg .= "Опыт работы (название и адрес организации, период, должность, обязанности): $opit\n\n"; $msg .= "Желаемая должность: $doljnost\n\n"; $msg .= "Семейное положение: $sem\n\n"; $msg .= "Рекомендации возможны от (указать ФИО, должность и контактные телефоны рекомендующего лица): $rec\n\n"; $msg .= "Контактная информация (страна, город, телефон, e-mail): $con\n\n"; $msg .= "E-Mail адрес для связи: $sender_email\n\n"; $mailheaders = "Content-Type: text/plain; charset="._CHARSET."\n"; $mailheaders .= "X-Priority: 3\n"; $mailheaders .= "From: \"$sender_fio\" <$sender_email>\n"; $mailheaders .= "Reply-To: $sender_email\n\n"; mail($to, $subject, $msg, $mailheaders); OpenTable(); echo ""._S_SENDED.""; CloseTable(); } else { warning($send_error, "", "", 1); OpenTable(); echo $form_block; CloseTable(); } } OpenTable(); nav(); CloseTable(); foot(); } ?> |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно otherside 16.03.2010 г. в 23:58:05 |
| | Serg_pnz | Дата: 17.03.2010, в 11:34 | Сообщение №5 | АдминистраторПользователь №: 1 Сообщений: 2243
| В млн-первый раз: что конкретно не получается???
Посмотри еще это | Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот |
| | otherside | Дата: 17.03.2010, в 11:40 | Сообщение №6 | СтарожилПользователь №: 22 Сообщений: 387
| Не важно, заполнена форма или нет, нажимаем отправить. в адресной строке прописана ссылка вида http://www.******.com/index.php?name=Account&op=editdata, а отображается главная страница модуля Account. Естественно что письмо не отсылается. |
| | xand | Дата: 17.03.2010, в 17:56 | Сообщение №7 | ГостьПользователь №: 1081 Сообщений: 1
| Здравствуйте! Хочу сразу изввиниться перед модераторами, таких тем уже есть и не одна, но я не нашёл там ответа на свои вопросы. У меня 2 вопроса.
Вопрос №1: я сгенерировал форму обратной связи генератором (http://www.php-mail.ru/?id=6), сделал всё ка кнадо, выставил всё что нужно, получил 3 файла php на выходе. Но куда их теперь девать и вставлять для меня большая загадка. Попытался просто залить на фтп сайта, они там спокойно лежат и толку от них ноль...попробовал вставить код в html код странички, так же результата не добился...если не сложно подскажите по шагам что нужно и как сделать, желательно подробнее :)
Вопрос 2. Не получилось с генератором, я проштудировал несколько сайтов, нарыл несколько подобных форм, составил свою, составил файл php, всё вроде работает, но нужно добавить прикрепление файла(картинки)...подскажите это можно сделать к этой форме:
код который вставил в страничку
Код | 1
| <div>
<form action="getmail.php" method="post">
<p><span class="red">*</span> <strong>Название компании:</strong><br></p>
<p><input type="text" name="nick" size="30" /></p><br>
<p><span class="red">*</span> <strong>Ваш E-mail:</strong><br></p>
<p><input type="text" name="email" size="35" /></p><br>
<p><span class="red">*</span> <strong>Рубрика каталога:</strong></p>
<p><select name="rubrika">
<option>
<option> Видео
<option> Фотосъёмка
</select></p>
<br>
<p><span class="red">*</span> <strong>Адрес:</strong><br></p>
<p><textarea name="adres" cols="50" rows="2"></textarea>
<p><span class="red">*</span> <strong>Телефон:</strong><br></p>
<p><input type="text" name="telefon" size="30" /></p><br>
<p><span class="red">*</span> <strong>Анонс:</strong><br>
Краткое описание, которое будет отображаться в каталоге</p>
<p><textarea name="anons" cols="50" rows="6"></textarea>
<p><span class="red">*</span> <strong>Описание:</strong><br>
Расширенное описание, которое будет отображаться при нажатии на Ваше объявление</p>
<p><textarea name="opisanie" cols="50" rows="6"></textarea>
</a></p>
<p><input type="submit" value="Отправить анкету" id="submit_mail" /></p>
</form>
</div> |
Залил на фтп файл с расширением php
Код | 1
| <?php
$url = "mail.htm";
$title = "СП";
$subject = "анкета регистрации $title";
$admail = "МОЙ АДРЕС";
$back = "<p><a href=\"javascript: history.back()\">Назад</a></p>";
if(@$_POST['nick'] or @$_POST['email'] or @$_POST['rubrika'] or @$_POST['anons'])
{
@$nick = $_POST['nick'] or die("Убедитесь, что вы ввели свое имя!$back");
@$email = $_POST['email'] or die("Убедитесь, что вы ввели свой E-mail!$back");
@$rubrika = $_POST['rubrika'] or die("Убедитесь, что вы выбрали Рубрику каталога!$back");
@$adres = $_POST['adres'] or die("Убедитесь, что вы ввели адрес!$back");
@$telefon = $_POST['telefon'] or die("Убедитесь, что вы ввели Телефон!$back");
@$anons = $_POST['anons'] or die("Убедитесь, что вы заполнили поле Анонс!$back");
@$opisanie = $_POST['opisanie'] or die("Убедитесь, что вы заполнили поле Описание!$back");
if(!eregi("^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$", $email))
{
echo "Убедитесь, что вы ввели корректный E-mail!$back";
exit;
}
$content = "\nНазвание компании $nick!\n
E-mail: $email\n
Анкета регистрации с сайта - \"$title\"\n
Рубрика каталога: $rubrika
\nАдрес: $adres,
\nТелефон: $telefon,
\nАнонс: $anons,
\nОписание: $opisanie";
if(!@mail($admail, $subject, $content))
{
echo "Ошибка при отправке письма. Пожалуйста сообщите об этом администратору данного сайта, используя любой другой вид связи.$back";
exit;
}
else
{
echo "Ваше сообщение успешно отправлено!<Br> Вы получите ответ в ближайшее время ";
echo "<meta http-equiv=\"refresh\" content=\"1;URL=$url\">";
}
}
else {
die("Для отправки сообщения заполните все поля отмеченные звёздочками!$back");
}
?> |
Всё работает, сообщение приходит на мыло. Так же ещё хотел спросить как можно сделать чтобы поля были не обязательны к заполнению, и при это если их пожелали заполнить в письме они не были пусты.
Заранее благодарю :) |
| | otherside | Дата: 23.03.2010, в 11:49 | Сообщение №8 | СтарожилПользователь №: 22 Сообщений: 387
| Что касается моего вопроса, то отбой. Помогли мне решить эту проблему |
| | | Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|
|
|
|