"Прикрепить файл" в форме связи

S7
На сайте с 20.11.2009
Offline
33
8269

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

Код обработчика (mail.php) без "прикрепить файл":

<?php

if(empty($_POST['name']) or empty($_POST['city']) or empty($_POST['interes']) or empty($_POST['email']) or empty($_POST['mess']))
{
header('Location: http://www.kentaurus.ru/contacts_faul.html');
exit;
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<title>Дизайн-студия "Альфа Центавра". Обратная
связь</title>
</head>
<body>
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['city'])) {$city = $_POST['city'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['interes'])) {$interes = $_POST['interes'];}

$from = $_POST['email'];
$to = "rigel@kentaurus.ru"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
$headers = "Content-type: text/plain; charset = windows-1251 \r\nFrom: Дизайн-студия ‹‹Альфа Центавра›› <rigel@kentaurus.ru>";
$subject = "Сообщение с сайта Kentaurus.ru";
$message = "Имя отправителя: $name \r\nГород: $city \r\nЧто интересует: $interes \r\nТекст сообщения: $mess \r\nE-mail: $email ";

$send = mail($from, $subject, $message, $headers);
$send = mail ($to, $subject, $message, $headers);


if ($send == 'true')
{
echo "<br /><br /><br />";
echo "<p align=center><a href=http://www.kentaurus.ru/><img border=0 src=http://www.kentaurus.ru/img/logo.jpg width=300 height=96 alt=Альфа Центавра title=Альфа Центавра></a>";
echo "<p align=center>Спасибо за отправку вашего сообщения!";
echo "<p align=center><a href=contacts.html>Нажмите</a>, чтобы вернуться на предыдущую страницу.";
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
</body>
</html>

Через поиск на сайте нашел несоклько похожих тем, но ничего не помогло.

Код поля "прикрепить файл" в форме:

<strong>Файл:</strong><br /> <input type="file" name="file">

Заранее спасибо всем откликнувшимся.

---------- Добавлено 25.01.2012 в 14:52 ----------

Может этот вариант ближе к истине?

<?php

if(empty($_POST['name']) or empty($_POST['city']) or empty($_POST['interes']) or empty($_POST['email']) or empty($_POST['mess']))
{
header('Location: http://www.kentaurus.ru/contacts_faul.html');
exit;
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<title>Дизайн-студия "Альфа Центавра". Обратная
связь</title>
</head>
<body>
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['city'])) {$city = $_POST['city'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['interes'])) {$interes = $_POST['interes'];}
if (isset($_POST['file'])) {$file = $_POST['file'];}

$from = $_POST['email'];
$to = "rigel@kentaurus.ru"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
$headers = "Content-type: text/plain; charset = windows-1251 \r\nFrom: Дизайн-студия ‹‹Альфа Центавра›› <rigel@kentaurus.ru>";
$subject = "Сообщение с сайта Kentaurus.ru";
$message = "Имя отправителя: $name \r\nГород: $city \r\nЧто интересует: $interes \r\nТекст сообщения: $mess \r\nE-mail: $email ";
$file = $_POST['file'];

$send = mail($from, $subject, $message, $headers, $file);
$send = mail ($to, $subject, $message, $headers, $file);


