导航到目录时忽略目录中的脚本文件?

时间:2010-05-21 14:17:20

标签: php

我目前正在使用PHP上传文件,但我有点卡住了。允许用户上传PHP和JS等文件,但我不希望脚本在用户尝试下载时运行。是否有可能以某种方式阻止使用htaccess或其他东西?

2 个答案:

答案 0 :(得分:1)

您可以编写一个包装器php文件,将文件内容发送到浏览器。但首先,您必须确保上传的文件存储在存储在网络根目录之外,以便没有人可以通过浏览器无意中或以其他方式访问它们。

包装器php脚本可以沿着这些方向发展:

<?php
    $f = $_GET[ "f" ];
    if ( filename_is_ok( $f ) && is_file( "../some_folder_outside_www/$f" ) )
    {
        header( "Content-Type: text/plain" );
        header( "Content-Disposition: attachment; filename=$f" );
        header( "Content-Length: " . filesize( "../some_folder_outside_www/$f" ) );
        readfile( "../some_folder_outside_www/$f" );
    }
    else
    {
        header("HTTP/1.0 404 Not Found");             
        echo "File not found (or you're not supposed to view this file)";
    }
    function filename_is_ok( $f )
    {
        // You'll have to implement it yourself
        return false;
    }
    // example calls:
    // http://website.com/download.php?f=test.php
    // http://website.com/download.php?f=test.js
?>

答案 1 :(得分:-1)

您可以更改上传的文件扩展名,例如

my-file.php.txt
my-file.js.txt

假设你的服务器上没有php处理.txt文件...