2013-10-02 85 views
2

我有一個頁面的結構是這樣的:刪除父目錄及其所有子文件,然後重定向

domain.com/index.php 
domain.com/setup/index.php 
domain.com/setup/setup.php 

/setup/index.php網頁上的形式,看起來像這樣:

<form action="" method="post"> 
    <input type="submit" name="finishSubmit" value="Finish" /> 
</form> 

當這種形式是提交,我想要刪除目錄/setup/,以及它的子女index.phpsetup.php。在那之後,我需要它重定向到domain.com/index.php

我嘗試使用rmdir這樣的:

if (isset($_POST['finishSubmit'])) { 
    rmdir('../setup'); 
    header ('location: ../'); 
} 

要麼我用錯了還是我錯了,得到的路徑,但它不工作。什麼是正確的方法來做到這一點?

注意:我需要使用上述相對路徑,因爲我不知道域名。

+0

您是否收到任何錯誤或者刪除不會發生?你重定向了嗎? – TheWolf

+0

你的腳本是否擁有正確的權限? –

+0

'rmdir()'要求目錄爲空。最好迭代文件夾並刪除文件,然後刪除文件夾。 –

回答

4

rmdir()需要的目錄是空的。您可以使用此功能刪除文件夾中的文件,然後刪除文件夾。

<?PHP 
function delete_files($target) { 
    if(is_dir($target)){ 
     $files = glob($target . '*', GLOB_MARK); 
     foreach($files as $file) 
     { 
      delete_files($file);  
     } 
     rmdir($target); 
    } elseif(is_file($target)) { 
     unlink($target); 
    } 
} 
?> 
+0

感謝您的回覆。該函數看起來不錯,但因爲我知道目錄中只有那兩個文件,所以我可以對它們兩個使用unlink。 – Coop

+0

很好的使用'glob()'函數。 –

+0

如果你想保持簡單,你可以'解除鏈接()'文件,然後'rmdir()'文件夾。 –

2

PHP rmdir函數僅適用於空目錄。

在刪除目錄之前,您需要先刪除index.php文件和其他文件。

參考:http://php.net/manual/en/function.rmdir.php

+0

啊對!我一定錯過了手冊中的第一位。謝謝。 – Coop

相關問題