if ($send == 'true')
{
echo "<br /><br /><br />";
echo "<p align=center><a href=http://www.kentaurus.ru/><img border=0 src=http://www.kentaurus.ru/img/logo.jpg width=300 height=96 alt=Альфа Центавра title=Альфа Центавра></a>";
echo "<p align=center>Спасибо за отправку вашего сообщения!";
echo "<p align=center><a href=contacts.html>Нажмите</a>, чтобы вернуться на предыдущую страницу.";
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
</body>
</html>
S7
На сайте с 20.11.2009
Offline
33
#1

тема все еще актуальна... помогите, плиз, кто чем может?

palladin_jedi
На сайте с 13.07.2010
Offline
71
#2

Попробуйте построить логику скриптов по-другому:

- Форма отправки сообщения

+ HTML-код

+ Яваскриптовый обработчик, который дёргает AJAX загрузки файлов на сервер

+ PHP-скрипт загрузки файлов на сервер

- Скрипт отправки сообщения.

По поводу прикрепления файлов к почте - гуглите, если мне память ни с кем не изменила там однозначных решений нет, каждый подстраивается под свои нужды и возможности.

Сайт о web-разработке и прочем (http://seazo.net)||Продвижение статьями под Google (http://short.seazo.net/ght4zf) Бесплатные консультации рефералам Sape (http://www.sape.ru/r.SWfwWOblBo.php) PHP и JS скрипты на заказ, создание сайтов с нуля и на CMS.
aklimovv
На сайте с 18.01.2008
Offline
224
#3
Дизайн-студия "Альфа Центавра".

Странная какая-то студия, вы что не можете в поисковиках посмотреть, там этих скриптов в свободном доступе пруд-пруди. А... понял, удобнее конечно месагу запостить на форуме оптимизаторов.

S7
На сайте с 20.11.2009
Offline
33
#4

Сам разобрался с прикреплением файла.

Знающие люди, подскажите, плиз, что дописать в данный код чтоб копия письма отправлялась на почту пользователя?

<?php
session_start();
$admin = 'admin@restex.ru';

if ( isset( $_POST['sendMail'] ) ) {
$name = substr( $_POST['name'], 0, 64 );
$city = substr( $_POST['city'], 0, 64 );
$interes = substr( $_POST['interes'], 0, 64 );
$mess = substr( $_POST['mess'], 0, 250 );
$email = substr( $_POST['email'], 0, 64 );

$error = '';
if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';
if ( empty( $city ) ) $error = $error.'<li>Не заполнено поле "Город"</li>';
if ( empty( $interes ) ) $error = $error.'<li>Не заполнено поле "Интерес"</li>';
if ( empty( $mess ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';
if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';

if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )
$error = $error.'<li>поле "E-mail" должно соответствовать формату somebody@somewhere.ru</li>';
if ( !empty( $error ) ) {
$_SESSION['sendMailForm']['error'] = '<p>При заполнении формы были допущены ошибки:</p><ul>'.$error.'</ul>';
$_SESSION['sendMailForm']['name'] = $name;
$_SESSION['sendMailForm']['city'] = $city;
$_SESSION['sendMailForm']['interes'] = $interes;
$_SESSION['sendMailForm']['mess'] = $mess;
$_SESSION['sendMailForm']['email'] = $email;

header('Location: http://www.kentaurus.ru/contacts_faul.html');
die();
}

if ( !empty( $_FILES['file']['tmp_name'] ) and $_FILES['file']['error'] == 0 ) {
$filepath = $_FILES['file']['tmp_name'];
$filename = $_FILES['file']['name'];
} else {
$filepath = '';
$filename = '';
}

$body .= "АВТОР:\r\n".$name."\r\n\r\n";
$body .= "ГОРОД:\r\n".$city."\r\n\r\n";
$body .= "ЧТО ИНТЕРЕСУЕТ:\r\n".$interes."\r\n\r\n";
$body .= "СООБЩЕНИЕ:\r\n".$mess."\r\n\r\n";
$body .= "E-MAIL:\r\n".$email;

if ( send_mail($admin, $body, $email, $filepath, $filename) )
$_SESSION['success'] = true;
else
$_SESSION['success'] = false;
header( 'Location: '.$_SERVER['PHP_SELF'] );
die();
}

// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($admin, $body, $email, $filepath, $filename)
{
$subject = '=?windows-1251?B?'.base64_encode('Сообщение с сайта').'?=';
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers = "From: ".strtoupper($_SERVER['SERVER_NAME'])." <".$email.">\r\n";
$headers .= "Return-path: <".$email.">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
$multipart = "--".$boundary."\r\n";
$multipart .= "Content-type: text/plain; charset=\"windows-1251\"\r\n";
$multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";

$body = quoted_printable_encode( $body )."\r\n\r\n";

$multipart .= $body;

$file = '';
if ( !empty( $filepath ) ) {
$fp = fopen($filepath, "r");
if ( $fp ) {
$content = fread($fp, filesize($filepath));
fclose($fp);
$file .= "--".$boundary."\r\n";
$file .= "Content-Type: application/octet-stream\r\n";
$file .= "Content-Transfer-Encoding: base64\r\n";
$file .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
$file .= chunk_split(base64_encode($content))."\r\n";
}
}
$multipart .= $file."--".$boundary."--\r\n";

if( mail($admin, $subject, $multipart, $headers) )
return true;
else
return false;
}

function quoted_printable_encode ( $string ) {
// rule #2, #3 (leaves space and tab characters in tact)
$string = preg_replace_callback (
'/[^\x21-\x3C\x3E-\x7E\x09\x20]/',
'quoted_printable_encode_character',
$string
);
$newline = "=\r\n"; // '=' + CRLF (rule #4)
// make sure the splitting of lines does not interfere with escaped characters
// (chunk_split fails here)
$string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);
return $string;
}

function quoted_printable_encode_character ( $matches ) {
$character = $matches[0];
return sprintf ( '=%02x', ord ( $character ) );
}
?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Дизайн-студия "Альфа Центавра". Онлайн заказ</title>
<link rel="StyleSheet" type="text/css" href="/style/screen.css">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">

<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<META NAME="Publisher-Email" CONTENT="rigel@kentaurus.ru" />
<META NAME="Publisher-URL" CONTENT="http://www.kentaurus.ru/" />
<META NAME="Keywords" CONTENT="быстрая разработка сайта, разработка фирменного стиля прайс, разработка фирменного стиля, студия веб дизайна, разработка логотипа, изготовление сайтов, разработка сайтов, создание сайтов, заказать сайт, сайт визитка, сайт срочно, сайт дешево, заказ сайта, продвижение сайта, создание фирменного стиля, заказать разработку логотипа" />
<META NAME="Description" CONTENT="Сайт дизайн-студии АЛЬФА ЦЕНТАВРА: разработка логотипа, сайта, фирменного стиля" />
<style type="text/css">

.d1 { position: absolute;
top: 1588px;}

</style>
</head>
<body topmargin="0" bgcolor="#FFFFFF">
<?php
if ( isset( $_SESSION['sendMailForm'] ) ) {
echo $_SESSION['sendMailForm']['error'];
$name = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );
$city = htmlspecialchars ( $_SESSION['sendMailForm']['city'] );
$interes = htmlspecialchars ( $_SESSION['sendMailForm']['interes'] );
$mess = htmlspecialchars ( $_SESSION['sendMailForm']['mess'] );
$email = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );

unset( $_SESSION['sendMailForm'] );
} else {
$name = '';
$city = '';
$interes = '';
$mess = '';
$email = '';

}

if ( isset( $_SESSION['success'] ) ) {
if ( $_SESSION['success'] )
echo '<p align=center><a href=http://www.kentaurus.ru/><img border=0 src=http://www.kentaurus.ru/img/logo.jpg width=300 height=96 alt=Альфа Центавра title=Альфа Центавра></a>
<br /><br />Спасибо за отправку вашего сообщения!<br /><br /><a href=contacts.html>Нажмите</a>, чтобы вернуться на предыдущую страницу.</p>';

else
echo '<p>Ошибка при отправке письма</p>';
unset( $_SESSION['success'] );
}

?>

</body>
</html>
LinnTroll
На сайте с 12.01.2011
Offline
15
#5


if ( send_mail($admin, $body, $email, $filepath, $filename) ) {
send_mail($email, $body, $admin, $filepath, $filename);
$_SESSION['success'] = true;
} else {
$_SESSION['success'] = false;
}
http://vps.ua/ (https://vps.ua/clients/aff.php?aff=201) - самый лучший хостинг.
S7
На сайте с 20.11.2009
Offline
33
#6

LinnTroll, спсибо большое за помощь, бро!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий