我有一個函數來檢查一個文件是否通過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試圖限制對該目錄的調用,但我認爲人們可以簡單地在提供的路徑中使用../來檢查備選方案。
什麼是最好的方式來使這個安全,理想地限制它/包,並有任何其他問題,我應該擔心?
編輯:在JavaScript/jQuery的一個例子電話:
if(fileExists('/index.php')){
alert('Exists');
}else{
alert('Doesn\'t exist');
}
假設你控制要顯示的圖像,爲什麼你需要檢查它們是否存在? – phant0m
我在現有的jQuery函數中使用它,它允許用戶從下拉列表中選擇紋理包,然後用所選紋理包中的所有圖像替換所有現有圖像。該功能旨在阻止它顯示不存在的圖像。 您可以在www.texturepacker.net上看到它的實際操作,但代碼與上面的代碼不同。 – dux0r
注意:你的當前函數總是返回'undefined',因爲getJSON是異步的。所以你的'if'語句也不行。看看jQuery Deferreds,它應該可以幫助你解決這個問題。 – bfavaretto