Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скриптик аттачит пустой файл к письму

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Ребята, помогите найти ошибку...
tatiana952005
Отправлено: 16 Декабря, 2012 - 21:11:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Ребята, нужна помощь... Не хочет прикреплять файл. Вроде он прикрепленный приходит, но внутри ничего...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_POST[from] == "") {
  3. echo "Пожалуйста, введите место отправки груза!<br>";
  4. $send = "no";
  5. } elseif ($_POST[where] == "") {
  6. echo "Пожалуйста, введите место доставки груза!<br>";
  7. $send = "no";
  8. } elseif ($_POST[name] == "") {
  9. echo "Пожалуйста, введите название груза!<br>";
  10. $send = "no";
  11. } elseif ($_POST[cost] == "") {
  12. echo "Пожалуйста, введите стоимость груза!<br>";
  13. $send="no";
  14. } elseif ($_POST[weight] == "") {
  15. echo "Пожалуйста, введите вес груза!<br>";
  16. $send="no";
  17. } elseif ($_POST[shape] == "") {
  18. echo "Пожалуйста, введите объем груза!<br>";
  19. $send="no";
  20. } elseif ($_POST[yourname] == "") {
  21. echo "Пожалуйста, введите Ваше имя!<br>";
  22. $send="no";
  23. } elseif ($_POST[phone] == "") {
  24. echo "Пожалуйста, введите Ваш номер телефона!<br>";
  25. $send="no";
  26. } elseif ($_POST[mail] == "") {
  27. echo "Пожалуйста, введите Ваш адрес электронной почты!<br>";
  28. $send="no";
  29. } else {
  30. $to = "***";
  31. $subject = "Заявка от $_POST[yourname]";
  32. $bound="spravkaweb-1234";
  33. $header.="From: $_POST[yourname] <$_POST[mail]>\n";
  34. $header.="Mime-Version: 1.0\n";
  35. $header.= "X-Mailer: PHP/".phpversion()."\n";
  36. $header.="Content-Type: multipart/mixed; charset=windows-1251; boundary=$bound\n";
  37. $body="\n\n--$bound\n";
  38. $body.="Content-type: text/plain; charset=windows-1251\n";
  39. $body.="Content-Transfer-Encoding: quoted-printable\n\n";
  40. $body.= "Заявка от $_POST[yourname]:\n";
  41. $body.="Место отправки груза: $_POST[from]\n";  
  42. $body.="Масто доставки груза: $_POST[where]\n";        
  43. $body.="Телефон : $_POST[phone]\n";
  44. $body.="E-mail : $_POST[mail]\n";
  45. $body.="Наименование груза: $_POST[name]\n";
  46. $body.="Описание груза: \n $_POST[opis]\n";
  47. $body.="Стоимость груза: $_POST[cost]\n";
  48. $body.="Вес(кг): $_POST[weight]\n";
  49. $body.="Объем груза: $_POST[shape]\n";
  50. $body.="Количество мест, занимаемых грузом: $_POST[places]\n";
  51. $body.="Дополнительные пожелания: \n $_POST[prefer]\n";
  52. $filename=$_REQUEST[file];
  53. $f=fopen($filename, "rb");
  54.  
  55. $body.="\n\n--$bound\n";
  56. $body.="Content-Type: application/octet-stream; ; boundary=$bound\n";
  57. $body.="Content-Transfer-Encoding:base64\n";
  58. $body.="Content-Disposition:attachment; filename==?UTF-8?B?". base64_encode($filename). "?=\n\n";
  59. $body.="name=\"".basename($_REQUEST[file])."\"\n\n";
  60. //$body.=chunk_split(base64_encode(fread($f,filesize($filename))))."\n";
  61. $body.=base64_encode(fread($f,filesize($_REQUEST[file])))."\n";
  62. $body.="$bound--\n\n";
  63. mail ($to, $subject, $body, $header);
  64. echo "<p>Message has been sent!</p>";
  65. }
  66.  
  67. ?>
 
 Top
sKaa
Отправлено: 16 Декабря, 2012 - 21:19:11
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


