Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2016, 10:05   #1
Gregor
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 208
По умолчанию Скачивание отдаваемого PHP скриптом файла в браузере: Как это работает?

Хочется понять как думает PHP и браузер
Есть небольшой php скрипт(index.php)

Код:
<?php
if(isset($_GET['filename'])) {
    if (!file_exists($filename = $_GET['filename'])){
        print "Файл " . $filename . "не найден!\r\n";
    }
    else {
        set_time_limit(0);
        header('HTTP/1.0 200 OK');
        header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
        header('Content-Transfer-Encoding: binary');
        header('Accept-Ranges: bytes');
        header('Content-Length: ' . (filesize($filename)));
        header('Content-Type: application/x-rar-compressed');
        @readfile($filename);
    }
}
?>

<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>MyPage</title>

    <!-- Bootstrap Core CSS -->
    <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <!-- Theme CSS -->
    <link href="css/grayscale.css" rel="stylesheet">
</head>

<body id="page-top" data-spy="scroll" data-target=".navbar-fixed-top">
   <!-- Intro Header -->
    <header class="intro">
        <div class="intro-body">
            <div class="container">
                <div class="row">
                    <div class="col-md-8 col-md-offset-2">
                        <h1 class="brand-heading">MyPage</h1>
						<a href="index.php?filename=files/myfile.zip" class="btn-circle">Скачать</a>							
                    </div>
                </div>
            </div>
        </div>
    </header>
</body>

</html>
который по кнопке скачать скачивает файл. Все рабоате, но я хочу знать как.
1. ПО нажатию на ссылку ведь идет GET запрос. т.е идет обращение к index.php с параметрами. Тогда почему не перезагружается страница? Дело в заголовках которые пишутся при генерации скрипта по закачке файла и браузер не воспринимает то что приходит после . т.е текст HTML?
2. Почему при этом GET в адресной строке я не вижу запроса с параметрами?
3. Пытаюсь посмотреть в FireBug на вкладке Сеть, но не вижу запроса с параметрами.
интенсивно гуглю прежде чем задать вопрос
Gregor вне форума Ответить с цитированием
Старый 22.07.2016, 23:05   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Переход происходит после того, как запрос по ссылке получил заголовки. Если у ссылки установлен атрибут download или браузер не может сам открыть данный mime-type файла, то он начнет его качать.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться - не работает файл со скриптом. При загрузке из консоли этот же скрипт работает Kazik JavaScript, Ajax 6 27.11.2015 16:09
Как задать открытие файла в браузере? da487 HTML и CSS 2 20.04.2011 15:55
Как узнать работает ли в браузере посетителя javascript? Arassir JavaScript, Ajax 2 08.01.2011 14:34
как открыть файл php в каком-либо браузере osichev Помощь студентам 3 24.03.2010 20:58
PHP. Ссылка на скачивание файла Demien PHP 4 17.02.2010 12:26