如何下载php文件而不执行? [英] How to download a php file without executing it?

查看:108
本文介绍了如何下载php文件而不执行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在内容管理系统上工作,因为我必须使用PHP代码下载php文件而不执行。任何人都可以帮助我这个

im working on a content management system for that i have to download a php file using php code without executing. any one can help me on this

这是一些像ftp这样的东西。我添加了上传,编辑和下载文件的选项。它工作正常但是下载一个php文件时,它被执行而不是下载...

it is some thing like ftp. i have added the options to upload, edit and download a file. it is working fine. but while downloading a php file it is executed instead of downloading...

我试过的是:

What i tried is:

<?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;
}
?>


推荐答案

你必须加载文件内容,写内容请求并设置标题,以便将其解析为强制下载或八位字节流。

You have to load the files content, write the content to the request and set the headers so that it's parsed as force download or octet stream.

例如:

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

download.php:

Contents of 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();
  ?>

此代码没有任何修改。虽然它需要验证和一些安全功能。

This code works without any modification. Although it needs validation and some security features.

这篇关于如何下载php文件而不执行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