Бракодабра при скачивании файла.

Статус
В этой теме нельзя размещать новые ответы.

Izzard

Новичок
Бракодабра при скачивании файла.

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

Есть скрипт (целиком страница с html) для скачивания файлов с сайта:

PHP:
if (!empty($_GET['file_id']))
{
...// здесь некий код и sql для получения имени файла в $dd['file_name'].
	if (!empty($dd['file_name']))
	{	
		$file_name = "../downloads/".$dd['file_name'];
		$file_size = filesize ($file_name);
		header("Content-Length: $file_size");
		header('Content-Disposition: attachment; filename="'.basename($file_name).'"'); 
		readfile($file_name);
	}
	else
	{ header("Location: /этот_файл.php");	}
}
<html>
...
<a href='этот_файл.php?file_id=1'>Скачать файл 1</a><br>
<a href='этот_файл.php?file_id=2'>Скачать файл 2</a>
...
</html>
При скачивании первого файла все нормально, но если потом начать сразу скачивать второй, то грузится часть страницы и выводится бракодабра вместо файла, который должен скачаться. Но если после скачивания первого страницу обновить, а затем начать скачивать второй, то все ok.

Раньше было вместо блока хедеров
PHP:
header("Location: /downloads/{$dd['file_name']}");
и все работало как часы, кроме того момента, когда скачивались .rar(ы) - опять таки бракодабра была. Потом переделал под это, что выше, и опять проблема вкупе с новой.

Подскажите, пожалуйста, что можно сделать?
 

denver

?>Скриптер
После header("Location нужно делать exit;
как и после readfile собственно.
 

Izzard

Новичок
почему бы тогда не лечь спать?..
А я именно так и поступил после написания сообщения.
PHP FAQ: Ничего не работает! Что делать???
Че не спроси, а тебя все равно накормят этой ссылкой.
Как бы зделать метку, чтобы все видели, что я эту статейку перечитал уже несколько раз?
После header("Location нужно делать exit;
как и после readfile собственно.
Спасибо, конечно, но denver, это не совсем то? Вопрос не о том, как тормознуть скрипт (это мне и так известно), вопрос о том, как скачать бинарные файлы и не получить вместо них байты в окне браузера.
 

Фанат

oncle terrible
Команда форума
Как бы зделать метку, чтобы все видели, что я эту статейку перечитал уже несколько раз?
А это бессмысленно. Никого, поверь, не интересует, сколько раз ты читал статейку.
Тебе дают ссылку на азы отладки, а уж применять или не применять их - твоё личное дело.
вопрос о том, как скачать бинарные файлы и не получить вместо них байты в окне браузера.
Вопрос этот тобой решён. Успешно. Вот доказательство:
При скачивании первого файла все нормально
следовательно, проблема не в механизме скачивания, а в реализации логики программы.

Учитывая тот факт, что собственной твоей логики не хватило на то, чтобы сделать такой простой вывод, боюсь, твое положение безнадёжно.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху