【发布时间】:2019-01-25 15:50:31
【问题描述】:
我有一个名为 images 的文件夹,位于以下用户的文件夹中:
图片
- 用户 1
- 用户 2
- 等等..
当我从数据库中删除用户时,我还想删除该给定用户的所有文件和文件夹。所有这些都在一个具有函数的类中,但是当我执行该函数时,我的整个文件夹图像都会被删除......
我已经检查过是否选择了正确的用户,如果路径没问题。当我在 test.php 文件上对其进行测试时,它运行良好,但在我的函数内部它被破坏了。
如果点击删除按钮,它会转到此功能:
$user = new user();
$id = $_db->mysqli->real_escape_string($_POST['id']);
$query = "SELECT * FROM users WHERE id = '" .$id."'";
$result = $_db->mysqli->query($query);
$userNumb = $result->num_rows;
$finalUserNumb = $userNumb;
if ($finalUserNumb > 0) {
$user->deleteUser($id);
}
通过给定的id获取用户信息
public function userSelsectByID($selector, $id)
{
$query = "SELECT " .$selector. " FROM users WHERE id ='" .$id."'";
$result = $this->mysqli->query($query);
$userInfo = $result->fetch_assoc();
$itemResult = $userInfo[$selector];
return $itemResult;
}
删除文件功能
public function delete_files($target)
{
if(is_dir($target)){
$files = glob( $target . '*', GLOB_MARK ); //GLOB_MARK adds a slash to directories returned
foreach( $files as $file ){
$this->delete_files( $file );
echo "Deleted ".$file." succesfull...</br>";
}
rmdir( $target );
} elseif(is_file($target)) {
unlink( $target );
}
}
删除用户函数
public function deleteUser($id)
{
$user = "DELETE FROM users WHERE id = '$id'";
$userResult = $this->mysqli->query($user);
$uren = "DELETE FROM uren WHERE user_id = '$id'";
$urenResult = $this->mysqli->query($uren);
$cookieLogin = "DELETE FROM cookieLogin WHERE user_id = '$id'";
$cookieLoginResult = $this->mysqli->query($cookieLogin);
$gebruikersnaam = str_replace(' ', '_', $this->userSelsectByID('gebruikersnaam', $id));
$this->delete_files('/sites/domain.nl/www/admin/images/'.$gebruikersnaam);
}
我希望删除带有用户名的文件夹,但实际上整个图像文件夹都被删除了...我尝试了很多但没有任何效果:(
有人可以帮助我吗?
【问题讨论】:
-
尝试在循环中检查
foreach( $files as $file ){$file不是../。 -
我怀疑
glob()返回.或..
标签: php