tatiana952005, а вот эти ключи массивов : from, where, name ... - это какие-то константы или вы просто кавычки пропустили?
 
 Top
tatiana952005
Отправлено: 16 Декабря, 2012 - 21:21:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




sKaa пишет:
tatiana952005, а вот эти ключи массивов : from, where, name ... - это какие-то константы или вы просто кавычки пропустили?

Это константы из формы. В ошибках пробивает, что нет пути к файлу и я не могу понять что не так, ибо уже тонну мануалов перерыла...
Файл соответственно пользователем самостоятельно со своего компа загружается,а не находится в корневой сайтаю
(Добавление)
Warning: fopen(zayav.doc) [function.fopen]: failed to open stream: No such file or directory in /home/a7153035/public_html/mail. php on line 53



Warning: filesize() [function.filesize]: stat failed for zayav.doc in /home/a7153035/public_html/mail. php on line 61



Warning: fread(): supplied argument is not a valid stream resource in /home/a7153035/public_html/mail. php on line 61

Такие ошибки, теряюсь, как правильно задать путь к файлу

(Отредактировано автором: 16 Декабря, 2012 - 21:22:03)

 
 Top
DelphinPRO
Отправлено: 16 Декабря, 2012 - 21:59:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




tatiana952005 пишет:
if ($_POST[from] == "") {

кавычки пропустили:


--- deleted ---

(Добавление)

тьфу, блин, попутал немного Улыбка

если файл загружается пользователем, то нужно брать его из массива $_FILES.

(Отредактировано автором: 16 Декабря, 2012 - 22:03:11)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
tatiana952005
Отправлено: 16 Декабря, 2012 - 22:07:10
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
tatiana952005 пишет:
if ($_POST[from] == "") {

кавычки пропустили:


--- deleted ---

(Добавление)

тьфу, блин, попутал немного Улыбка

если файл загружается пользователем, то нужно брать его из массива $_FILES.


Сейчас попробую, а по поводу кавычек, тогда всё летит как фанера известно над каким городом...=)
(Добавление)
Не хочет, получаемый файл по прежнему пуст.
 
 Top
DelphinPRO
Отправлено: 16 Декабря, 2012 - 22:40:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




кто не хочет? чего не хочет?

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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
tatiana952005
Отправлено: 16 Декабря, 2012 - 22:47:04
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
кто не хочет? чего не хочет?

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


Как не самый большой знаток php, я пробовала немного, только то, в чем могу разобраться... После суток мучений Вот именно такой скрипт начал отправлять письма с вложенным файлом, файл называется как надо, т.е. как указан в форме. Но размер его не совпадает с действительностью. Каким бы большим или маленьким он ни был, его габариты обычно 1-2кб и он не вскрывается. Выдаются ошибки описанные выше. И я не понимаю как прописать путь к файлу так, чтобы он верно отправлял его.

Пробовала играться с Content-Disposition, меняла способы изъятия файла $_POST, $_FILE, $_REQUEST, пробовала задавать дробление на куски. Но очевидно, что проблема не в этом...

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

(Отредактировано автором: 16 Декабря, 2012 - 22:48:33)

 
 Top
DelphinPRO
Отправлено: 16 Декабря, 2012 - 22:59:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




уже поздно. дам наводку еще раз и пойду спать )

загружаемые файлы приходят в массиве $_FILES и ТОЛЬКО ОТТУДА ИХ МОЖНО И НУЖНО ДОСТАВАТЬ

чтобы файл отправился, форма должна иметь атрибут «enctype» и передаваться постом
CODE (html):
скопировать код в буфер обмена
  1. <form action="index.php" method="post" enctype="multipart/form-data">


файл можно скопировать из временной папки (из которой он удаляется автоматически после завершения работы скрипта) в какую-то свою папку
PHP:
скопировать код в буфер обмена
  1. move_uploaded_file($_FILES['upload_file']['tmpname'], __DIR__ . '/upload/superfile.jpg');


из своей папки можно его читать и делать с ним что захочестя.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB