【发布时间】:2012-09-29 19:13:13
【问题描述】:
我有一个函数可以通过 jQuery 检查文件是否存在,该函数会调用 PHP 脚本,在单击索引页面上的按钮更改某些图像时,我将使用该脚本。
jQuery 函数:
function fileExists(path){
$.getJSON("/ajax/fileExists.php",{ path: path },
function (data){
return data.path;
});
}
fileExists.php:
$path=$_SERVER['DOCUMENT_ROOT'].'/packs'.$_GET['path'];
if(file_exists($path)){
echo json_encode(TRUE);
}else{
echo json_encode(FALSE);
}
我担心人们使用此脚本列出我可能不希望他们知道的服务器或文件的内容,因此我使用 DOCUMENT_ROOT 和 /packs 来尝试限制对该目录的调用,但我认为人们可以简单地在提供的路径中使用 ../ 来检查替代方案。
确保安全的最佳方法是什么,最好将其限制在 /packs 中,还有其他我应该担心的问题吗?
编辑:javascript/jQuery 中的示例调用:
if( fileExists('/index.php') ){
alert('Exists');
}else{
alert('Doesn\'t exist');
}
【问题讨论】:
-
假设您控制要显示的图像,为什么需要检查它们是否存在?
-
我在现有的 jQuery 函数中使用它,该函数允许用户从下拉列表中选择纹理包,然后用所述选定纹理包中的图像替换所有现有图像。此功能旨在阻止它显示不存在的图像。您可以在 www.texturepacker.net 上看到它的运行情况,尽管代码与上面的不同。
-
旁注:您当前的函数将始终返回
undefined,因为getJSON是异步的。所以你的if语句也不起作用。查看 jQuery Deferreds,它应该可以帮助您解决这个问题。
标签: php javascript jquery ajax get