Эта тема на forum.dklab.ru


Gog: header('Content-Disposition: inline & прокси
Есть код, отправляющий файл на скачивание:
....
....
....

@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');
header('Pragma: public');
header('Content-Transfer-Encoding: none');

{
header('Content-Type: ' . $mimetype);
header('Content-Disposition: inline; filename="' . $real_filename . '"');
}
else
{
header('Content-Type: ' . $mimetype . '; name="' . $real_filename . '"');
header('Content-Disposition: attachment; filename=' . $real_filename);
}

Header("Location: $file_url");
exit();
Но работает только при включенных настройках в ИЕ (Использовать HTTP1.1 через прокси-соединения)
Можно ли как-то это пофиксить?
Gog:
пардон, ошибся,
правильный код такой:

@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');
header('Pragma: public');
header('Content-Transfer-Encoding: none');


if ($browser_agent == 'ie')
{
header('Content-Type: ' . $mimetype);
header('Content-Disposition: inline; filename="' . $real_filename . '"');
}
else
{
header('Content-Type: ' . $mimetype . '; name="' . $real_filename . '"');
header('Content-Disposition: attachment; filename=' . $real_filename);
}


if ($gotit)
{
if ($size)
{
header("Content-length: $size");
}

$result = @readfile($filename);

if (!$result)
{
return true;
}
}
else
{
return false;
}


@flush();
exit();
}



Header("Location: $file_url");
exit();
WingedFox:
Уважаемый, inline AND attachment
Gog:
Спасибо, но на счет прокси, там нет ни слова.
А тут какая-то проблема именно с прокси-серверами :(

Получается, что не все заголовки пропускают?
Сразу прошу прощения за возможные неточности в терминах, я в PHP и серверах почти ноль.
WingedFox:
Вы попробуйте тот код с проксей сначала.
Anonymous:
WingedFox:
перепробовал все, не получается.
На localhost-е работает без проблем. При различных настройках ИЕ.
На сервере, в лучшем случае, вместо скачивания файла, выдется "чистая страница" с таким кодом:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
<BODY></BODY></HTML>
WingedFox:
C другими браузерами работает?
Запишите все передаваемые браузеру данные в лог на сервере и локально.
Потом - сравните.

На входе стоит какая-то особенная прокся?
Gog:
Пробовал с разных сетей и проксей - везде одинаково.
Опера скачивает без проблем, ИЕ - только с настройкой "Использовать HTTP1.1 через прокси-соединения"

HTTP заголовки такие:
// 1 - Файл скачивается
HTTP/1.1 200 OK
Date: Sat, 02 Oct 2004 09:12:35 GMT
Server: Apache/1.3.31 (Unix) mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.8
Pragma: public
Content-Transfer-Encoding: gzip
Content-Encoding: gzip
Cache-Control: must-revalidate, post-check=0, pre-check=0
Content-Disposition: inline; filename="test.rar"
Content-length: 175
Vary: Accept-Encoding
Connection: close
Content-Type: application/force-download


// 2 - Файл НЕ скачивается
HTTP/1.1 200 OK
Date: Sat, 02 Oct 2004 09:08:02 GMT
Server: Apache/1.3.31 (Unix) mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.8
Content-Encoding: gzip
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=windows-1251
WingedFox:
Тэк...
Вы какой контент хотите через прокси так отдавать?

Можете дать адрес откуда ничего не качается?


Кстати, а Вы пробовали использовать код, на который я дал ссылку?
Gog:
Тэк...
Кстати, а Вы пробовали использовать код, на который я дал ссылку?
Да, но не знаю, насколько правильно.
Сейчас пробую последний код ...
WingedFox:
Явно бага в коде.
1. Скрипт не работает с Мозиллой - это уже безобразие.
2. Отдавайте application/octet-stream
3. Браузеру/прокси может сносить крышу от указания Content-Encoding: gzip
Gog:
Сейчас вообще, все вернул в первозданный вид, после своих извращений с кодом.
Скрипт не работает с Мозиллой - это уже безобразие.
Вот это честно скажу - не проверял


Отдавайте application/octet-stream
Сейчас идет проверка на тип броузера

Браузеру/прокси может сносить крышу от указания Content-Encoding: gzip
Дык вроде его должна отрубать:
@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');

Даю ссылку и код:
http://monitor.net.ru/forum/dload.php?action=download&file_id=1027


//
// Correct the Mime Type, if it's an octetstream
//
if ( ($mimetype == 'application/octet-stream') || ($mimetype == 'application/octetstream') )
{
if ( ($browser_agent == 'ie') || ($browser_agent == 'opera') )
{
$mimetype = 'application/octetstream';
}
else
{
$mimetype = 'application/octet-stream';
}
}


@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');
header('Pragma: public');
header('Content-Transfer-Encoding: none');

//
// Send out the Headers
//
if ($browser_agent == 'ie')
{
header('Content-Type: ' . $mimetype);
header('Content-Disposition: inline; filename="' . $real_filename . '"');
}
else
{
header('Content-Type: ' . $mimetype . '; name="' . $real_filename . '"');
header('Content-Disposition: attachment; filename=' . $real_filename);
}

//
// Now send the File Contents to the Browser
//
if ($gotit)
{
if ($size)
{
header("Content-length: $size");
}

$result = @readfile($filename);

if (!$result)
{
return true;
}
}
else
{
return false;
}


@flush();
exit();
}

function pa_redirect($file_url)
{
global $cache, $db;
if (isset($db))
{
$db->sql_close();
}

if(isset($cache))
{
$cache->unload();
}

// Redirect via an HTML form for PITA webservers
if (@preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')))
{
header('Refresh: 0; URL=' . $file_url);
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><meta http-equiv="refresh" content="0; url=' . $file_url . '"><title>Redirect</title></head><body><div align="center">If your browser does not support meta redirection please click <a href="' . $file_url . '">HERE</a> to be redirected</div></body></html>';
exit;
}

// Behave as per HTTP/1.1 spec for others
Header("Location: $file_url");
exit();
}@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');
header('Pragma: public');
header('Content-Transfer-Encoding: none');

//
// Send out the Headers
//
if ($browser_agent == 'ie')
{
header('Content-Type: ' . $mimetype);
header('Content-Disposition: inline; filename="' . $real_filename . '"');
}
else
{
header('Content-Type: ' . $mimetype . '; name="' . $real_filename . '"');
header('Content-Disposition: attachment; filename=' . $real_filename);
}

//
// Now send the File Contents to the Browser
//
if ($gotit)
{
if ($size)
{
header("Content-length: $size");
}

$result = @readfile($filename);

if (!$result)
{
return true;
}
}
else
{
return false;
}


@flush();
exit();
}

function pa_redirect($file_url)
{
global $cache, $db;
if (isset($db))
{
$db->sql_close();
}

if(isset($cache))
{
$cache->unload();
}

// Redirect via an HTML form for PITA webservers
if (@preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')))
{
header('Refresh: 0; URL=' . $file_url);
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><meta http-equiv="refresh" content="0; url=' . $file_url . '"><title>Redirect</title></head><body><div align="center">If your browser does not support meta redirection please click <a href="' . $file_url . '">HERE</a> to be redirected</div></body></html>';
exit;
}

// Behave as per HTTP/1.1 spec for others
Header("Location: $file_url");
exit();
}
Gog:
Отдавайте application/octet-stream
Вот это 100% не помогает, во всяком случае для IE.
WingedFox:
Мда... как-то много тут кода...

Вот этот скрипт я использую уже в нескольких проектах:

$filename = "anyfile.ext";
ob_clean();
if (preg_match("/MSIE/i",$_SERVER['HTTP_USER_AGENT']) && !preg_match("/Opera/i",$_SERVER['HTTP_USER_AGENT'])) {
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
} else {
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Expires: 0');
header('Pragma: no-cache');
}
header("Content-Length: " . filesize($filename));
header('Content-Type: <MIME_TYPE>');
readfile($filename);
exit;

Работает с любыми проксями, которые когда-либо встречались.
Попробуйте его.
Gog:
WingedFox:
Сейчас поставил ваш код, ситуация не изменилась :(
WingedFox:
Parse error: parse error, unexpected $ in /forum/pafiledb/modules/pa_download.php on line 344
Gog:
Угу, это у меня закачка файла по FTP была ...

Вот что выяснил, после чего, уже ничего не понимаю:


http://monitor.net.ru/forum/dload.php?action=download&file_id=1055 - у меня работает (по всякому)
http://monitor.net.ru/forum/dload.php?action=download&file_id=1027 - не работает (но работает только когда всего одна галка на "HTTP1.1 через прокси-сединения")

Скрипт один.
Разница только в url файлов ...
Получается заголовки не при чем?
Буду думать до завтра ...
WingedFox:
Gog:
Сейчас я пришел домой - все нормально качается.
Возможно, что по первая ссылка снесла крышу какому-то кэшу кривыми заголовками.

Кстати, какая версия скрипта сейчас используется?
Gog:
Блин, чушь какая-то ...
Сейчас старый код. Тот, с которого я начал всю эту возню.

WingedFox: попробуйте открыть ссылку http://monitor.net.ru/forum/dload.php?action=download&file_id=1027
После, установить одну галку на "Использовать HTTP1.1"
Далее, закрыть все окна ИЕ
После открыть ссылку.

Лично у меня, после такой процедуры, ссылка уже не работает.
WingedFox:
У меня на работе эта ссылка вообще ничем не открывается 8*)

Лог проксомитрона для IE:

+++GET 30844+++
GET /forum/dload.php?action=download&file_id=1055 HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: monitor.net.ru
Cookie: monitor_data=a%3A0%3A%7B%7D; monitor_sid=ec3ffb81bf91551865b5f24351c95e4b
Connection: keep-alive
Forwarded: monitor.net.ru

+++RESP 30844+++
HTTP/1.1 302 Found
Date: Wed, 06 Oct 2004 08:11:08 GMT
Server: Apache/1.3.31 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.8
Location: http://monitor.net.ru/test.rar
Content-Encoding: gzip
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=windows-1251
+++CLOSE 30844+++
Client Connection Reused: 4

+++GET 30845+++
GET /test.rar HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: monitor.net.ru
Cookie: monitor_data=a%3A0%3A%7B%7D; monitor_sid=ec3ffb81bf91551865b5f24351c95e4b
Connection: keep-alive
Forwarded: monitor.net.ru

+++RESP 30845+++
HTTP/1.1 200 OK
Date: Wed, 06 Oct 2004 08:11:08 GMT
Server: Apache/1.3.31 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
Last-Modified: Tue, 05 Oct 2004 16:34:28 GMT
ETag: "c40b6-af-4162cd14"
Accept-Ranges: bytes
Content-Length: 175
Connection: close
Content-Type: text/plain
+++CLOSE 30845+++
Client Connection Reused: 5

+++GET 30846+++
GET /forum/dload.php?action=download&file_id=1027 HTTP/1.1
Accept: */*
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705; .NET CLR 1.1.4322)
Host: monitor.net.ru
Cookie: monitor_data=a%3A0%3A%7B%7D; monitor_sid=ec3ffb81bf91551865b5f24351c95e4b
Connection: keep-alive
Forwarded: monitor.net.ru

+++RESP 30846+++
HTTP/1.1 200 OK
Date: Wed, 06 Oct 2004 08:11:12 GMT
Server: Apache/1.3.31 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.8
Content-Encoding: gzip
Vary: Accept-Encoding
Pragma: public
Content-Transfer-Encoding: gzip
Content-Disposition: inline; filename="test.rar"
Content-length: 175
Connection: close
Content-Type: application/force-download
+++CLOSE 30846+++


Лог для Оперы:

+++GET 30847+++
GET /forum/dload.php?action=download&file_id=1055 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23 [en]
Host: monitor.net.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en
Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: gzip, deflate
Connection: keep-alive
Forwarded: monitor.net.ru

+++RESP 30847+++
HTTP/1.0 302 Found
Date: Wed, 06 Oct 2004 08:16:54 GMT
Server: Apache/1.3.31 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.8
Location: http://monitor.net.ru/test.rar
Content-Encoding: gzip
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=windows-1251
+++CLOSE 30847+++
Client closed: total 0
Client opened: total 1

+++GET 30848+++
GET /test.rar HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23 [en]
Host: monitor.net.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en
Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: gzip, deflate
Connection: keep-alive
Forwarded: monitor.net.ru

+++RESP 30848+++
HTTP/1.0 200 OK
Date: Wed, 06 Oct 2004 08:16:55 GMT
Server: Apache/1.3.31 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
Last-Modified: Tue, 05 Oct 2004 16:34:28 GMT
ETag: "c40b6-af-4162cd14"
Accept-Ranges: bytes
Content-Length: 175
Connection: close
Content-Type: text/plain
+++CLOSE 30848+++
Client closed: total 0
Client opened: total 1

+++GET 30849+++
GET /forum/dload.php?action=download&file_id=1027 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.23 [en]
Host: monitor.net.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: en
Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: gzip, deflate
Connection: keep-alive
Forwarded: monitor.net.ru

+++RESP 30849+++
HTTP/1.0 200 OK
Date: Wed, 06 Oct 2004 08:17:15 GMT
Server: Apache/1.3.31 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.8 FrontPage/5.0.2.2634a mod_ssl/2.8.19 OpenSSL/0.9.7a
X-Powered-By: PHP/4.3.8
Content-Encoding: gzip
Vary: Accept-Encoding
Pragma: public
Content-Transfer-Encoding: gzip
Content-Disposition: attachment; filename=test.rar
Content-length: 175
Connection: close
Content-Type: application/force-download; name="test.rar"
+++CLOSE 30849+++


Судя по всему там работают совсем разные скрипты. 8*)

Прикрутите мой вариант скрипта, пожалуйста.
Надо посмотреть, какие заголовки будут приходить с ним.
Gog:
WingedFox:
Спасибо за ваше терпение,
Ваш код ставил - без изменений. Кстати, его без изменения, вставить нельзя, по причине того, что остальной код скрипта, достаточно накручен.

Возможно проблема, в коде скрипта, где идет проверка на тип броузера?
К тому-же, скрипт еще проверяет, где находится файл - на этом, или на удаленном сервере.
Код скрипта навороченный, кстати, вот ссылка на исходник этого модуля:
http://monitor.net.ru/download.txt

Если у Вас есть какие-то идеи по его изменению, пожалуйста укажите.
Сам я уже в тупике. Поэтому обратился за помощью в Форум.
WingedFox:
Gog:
Вставьте мой скрипт в функцию вместо кода от
===
Determine the Browser the User is using, because
===
до
===
exit();
===

В моем коде надо заменить <MIME_TYPE> на $mimetype.

Давайте так попробуем. Ибо все дело в заголовках.
Gog:
Сделано.

У меня, теперь в ИЕ, предлагает сохранить как файл "dload", без всяких расширений.
WingedFox:
Отлично. Главное что предлагает.

Теперь замените filename="' . $filename . '"');
на filename="' . $real_filename . '"');

Кстати, сохраняется правильный файл?
Gog:
Теперь замените Цитата:
filename="' . $filename . '"');
на Цитата:
filename="' . $real_filename . '"');
Кстати, сохраняется правильный файл?

Сделал ...

И вроде, все стало ок!
Сейчас начну проверять более тщательно ...
Gog:
У меня, в ИЕ, сейчас, скачивает корректно!
Единственное, что смущает, удаление из кода:
@flush();
и
@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');
WingedFox:
Ок. 8*)

Как проверите - сообщите результаты, пожалуйста.
WingedFox:

@ob_end_clean();
@ini_set('zlib.output_compression', 'Off');

их можете оставить.
хотя, ini_set совсем там не нужна.
WingedFox:
Gog:
То что я вижу:


Content-Disposition: inline; filename="test.rar"
Pragma: public
Content-Length: 175
Connection: close
Content-Type: $mimetype


Проверьте скрипт.
Gog:
докладываю ...

Windows 98,
ИЕ6,
"Использовать HTTP1.1" - вкл.
"Использовать HTTP1.1 через прокси-соеденения"- выкл.

При таких настройках не скачивает у троих из четырех тестировавших :(


Windows 98,
ИЕ6,
"Использовать HTTP1.1" - выкл.
"Использовать HTTP1.1 через прокси-соеденения"- вкл.

скачивает у четверых из четырех тестировавших.


Проверьте скрипт.
Прбовал и так:
header('Content-Type: ' . $mimetype);
и сяк:
header('Content-Type: $mimetype');
без изменений.
Сейчас стоит так: header('Content-Type: $mimetype');
Dmitri R. S.:
Gog:
С одиночными кавычками ('Content-Type: $mimetype') точно не получится вставить переменную. Так можно только с двойными кавычками.
bæv:
Gog, у Вас в папке с файлами "на скачивание" случайно файла .htaccess нету?
Gog:
С одиночными кавычками ('Content-Type: $mimetype') точно не получится вставить переменную. Так можно только с двойными кавычками.
Спасибо, попробую.

Gog, у Вас в папке с файлами "на скачивание" случайно файла .htaccess нету?
Нету.
WingedFox:
Gog:
Узнайте у провайдера, есть ли на хостинге принудительный роутинг через проксю.
WingedFox:
Дополнительно:

попробуйте отдавать заголовки
header("Content-Encoding: ");
header("Content-Transfer-Encoding: ");
и принудительно выставлять:
header("Content-Type: octet-stream");
WingedFox:
И еще из пользовательских комментов к http://php.net/header


Jurgen Westerhof <php at jurgle dot nl>
28-Sep-2003 06:07


Suggested filename on download:

If you want to use the header() command for file downloads, please note that when zlib.output_compression in the php.ini is turned 'On' a filename suggested with Content-Disposition will be ignored (at least with MS IE 6.00, with Mozilla Firebird and Netscape it works fine, so far)

The workaround is:


if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');

// rest of the code, headers, fileread etc....



WingedFox:
По настройкам сервера - у Вас принудительно установлен
output_handler ob_gzhandler ob_gzhandler
Почитайте комменты к http://ru2.php.net/ob_gzhandler

Очень возможно что все дело в нем, поскольку отрубание zlib.output_compression не отключает этот обработчик и контент отдается дополнительно упаковынным с левыми заголовками.
WingedFox:
Gog:
Сейчас проверил скачиваемость файла при отдаче таких же заголовков, как и у Вас - проблем нет.
За исключением типа "application/force-download" - c ним у IE съезжает крыша.

Создается полное впечатление, что у провайдера стоит какая-то глючная софтина на выходе.
Gog:
output_handler ob_gzhandler ob_gzhandler
Из-за этого, действительно может быть ??? Проверю.
Сейчас жду появления админа сервера, он временно загулял ...
Gog:
Ну а пока нету админа, пробую через .htaccess

Добавил директиву:
php_value output_handler =
Тестирую, пока проблем со скачиванием не наблюдаю ...
Gog:
Мда ...
Наконец-то закончилась эта эпопея :)
Обобщаю все вышесказанное ...

WingedFox все таки нашел косяк на сервере.
Во первых, я несколько ввел в заблуждение, не только себя, но и других, сосредоточив внимание на коде.
Код рабочий. Имеется в виду код, указанный WingedFox, и старый код скрипта.

Вся проблема скрывалась в несколько оригинальной настройке PHP, а конкретно, в переменной output_handler, которая "по умолчанию", была установлена в значение "ob_gzhandler".
В результате получилось такое "мутное" скачивание файла, зависящее от настроек броузера.
Исправить можно да-же без участия админа сервера, прописав в .htaccess директиву:
php_value output_handler =

Собственно все, больше сказать нечего, кроме как огромное СПАСИБО WingedFox !
WingedFox:
Gog:
Пожалуйста 8*)

Небольшое дополнение:
Иногда админа придется пинать. Многие нехорошие хостеры запрещают изменение настроек PHP из .htaccess и скрипта.
Другой случай - когда PHP работает как CGI модуль. В этом случае настройки из .htaccess просто игнорируются.

Кстати, я проверял локально - с установленным ob_gzhandler проблем со скачиванием нет.
Ни с одного нашего сервера.

Gog:
Узнайте, пожалуйста, у админа, как отдается контент клиентам - через прозрачную проксю, или нет.
Достаточно важный момент.
Юрий Насретдинов:
с установленным ob_gzhandler проблем со скачиванием нет
На самом деле, есть, например, IE не будет показывать статус скачиваемого файла (т.е. он не показывает, сколько уже скачалось). Также это чревато серьезным замедлением сервера, когда скачиваются большие файлы (я тоже с этой проблемой сталкивался) через PHP-скрипты.
WingedFox:
yUAC:
Тут мы говорили про несколько другие проблемы.
И они успешно решены вышеприведенным способом.

По сравнению с ними IE не будет показывать статус скачиваемого файла
это ерунда. У нас тут Мозилла отказывалась файл качать 8*)

Эта тема на forum.dklab.ru