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]   

> Описание: Есть скрипт PHP который выкачивает из почтовой вэбморды аттачменты к мылу
alexx2007
Отправлено: 03 Июля, 2009 - 19:00:59
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июль 2009  


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




Вобщем аттачи сливаются успешно, только файлы после скачки меняют свое имя на download.php, какой бы файл там ни был, по имени скрипта ответственного за скачивание. Меняешь потом *.php на *.doc к примеру и все гут. Причем скрипт показа письма в процессе работы в форме выкидывает имя и расширение файла нормально.

Скрипт download.php в прицепе, смотрите, может что подскажете.

У кого есть какие мысли, я сам фиг разберусь, не прогер я.

Вся вэбморда была взята бесплатно, если чесна даж и не помню откуда.
Робит тут http://mail[dot]vosvod[dot]info
Скачать файл: download.php
Скачан раз: 170

(Отредактировано автором: 03 Июля, 2009 - 19:01:56)

 
 Top
Viper
Отправлено: 03 Июля, 2009 - 19:39:34
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




header("Content-disposition: attachment; filename=".basename($filepath));

$filepath имя исходного файла


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
alexx2007
Отправлено: 03 Июля, 2009 - 19:55:17
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июль 2009  


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




Viper пишет:
header("Content-disposition: attachment; filename=".basename($filepath));

$filepath имя исходного файла


А если тада строка была

Header("Content-Disposition: $disposition; filename=\"".$attach["name"]."\"\r\n");

тогда $filepath из твоего примера надо заменить на $attach["name"]."\"\r\n" ?

(Отредактировано автором: 03 Июля, 2009 - 19:55:51)

 
 Top
JustUserR
Отправлено: 03 Июля, 2009 - 20:40:00
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




alexx2007 Ну где у вас путь к фалу хранится или имя файла А если путь к файлу то его надо обработать с омощью basename чтобы получить только имя файла


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
alexx2007
Отправлено: 04 Июля, 2009 - 13:01:59
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июль 2009  


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




JustUserR пишет:
alexx2007 Ну где у вас путь к фалу хранится или имя файла А если путь к файлу то его надо обработать с омощью basename чтобы получить только имя файла


Сорри, я ваще ламер в пхп, я совершенно не знаком с языком

Вот есть у меня срипт
<?
// load session management
require("./inc/inc.php");
// check for all parameters

if( $attach == "" ||
$folder == "" ||
$ix == "") redirect("error.php?err=3&tid=$tid&lid=$lid");

$mail_info = $sess["headers"][base64_encode($folder)][$ix];

if(!is_array($mail_info)) redirect("error.php?err=3&tid=$tid&lid=$lid");

$arAttachment = explode(",",$attach);
$attach = $mail_info;
foreach($arAttachment as $item )
if(is_numeric($item))
$attach = &$attach["attachments"][$item];

$path1 = realpath($temporary_directory);
$path2 = realpath($attach["filename"]);

if((substr($path2, 0, strlen($path1)) != $path1) || !file_exists($attach["filename"])) { redirect("error.php?err=3&tid=$tid&lid=$lid"); exit; }

$fp = fopen($attach["filename"],"rb"); fseek($fp,0,SEEK_END);
$size = ftell($fp); rewind($fp);
$stream = fread($fp,$size);
fclose($fp);

$disposition = (!$down)?"inline":"attachment";
$type = (!preg_match("/[a-z]+\/[a-z-]+/i",$attach["content-type"]))?"application/octet-stream":$attach["content-type"];

Header("Content-Type: $type; name=\"".$attach["name"]."\"\r\n");
Header("Content-Length: $size\r\n");
Header("Content-Disposition: $disposition; filename=\"".$attach["name"]."\"\r\n");
echo($stream);
?>

Что мне надо убрать и что добавить?
Желательно ваще на пальцах... Мне с языком пока разбираться некада.
Я пока вникну - время пройдет.

Может нужен сам исполняющий скрипт, откуда идет вызов download.php ?
Кстати, запрос хттп /download.php?folder=inbox&ix=1&attach=0&tid=webmail&lid=ru&down=1
как я понял, в запросе есть путь где лежит файл по умолчухе и номер аттача - 0, тид - я не знаю че такое

Короче выручайте братцы, если еще какая инфа нужна - дам все че нужно.
 
 Top
JustUserR
Отправлено: 04 Июля, 2009 - 15:36:58
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Да помочь не так то просто ибо переменных изобилие и откуда кто из них передтся узнать сложно (Тем более они появляются в какойто бибилиотеке inc.php)
Я вам сотевую взять переменую $attach["filename"] и изнее выдрать имя файла
$fn=basename($attach["filename"]);
Header("Content-Disposition: $disposition; filename=\"$fn\"\r\n";
Вероятно заработает как надо


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
alexx2007
Отправлено: 04 Июля, 2009 - 18:02:28
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июль 2009  


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




JustUserR пишет:
Да помочь не так то просто ибо переменных изобилие и откуда кто из них передтся узнать сложно (Тем более они появляются в какойто бибилиотеке inc.php)
Я вам сотевую взять переменую $attach["filename"] и изнее выдрать имя файла
$fn=basename($attach["filename"]);
Header("Content-Disposition: $disposition; filename=\"$fn\"\r\n";
Вероятно заработает как надо


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

Тут у тя еще ошибки малость были, ну там скобки нет в конце и т.д., но это все фигня.

Блин так прога устроена, она аттачи держит в папке _attachments , но они фак там в таком виде типа fDele8gA1L3dgpqkr_029teri_127 ваще черт ногу сломит и причем без расширений. Мне тут подсказали, типа модуль этот почтовый могет робить и в связке с MySQL если чо, а он у меня ща без базы, в папках. Дак вот если базу подключить, все типа будет гут.
Кста, может кому надо исходник, ваще вэбморда простяцкая, но рабочая и бесплатная. У меня была трабла, регистрация smtp вида домен+юзер, а не наоборот, как везде, дак в ней решилось все как два пальца, настройки все врукопашную.

Спасибо за отклик.
 
 Top
JustUserR
Отправлено: 04 Июля, 2009 - 18:12:21
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




alexx2007 Да уд сложновато копать ресурсы вашей веб-морды
Но по идее дейтвитлеьно есть некая база в которой странным именам файлав сооставлены нормальные и наверняка указан mime-тип файла
Но ведь в бибилотеке наерное то и делается


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB