Ошибка при загрзке файла через HTTPS после старта сессии

fog

Рыцарь Джедай
Ошибка при загрзке файла через HTTPS после старта сессии

Перенёс скрипт на HTTPS, и появилась следующая проблема:

Если в начале скрипта загрузки файла стартует сессия - при попытке открытия скрипта IE говорит "не удаётся открыть узел интернета", Opera загружает файл, но при этом игнорирует имя файла в заголовке, называя его именем скрипта. При этом ИЕ качает файл, и выдаёт ошибку после того как файл загружен.

Вообще, сам скрипт загрузки файла работает, но если в начале поставить строку session_start() - перестаёт работать.

Привожу сам скрипт, и заголовки при обоих случаях ("сессия не стартуется" и "сессия стартуется"), может из этого можно что-то понять...

Подскажите, что я делаю не так? :]

PS в первом случае, хоть сессия и не стартуется, скрипту передаётся кука PHPSESSID, так как она в браузере уже есть, на работу скрипта это не влияет, т.е. файл в этом случае загружается нормально.


Сам скриптик очень простой:
PHP:
//session_start();
$file = 'file.zip';
if (!@$h = @fopen($file, 'r')) die('не могу прочитать файл');
$size = filesize($file);
header("Content-Disposition: attachment; filename=file.zip"); 
header("Content-Length: ".$size);
header("Content-type: application/octet-stream");
fpassthru($h);
Такие заголовки если сессия не стартовалась

отправляем
GET /1/download.php HTTP/1.0
Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language ru
Connection Keep-Alive
Cookie js_menu0=1; js_menu15=1; js_menu1=1; PHPSESSID=2vtomnmbal0evqdv024s99nem1; js_menu24=1
Host --my-domain--
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1)

принимаем
HTTP/1.1 200 OK
Connection close
Content-Disposition attachment; filename=silmarillion.zip
Content-Length 237581
Content-Type application/octet-stream
Date Mon, 26 Sep 2005 09:42:52 GMT
Server Apache/2.0.54 (Fedora)
X-Powered-By PHP/5.0.4


Такие заголовки после старта сессии

отправляем
GET /1/download.php HTTP/1.0
Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language ru
Connection Keep-Alive
Cookie js_menu0=1; js_menu15=1; js_menu1=1; PHPSESSID=2vtomnmbal0evqdv024s99nem1; js_menu24=1
Host --my-domain--
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1)

принимаем
HTTP/1.1 200 OK
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection close
Content-Disposition attachment; filename=silmarillion.zip
Content-Length 237581
Content-Type application/octet-stream
Date Mon, 26 Sep 2005 09:43:35 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Pragma no-cache
Server Apache/2.0.54 (Fedora)
Set-Cookie PHPSESSID=2vtomnmbal0evqdv024s99nem1; path=/
X-Powered-By PHP/5.0.4
 

440hz

php.ru
Re: Ошибка при загрзке файла через HTTPS после старта сессии

Автор оригинала: fog
Вообще, сам скрипт загрузки файла работает, но если в начале поставить строку session_start() - перестаёт работать.
а на кой стартовать сессию при загрузке файла? не пойму ...
 

fog

Рыцарь Джедай
Чтобы отдать файл тому, кто авторизован.
 

440hz

php.ru
Автор оригинала: fog
Чтобы отдать файл тому, кто авторизован.
угу, а где проверки на авторизацию?
---
када я такое делал там было что-то такое, что для правильной загрузки файла нужно было вызывать

site.com/download.php/имя файла/?bla-bla-bla

тогда все нормально елось, но могу и ошибаться
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: fog
Если в начале скрипта загрузки файла стартует сессия - при попытке открытия скрипта IE говорит "не удаётся открыть узел интернета", Opera загружает файл, но при этом игнорирует имя файла в заголовке, называя его именем скрипта. При этом ИЕ качает файл, и выдаёт ошибку после того как файл загружен.
Курить [m]session_cache_limiter[/m], поведение IE описано в Knowledge Base, на который ссылаются в комментариях.
 
Сверху