如何删除目录 php
how to delete directory php
我正在尝试制作表格以删除所选选项,该选项是 images
目录中的子目录。我有一个函数可以删除子文件夹中的所有文件,然后删除整个子文件夹,但是当我调用它时,没有任何反应。有人能帮我吗?
这是我的 html 表格和 php 代码:
<form method='post' action='/category'>
<div class="form-group">
<select class="custom-select" name="category_to_delete" style="width:60%;">
<?php
foreach(glob(dirname(__FILE__) . '/images/*') as $categories_list){
if(is_dir($categories_list)){
$categories_list = basename($categories_list);
echo "<option value='" . $categories_list . "'>".$categories_list."</option>";
}
}
?>
</select>
</div>
<?php
function delete_directory($dirname) {
if (is_dir($dirname))
$dir_handle = opendir($dirname);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($dirname.'/'.$file);
}
}
closedir($dir_handle);
rmdir($dirname);
return true;
}
if(isset($_POST['delete'])){
if(isset($_GET['category_to_delete']) && $_GET['category_to_delete']!=''){
$category_delete = $_POST['category_to_delete'];
delete_directory('images/'.$category_delete);
echo "Deleted";
}
}
?>
<div class="form-group">
<button type='submit' value='Delete' name='delete'> Usuń</button>
</div>
</form>
我发现你的脚本有错误。这是答案,希望这会解决它(如果某处没有其他错误):
您的表单是使用 method="post" 发送的:<form method='post' action='/category'>
在您的代码中,您检查 $_GET
:
错误:
if(isset($_GET['category_to_delete']) && $_GET['category_to_delete']!=''){
正确:if(isset($_POST['category_to_delete']) && $_POST['category_to_delete']!=''){
最终代码必须如下所示:
if(isset($_POST['delete'])){
if(isset($_POST['category_to_delete']) && $_POST['category_to_delete']!=''){
$category_delete = $_POST['category_to_delete'];
delete_directory('images/'.$category_delete);
echo "Deleted";
}
}
另请注意,您选中 isset($_POST['delete'])
-> 它是您的按钮。如果您不单击按钮并按 Enter 键发送 <form>
,则没有 $_POST['delete']
,它将不起作用。
再给你一个信息:
你的函数 delete_directory
和你的表单处理 if(isset($_POST['delete'])){
放在你的 foreach(glob(dirname(__FILE__) . '/images/*') as $categories_list){
之后
这意味着,如果您要删除某些内容并发送表单即可。 dropdown/select 将再次包含这些文件,因为目录 images/*
中的文件将在您真正处理表单之前再次扫描(删除您选择的 files/directory)。你应该把功能和表格的处理放在类别之前。通常像这样的事情会在任何 HTML/Output 处理之前完成。
我正在尝试制作表格以删除所选选项,该选项是 images
目录中的子目录。我有一个函数可以删除子文件夹中的所有文件,然后删除整个子文件夹,但是当我调用它时,没有任何反应。有人能帮我吗?
这是我的 html 表格和 php 代码:
<form method='post' action='/category'>
<div class="form-group">
<select class="custom-select" name="category_to_delete" style="width:60%;">
<?php
foreach(glob(dirname(__FILE__) . '/images/*') as $categories_list){
if(is_dir($categories_list)){
$categories_list = basename($categories_list);
echo "<option value='" . $categories_list . "'>".$categories_list."</option>";
}
}
?>
</select>
</div>
<?php
function delete_directory($dirname) {
if (is_dir($dirname))
$dir_handle = opendir($dirname);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($dirname.'/'.$file);
}
}
closedir($dir_handle);
rmdir($dirname);
return true;
}
if(isset($_POST['delete'])){
if(isset($_GET['category_to_delete']) && $_GET['category_to_delete']!=''){
$category_delete = $_POST['category_to_delete'];
delete_directory('images/'.$category_delete);
echo "Deleted";
}
}
?>
<div class="form-group">
<button type='submit' value='Delete' name='delete'> Usuń</button>
</div>
</form>
我发现你的脚本有错误。这是答案,希望这会解决它(如果某处没有其他错误):
您的表单是使用 method="post" 发送的:<form method='post' action='/category'>
在您的代码中,您检查 $_GET
:
错误:
if(isset($_GET['category_to_delete']) && $_GET['category_to_delete']!=''){
正确:if(isset($_POST['category_to_delete']) && $_POST['category_to_delete']!=''){
最终代码必须如下所示:
if(isset($_POST['delete'])){
if(isset($_POST['category_to_delete']) && $_POST['category_to_delete']!=''){
$category_delete = $_POST['category_to_delete'];
delete_directory('images/'.$category_delete);
echo "Deleted";
}
}
另请注意,您选中 isset($_POST['delete'])
-> 它是您的按钮。如果您不单击按钮并按 Enter 键发送 <form>
,则没有 $_POST['delete']
,它将不起作用。
再给你一个信息:
你的函数 delete_directory
和你的表单处理 if(isset($_POST['delete'])){
放在你的 foreach(glob(dirname(__FILE__) . '/images/*') as $categories_list){
这意味着,如果您要删除某些内容并发送表单即可。 dropdown/select 将再次包含这些文件,因为目录 images/*
中的文件将在您真正处理表单之前再次扫描(删除您选择的 files/directory)。你应该把功能和表格的处理放在类别之前。通常像这样的事情会在任何 HTML/Output 处理之前完成。