检查php或jquery中是否存在受限文件夹中的文件?

时间:2014-08-12 00:43:50

标签: php jquery .htaccess

我正在使用头部请求,以检查给定文件是否存在。

$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
    //file not exists
},
success: function()
{
    //file exists
}
});

但是,现在我将文件放在一个受.htaccess限制的文件夹中,通过以下规则

deny from all

但现在看起来jquery总是返回404 Not Found,因为我试图访问一个resricted文件夹。

我不能放弃限制此文件夹,因为用户正在上传文件,我无法确定它们是否安全。

如何检查此文件夹中是否存在文件?鉴于该文件存在于同一个域中?

2 个答案:

答案 0 :(得分:0)

除非用户已经登录并且可以访问这些文件,否则您无法访问.htaccess后面的文件。你可以创建一个公共页面(php),它将文件名作为参数,然后进行服务器端检查以查看文件是否存在,并返回一个JSON对象或者是真/假..这样的事情:

$.ajax({
url:'http://www.example.com/checkfile.php?locn=somefile.ext',
error: function()
{
    //this happens when jquery cant contact your php script or your server threw an error... 404's and 500's... just show a generic "cant connect to server" or something.
},
success: function(data)
{
    //this means you got data back from the server as a 200 response. 
    //it does not say whether or not the file exists. 
    //to do that, you must examine the JSON response. perhaps like this:
    if (data == true)
    {
        //the file exists
    }
    else
    {
        //the file does not exist
    }
}
});

你的checkfile.php可能看起来像这样(伪代码):

$fileloc = $_GET["locn"];
if (file_exists($locn))
{
    echo "true";
}
else
{
    echo "false";
}

答案 1 :(得分:0)

使用php查找文件,并通过jQuery处理...

<强>的jQuery

$.ajax({
    url: "somephpfile.php?file=filename.txt",
    success: function(file_exists) {
        if(file_exists) {
            alert("File Exists");
        }
    }
});

<强> PHP

<?php
if(file_exists($_GET["file"])) {
    echo "1";
} else {
    echo "0";
}

确保您在php逻辑中有一些安全性,以确保它不能用于破解您的服务器!