Редис Александрович
Оракул
(79332)
3 года назад
получаешь список всех файлов
var x = getDirContents(''C:/Program Files/');
потом проходишь по этому списку и создаешь массив md5 хэшей из списка файлов. Потом фильтруешь массив на нужное значение
function getDirContents($dir, &$results = array()) {
$files = scandir($dir);
foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
if (!is_dir($path)) {
$results[] = $path;
} else if ($value != "." && $value != "..") {
getDirContents($path, $results);
$results[] = $path;
}
}
return $results;
}
------Профи (766)
3 года назад
Это всё прекрасно но мне ещё нужно чтобы скрипт заходил в подпапки каталога и выполнял аналогичные действия
[vs]
Просветленный
(39070)
3 года назад
Нужно делать не foreach внутри foreach, а сделать функцию которая бы сама себя вызывала для вложенных директорий. Это называется рекурсия. Типа:
function scanFolders($path) {
...
if (is_dir($value)) {
scanFolders($value) ;
}
...
}
------Профи (766)
3 года назад
Сделал рекурсию, ничего не работает
function VirusScaner ($list){
foreach ($list as $value) {
if (fs::isFile($value)) {
$md5 = $value->hash('MD5');
if (in_array($md5, $signature)) {
$name = fs::name($value);
$locationfs = fs::abs($value);
alert("Файл найден");
if (fs::isDir($value)) {
$directory = new File($value);
$list = $directory->findFiles();
print_r($list);
VirusScaner($value);
}
}
}
}
}
$directory = new File('C:/Program Files/');
$list = $directory->findFiles();
foreach ($list as $value) {
if (fs::isFile($value)) {
$md5 = $value->hash('MD5');
if (in_array($md5, $signature)) {
$name = fs::name($value);
$locationfs = fs::abs($value);
alert("Файл найден");
if (fs::isDir($value)) {
$directory2 = new File($value);
$list2 = $directory2->findFiles();
foreach ($list2 as $value) {
{if (fs::isFile($value)) {
$md5 = $value->hash('MD5');
if (in_array($md5, $signature)) {
$name = fs::name($value);
$locationfs = fs::abs($value);
alert("Файл найден");
}
}
}
}
}
}
}
}
Разумеется это незаконченный код. Помогите пожалуйста кто чем может! Буду очень признателен!!!!