如何删除php目录
我正在尝试制作表单以删除所选选项,该选项是如何删除php目录,php,forms,rmdir,delete-directory,Php,Forms,Rmdir,Delete Directory,我正在尝试制作表单以删除所选选项,该选项是图像中的子目录。我有一个函数,可以删除子文件夹中的所有文件,然后删除整个子文件夹,但当我调用它时,什么也没发生。有人能帮我吗? 以下是我的html表单和php代码: <form method='post' action='/category'> <div class="form-group"> <select class="custom-select" name="category_to_delet
图像中的子目录。我有一个函数,可以删除子文件夹中的所有文件,然后删除整个子文件夹,但当我调用它时,什么也没发生。有人能帮我吗?
以下是我的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>
我在你的剧本中发现了错误。以下是答案,希望这能解决问题(如果没有其他错误):
您的表单将使用方法=“post”:
在您的代码中,您可以对照$\u GET
:
错:
if(isset($\u GET['category\u to'u delete'])和&$\u GET['category\u to'u delete']!=”{
正确:if(设置($\u POST['category\u to\u delete'])和&$\u POST['category\u to\u 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($\u POST['delete'])
->这是您的按钮。如果您不单击按钮并按Enter键发送
,则没有$\u POST['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";
}
}
您的函数delete\u目录
和表单处理if(isset($\u POST['delete']){
放在您的foreach(glob(dirname(\uu文件).'/images/*')后面作为$categories\u列表){
这意味着,如果您要删除某些内容并发送表单,则下拉列表/选择列表将再次包含这些文件,因为在您真正处理表单之前,将再次扫描目录images/*
中的文件(删除所选文件/目录)。您应该将函数和表单处理放在类别之前。通常在任何HTML/输出处理之前都会执行类似操作。它是否删除文件而不删除目录?或者什么都没有发生?您是否收到任何错误消息?代码看起来正常。问题是文件/目录是否具有权限以使纸条无法访问(删除)它们。什么都没有发生,所有文件都保存在文件夹中,我在网站或控制台中没有任何错误。文件和目录都是正确的。是的,非常感谢!我没有注意到这个错误。我更正了我的代码,现在它工作得非常出色。谢谢:)是的,这是一个非常简单的错误,很难识别,因为你不计算我犯了这样一个错误。我还得再看一眼。:-)