在一个项目中,我可以创建目录和文件以及编辑这些文件。但现在我添加删除功能来删除目录和其中的所有内容。我做了一些研究,发现2009年有一个堆栈溢出答案,有两种选择。我很好奇哪一个更好,如果有两个安全更新(只要确保我使用安全的方法)。以下是答案的复制和粘贴。PHP:删除目录和内容 - 最安全,最可靠的方法
该功能将允许你删除任何文件夹(只要它是可写的),它的文件和子目录。使用RecursiveDirectoryIterator
function Delete($path)
{
if (is_dir($path) === true)
{
$files = array_diff(scandir($path), array('.', '..'));
foreach ($files as $file)
{
Delete(realpath($path) . '/' . $file);
}
return rmdir($path);
}
else if (is_file($path) === true)
{
return unlink($path);
}
return false;
}
或者不递归:
function Delete($path)
{
if (is_dir($path) === true)
{
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST);
foreach ($files as $file)
{
if (in_array($file->getBasename(), array('.', '..')) !== true)
{
if ($file->isDir() === true)
{
rmdir($file->getPathName());
}
else if (($file->isFile() === true) || ($file->isLink() === true))
{
unlink($file->getPathname());
}
}
}
return rmdir($path);
}
else if ((is_file($path) === true) || (is_link($path) === true))
{
return unlink($path);
}
return false;
}
我没有看到你由* secure *表示。如果你不知道自己在做什么,两者都会造成损害。 –
像代码中的漏洞或已知的不安全方法一样安全。我知道有些东西因为已知的漏洞而不被推荐,只是想确保它们不包含任何漏洞。 – kdjernigan
^所以你问的是代码审查?如果是的话,那么这可能是OT – reikyoushin