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

Форум PHP

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

 

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

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

тема: Фильтрация расширения вложенного файла при отправке с сайта
 
 автор: Sasha   (12.03.2006 в 19:40)   письмо автору
 
 

Вот пытаюсь прикрутить провепку, к скрипту отправки письма с вложением...
Код

<?php 
  $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=strrchr($_FILES['image']['name'],"."); 
if(
$path!='.gif' && $path!='.GIF' && $path!='.jpg' && $path!='.JPG'){ 
  exit(
"Не верный формат изображения"); 


---------------------------------------------------------------------------------------------------------------------------------------



    if (
copy($_FILES['mail_file']['tmp_name'], $path)) $picture $path
  } 
  
$thm $_POST['mail_subject'];
  
$msg $_POST['mail_msg'];
  
// Отправляем почтовое сообщение 
  
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(); 
    } 
  } 
?>



Всё время выбивает - неверный формат - хоть формат и верный. Без вложения всё ок.

Помогите прикрутить сюда проверку файла....требуемые допустимые расширения -

.jpg     .gif     .rar    .zip  

   
 
 автор: Sasha   (12.03.2006 в 23:55)   письмо автору
 
   для: Sasha   (12.03.2006 в 19:40)
 

'

   
 
 автор: Sasha   (13.03.2006 в 14:39)   письмо автору
 
   для: Sasha   (12.03.2006 в 19:40)
 

Ммммм...что никто не поможет?

   
 
 автор: XPraptor   (13.03.2006 в 14:47)   письмо автору
 
   для: Sasha   (13.03.2006 в 14:39)
 

Почему же не поможем? Поможем:

$path=explode(".", $_FILES['image']['name']);
$path=$path[count($path)-1];
if(!preg_match('/^(gif|jpe?g)$/',$path)){
exit("Не верный формат изображения");
}

   
 
 автор: Sasha   (15.03.2006 в 22:41)   письмо автору
 
   для: XPraptor   (13.03.2006 в 14:47)
 

К сожалению не работает :((
Файлы .gif и .jpg не опознаёт, пишет _ Неверный формат изображения.

   
 
 автор: Sasha   (16.03.2006 в 18:50)   письмо автору
 
   для: Sasha   (15.03.2006 в 22:41)
 

Может возможно устроить проверку расширения как-то по другому?
Подскажите пожалуйста..

   
 
 автор: Trianon   (16.03.2006 в 19:30)   письмо автору
 
   для: Sasha   (16.03.2006 в 18:50)
 

<?
$path
=substr($_FILES['mail_file']['name'],strrchr($_FILES['mail_file']['name'],"."));
if(
$path!='.gif' && $path!='.GIF' && $path!='.jpg' && $path!='.JPG'){
  exit(
"неверный формат изображения");
?>

   
 
 автор: Sasha   (21.03.2006 в 15:27)   письмо автору
 
   для: Trianon   (16.03.2006 в 19:30)
 

У меня ничего не работает :(((
Наверно я что-то подставляю не так, посмотрите :

<?php 
  $mail_to 
".....мыло....." 
  
$_POST['mail_subject'] = htmlspecialchars(stripslashes($_POST['mail_subject'])); 
  
$_POST['mail_msg'] = htmlspecialchars(stripslashes($_POST['mail_msg'])); 
  
$picture ""
  
// Если поле выбора вложения не пустое - закачиваем его на сервер 

$path=substr($_FILES['mail_file']['name'],strrchr($_FILES['mail_file']['name'],".")); 
if(
$path!='.gif' && $path!='.GIF' && $path!='.jpg' && $path!='.JPG'){ 
  exit(
"неверный формат111 изображения"); 

}
  if (!empty(
$_FILES['mail_file']['tmp_name'])) 
  { 
    
// Закачиваем файл 


    
if (copy($_FILES['mail_file']['tmp_name'], $path)) $picture $path
  } 
  
$thm $_POST['mail_subject']; 
  
$msg $_POST['mail_msg']; 
  
// Отправляем почтовое сообщение 
  
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(); 
    } 
  } 
echo 
"Письмо отправлено"
?> 



Добавляю .gif вложение, и всё.
Стопориться - неверный формат111 изображения -

   
 
 автор: Trianon   (21.03.2006 в 16:18)   письмо автору
 
   для: Sasha   (21.03.2006 в 15:27)
 

А так?

$path=substr(strrchr($_FILES['mail_file']['name'],"."), 1);
if(strcasecmp($path,'gif') && strcasecmp($path,'jpg'))
   exit("Неверный формат изображения");
else
   echo $_FILES['mail_file']['name']. " - файл с расширением $path";

   
 
 автор: Sasha   (22.03.2006 в 20:17)   письмо автору
 
   для: Trianon   (21.03.2006 в 16:18)
 

Так получилось, но не совсем. Изображение доходит, но полностью обрезается имя и расширение, вернее приходит файл имеющий имя как расширение. Тоесть отправляли фотку 22.jpg а приходит файл jpg

И без вложения письмо нехочет отправляться нивкакую. Говорит - неверный формат изображения.

   
 
 автор: Loki   (16.03.2006 в 22:36)   письмо автору
 
   для: Sasha   (16.03.2006 в 18:50)
 

я иногда использую функцию getimagesize()
У нее элемент номер 2 - это тип файла. очень удобно:
1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM.

   
 
 автор: Sasha   (23.03.2006 в 18:38)   письмо автору
 
   для: Loki   (16.03.2006 в 22:36)
 

Странно, почему так обрезается....

   
 
 автор: Loki   (23.03.2006 в 18:52)   письмо автору
 
   для: Sasha   (23.03.2006 в 18:38)
 

обрезается что?

   
 
 автор: Sasha   (23.03.2006 в 19:04)   письмо автору
 
   для: Loki   (23.03.2006 в 18:52)
 

Изображение доходит, но полностью обрезается имя и расширение, вернее приходит файл имеющий имя как расширение. Тоесть отправляли фотку 22.jpg а приходит файл jpg

И без вложения письмо нехочет отправляться нивкакую. Говорит - неверный формат изображения.

   
 
 автор: Sasha   (24.03.2006 в 14:40)   письмо автору
 
   для: Sasha   (23.03.2006 в 19:04)
 

Аааа, помогите!

Оказывается после использования этого скрипта, передаваемые файлы остаются в папке с ним (копии), как можно сделать, чтоб после передачи они удалялися???

   
Rambler's Top100
вверх

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