2013-10-22 28 views
0

我的目錄結構是這樣目錄以外的上傳文件,其中的script.php存在

Root 
    |---Includes 
    |  |--script.php 
    | 
    |---uploads 
    | 
    | 
    |---index.php 

我的index.php具有一種形式,需要的姓名和職位它script.php的文件。我想在老年上傳創建文件夾

的script.php

if(isset($_POST['name'])) 

{ 
    mkdir('../uploads/'.$_POST['name']); 
} 

當我移動的script.php根文件夾,刪除該運行良好../但是當我使用上述

代碼它不工作
+0

是否有任何錯誤信息? –

+0

你會得到什麼錯誤信息?什麼權限設置?由於''script.php''在你的''includes''目錄中,因此它是 –

+0

。你是否將腳本中的上傳腳本包含在另一個目錄中,或者直接調用它? – chuck258

回答

0

的script.php由index.php文件和當前文件夾包含爲根,無論身在何處所包含的文件。只需使用dirname(__FILE__)即可獲取包含腳本的當前文件夾。您的代碼應該是:

if(isset($_POST['name'])) 
{ 
    mkdir(dirname(dirname(__FILE__)) . '/uploads/'.$_POST['name']); 
} 

dirname被調用兩次以獲取Includes的父文件夾。

安全性的另一個提示:不要對文件名使用未經檢查的用戶輸入(_POST,_GET ..)。更多信息可以在這裏找到:http://php.net/manual/en/security.filesystem.php

0

嘗試一些諸如以下(假設您運行在Apache網站)直接

$destination = sprintf('%s/uploads/%s', getenv('DOCUMENT_ROOT'), $_POST['name']); 

此外,我會避免使用$_POST變量,你可能會想要爲您的文件夾擁有乾淨的名稱。

如果要使用相對路徑,你可以使用

$destination = sprintf('%s/../uploads/%s', dirname(__FILE__), $_POST['name']); 
相關問題