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
Форумы портала PHP.SU :: Версия для печати :: Скриптик аттачит пустой файл к письму
Форумы портала PHP.SU » » Вопросы новичков » Скриптик аттачит пустой файл к письму

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

1. tatiana952005 - 16 Декабря, 2012 - 21:11:30 - перейти к сообщению
Ребята, нужна помощь... Не хочет прикреплять файл. Вроде он прикрепленный приходит, но внутри ничего...
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. ?>
2. sKaa - 16 Декабря, 2012 - 21:19:11 - перейти к сообщению
tatiana952005, а вот эти ключи массивов : from, where, name ... - это какие-то константы или вы просто кавычки пропустили?
3. tatiana952005 - 16 Декабря, 2012 - 21:21:15 - перейти к сообщению
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

Такие ошибки, теряюсь, как правильно задать путь к файлу
4. DelphinPRO - 16 Декабря, 2012 - 21:59:56 - перейти к сообщению
tatiana952005 пишет:
if ($_POST[from] == "") {

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


--- deleted ---

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

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

если файл загружается пользователем, то нужно брать его из массива $_FILES.
5. tatiana952005 - 16 Декабря, 2012 - 22:07:10 - перейти к сообщению
DelphinPRO пишет:
tatiana952005 пишет:
if ($_POST[from] == "") {

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


--- deleted ---

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

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

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


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

могли бы и поподробнее рассказать, что пробовали и что не получилось.
7. tatiana952005 - 16 Декабря, 2012 - 22:47:04 - перейти к сообщению
DelphinPRO пишет:
кто не хочет? чего не хочет?

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


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

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

Если бы файл лежал в корне, было бы проще, я полагаю, но он каждый раз задается пользователем со своего компа, т.к. это онлайн-форма подачи заявкию
8. DelphinPRO - 16 Декабря, 2012 - 22:59:56 - перейти к сообщению
уже поздно. дам наводку еще раз и пойду спать )

загружаемые файлы приходят в массиве $_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');


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

 

Powered by ExBB FM 1.0 RC1