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

Форум PHP

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

 

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

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

тема: форма для отправки с вложениями
 
 автор: avp   (01.10.2006 в 11:51)   письмо автору
 
 

все пишу в одной форме php и форму и обработчик событий

<HTML> 

<HEAD> 

<TITLE>Отправка сообщения с вложением</TITLE> 

</HEAD> 

<BODY> 

<H3> <center><font color=#1E90FF>Отправка сообщения с вложением</font></H3> 

<center> 

<table width=1 border=0> 

<form action="<?echo $PHP_SELF;?>" method="post">



<tr><td width=50%>To:</td><td align=right><input type=text name=mail_to maxlength=32></td></tr> 

<tr><td width=50%>Subject:</td><td align=right><input type=text name=mail_subject maxlength=64></td></tr> 

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

<tr><td width=50%>Photo:</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 

  
if(empty($_POST['mail_to'])) exit("адрес куда все шлется"); 

  
// проверяем правильности заполнения с помощью регулярного выражения 

  
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i"$_POST['mail_to'])) exit("адрес куда все шлется"); 

  
$_POST['mail_to'] = htmlspecialchars(stripslashes($_POST['mail_to'])); 

  
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject'])); 

  
$_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'];

  
$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($fpfilesize($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\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(); 

    } 

  } 

?>


Может, не правильно указан емайл или action,
какие права на хостинге должны быть на этом файле
с каким расширением должен быть .htm или .php

   
 
 автор: cheops   (01.10.2006 в 13:16)   письмо автору
 
   для: avp   (01.10.2006 в 11:51)
 

А в чём выражается "не работа" скрипта?

   
 
 автор: avp   (01.10.2006 в 16:29)   письмо автору
 
   для: cheops   (01.10.2006 в 13:16)
 

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

Пожалуйста, помогите.

   
 
 автор: avp   (01.10.2006 в 20:48)   письмо автору
 
   для: avp   (01.10.2006 в 16:29)
 

Уже голова кругом идет, идет загрузка файла... далее переходит на обработчик, но на экране только адрес куда высылается почта
Еще вопрос:
Нужно создать папку FILES ....какие права доступа ей дать?

   
 
 автор: cheops   (02.10.2006 в 00:15)   письмо автору
 
   для: avp   (01.10.2006 в 20:48)
 

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

   
 
 автор: cheops   (02.10.2006 в 00:17)   письмо автору
 
   для: avp   (01.10.2006 в 16:29)
 

Да, всё правильно, если хотите сообщить, что-то посетителю, то исправьте блок
<?php
if(!mail($to$thm$multipart$headers))  
    {  
      echo 
"К сожалению, письмо не отправлено";  
      exit();  
    } 
?>

на
<?php
if(!mail($to$thm$multipart$headers))  
{  
      echo 
"К сожалению, письмо не отправлено";  
      exit();  

else
{
      echo 
"Письмо успешно отправлено";
}
?>

   
 
 автор: avp   (02.10.2006 в 20:14)   письмо автору
 
   для: cheops   (02.10.2006 в 00:17)
 

Теперь выдает следующее сообщение

Not Found

The requested URL /< was not found on this server.

   
 
 автор: cheops   (03.10.2006 в 12:31)   письмо автору
 
   для: avp   (02.10.2006 в 20:14)
 

А URL в браузере какой вид имеет?

   
 
 автор: avp   (03.10.2006 в 18:55)   письмо автору
 
   для: cheops   (03.10.2006 в 12:31)
 

домен третьего уровня без www

   
Rambler's Top100
вверх

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