Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Форма обратной связи. Дополнительные поля и адрес.
 
 автор: andres   (07.02.2007 в 12:56)   письмо автору
 
 

Подскажите как в этой форме обратной связи http://www.softtime.ru/scripts/mailattach.php , добавить дополнительные поля (например Имя, Фамилия) и как убрав поле To сделать чтобы письмо отправлялось на указанный в simple_mail адрес.

   
 
 автор: cheops   (07.02.2007 в 13:53)   письмо автору
 
   для: andres   (07.02.2007 в 12:56)
 

А так и добавляйте возмите за пример строку
<tr>
  <td width=50%>To:</td>
  <td align=right><input type=text name=mail_to maxlength=32></td>
</tr> 

и исправьте её так
<tr>
  <td width=50%>ФИО:</td>
  <td align=right><input type=text name=fio maxlength=32></td>
</tr> 

А в обработчике получайте содержимое поля при помощи $_POST['fio'], при этом $_POST['mail_to'] назначте константное значение
<?php
  $_POST
['mail_to'] = "somebody@somewhere.ru";
?>

   
 
 автор: andres   (08.02.2007 в 09:14)   письмо автору
 
   для: cheops   (07.02.2007 в 13:53)
 

Спасибо cheops, доступно объяснил нубу в PHP, попробую переделать...

P.S. Мир ни без добрых людей!

   
 
 автор: andres   (08.02.2007 в 09:54)   письмо автору
 
   для: andres   (08.02.2007 в 09:14)
 

вообще не понял в чем ошибка, почему-то не работает, вот приведу листинг формы и листинг PHP файла, жирным шрифтом выделю то, что я добавил в исходный код, для добавления раздела ФИО:

ФОРМА
<HTML> 
<HEAD> 
<TITLE>Отправка сообщения с вложением</TITLE> 
</HEAD> 
<BODY> 
<H3> <center><font color=#1E90FF>Отправка сообщения с вложением</font></H3> 
<center> 
<table width=1 border=0> 
<form action=simple_mail.php enctype='multipart/form-data' method=post> 

<tr>
<td width=50%>Кому:</td>
<td align=right><input type=text name=mail_to maxlength=32></td>
</tr> 

<tr>
<td width=50%>Тема:</td>
<td align=right><input type=text name=mail_subject maxlength=64></td>
</tr>

<tr> 
  <td width=50%>ФИО:</td> 
  <td align=right><input type=text name=fio maxlength=32></td> 
</tr> 


<tr>
<td colspan=2>Сообщение:<br>
<textarea cols=50 rows=8 name=mail_msg></textarea>
</td>

<tr><td width=50%>File:</td><td align=right><input type=file name=mail_file maxlength=64></td></tr> 
</tr><tr><td colspan=2><input type=submit value='Отправить'></td></tr> 
</form> 
</table> 
</center> 
</BODY> 
</HTML>


PHP
<?php
if(empty($_POST['mail_to'])) exit("creategames@mail.ru");
// проверяем правильности заполнения с помощью регулярного выражения
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $_POST['mail_to'])) exit("creategames@mail.ru");
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject']));
$_POST['fio'] = htmlspecialchars(stripslashes($_POST['fio']));
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg']));

$picture = "";

// Если поле выбора вложения не пустое - закачиваем его на сервер
if (!empty($_FILES['mail_file']['tmp_name']))
{
// Закачиваем файл
$path = $_FILES['mail_file']['name'];
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture = $path;
}
$thm = $_POST['mail_subject'];
$msg = $_POST['mail_msg'];
$msg = $_POST['fio'];
$mail_to = $_POST['mail_to'];
// Отправляем почтовое сообщение

if(empty($picture)) mail($mail_to, $thm, $msg);

else send_mail($mail_to, $thm, $msg, $picture);
// Вспомогательная функция для отправки почтового сообщения с вложением
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";
$multipart .= "--$boundary\n";
$kod = 'koi8-r'; // или $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; name = \"".$path."\"\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();
}
}

Что-то не так, а что непойму...

   
 
 автор: elenaki   (08.02.2007 в 10:46)   письмо автору
 
   для: andres   (08.02.2007 в 09:54)
 

а что не работает? какая ошибка?

я вижу, вы заменяете значение $msg, вместо того, чтобы прикрепить к нему новое поле. надо так:


$msg = $_POST['mail_msg'];
$msg .= $_POST['fio'];


точка - знак конкатенации строк. к прежнему значению $msg добавится поле fio. можно еще и название поля и пробел перед значением воткнуть:


$msg = $_POST['mail_msg'];
$msg .= "Ф.И.О. ".$_POST['fio'];

   
 
 автор: andres   (08.02.2007 в 11:46)   письмо автору
 
   для: elenaki   (08.02.2007 в 10:46)
 

elenaki спасибо за оперативный ответ, все работает...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования