Как скачать файл php, не выполняя его?

я работаю над системой управления контентом, для этого мне нужно скачать php-файл, используя php-код без выполнения Любой может помочь мне в этом

это что-то вроде ftp. Я добавил опции для загрузки, редактирования и загрузки файла. это работает нормально. но при загрузке php-файла он выполняется вместо загрузки ...

Я попробовал следующее:

<?php
$file = $_REQUEST['file_name'];

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));

    include_once($file);
    exit;
}
?>
12 голосов | спросил Jagadeesan 12 J0000006Europe/Moscow 2011, 13:51:00

5 ответов


0

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

Например:

http://server.com/download.php?name=test.php

Содержание файла download.php:

  <?php 
  $filename = $_GET["name"]; //Obviously needs validation
  ob_end_clean();
  header("Content-Type: application/octet-stream; "); 
  header("Content-Transfer-Encoding: binary"); 
  header("Content-Length: ". filesize($filename).";"); 
  header("Content-disposition: attachment; filename=" . $filename);
  readfile($filename);
  die();
  ?>

Этот код работает без каких-либо изменений. Хотя для этого нужна проверка и некоторые функции безопасности.

ответил rzetterberg 12 J0000006Europe/Moscow 2011, 13:54:34
0

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

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

ответил Anders Abel 12 J0000006Europe/Moscow 2011, 13:53:52
0

Если такой php-файл находится на том же сервере /веб-сайте, просто откройте его как обычный файл, например, $fileContents = file_get_contents($filename);

Если файл находится на другом сервере, у вас есть несколько возможных вариантов:

1) Доступ к нему через FTP (если у вас есть данные для входа и доступ)

2) Установите специальное правило перезаписи URL на этом сервере, которое будет указывать веб-серверу отправлять файл в виде простого текста вместо его выполнения (например, somefile.php.txt)

3) Иметь специальный скрипт на этом сервере и, передавая имя файла в качестве параметра, будет возвращать содержимое этого файла (например, http://example.com/showfile.php?file=somefile.php )

ответил LazyOne 12 J0000006Europe/Moscow 2011, 14:00:13
0

Вы можете прочитать об этом на php.net/header , но для принудительной загрузки вы можете использовать заголовок принудительной загрузки. Этот комментарий потрясающий , зацените его! : -)

ответил Jan Dragsbaek 12 J0000006Europe/Moscow 2011, 13:58:31
0

Это способ загрузки php-файла вместо его выполнения.

Поверь мне, это работает! ..скачать файл php на свой страх и риск:)

<?php
function downloadThatPhp($nameOfTheFile)
    {
        header("Pragma: public");
        header("Expires: 0"); // set expiration time
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Content-Type: application/text/x-vCard");
        header("Content-Disposition: attachment; filename=".basename($nameOfTheFile).";");
        header("Content-Transfer-Encoding: binary");
        header("Content-Length: ".filesize($nameOfTheFile));
        @readfile($nameOfTheFile);
        exit(0);
    }

    // and this how to use:
    // download that php file with your own risk :)
    $file = $_REQUEST['file_name'];
    $downloadThis = "http://domain-name.com/".$file;
    if (file_exists($file)) {
        downloadThatPhp($downloadThis);
    }
?>

Надеюсь, это поможет тебе, братан:)

ответил Raymond 10 Jam1000000amTue, 10 Jan 2017 03:05:48 +030017 2017, 03:05:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132