Нужен скрипт поиска самой глубокой папки

Discussion in 'PHP' started by Billar, 31 Oct 2012.

  1. Billar

    Billar Banned

    Joined:
    9 Jul 2012
    Messages:
    15
    Likes Received:
    5
    Reputations:
    5
    Немного сократил и оптимизировал код
    PHP:
     <?php

    echo findlow("/var");

    function 
    findlow($root) { $dtmp array_diff(scandir($root), Array( "."".." ));
    $dlst = Array(); $adir = Array(); $wdir = Array();    $maxds 0;

    foreach(
    $dtmp as $d)
        if(
    is_dir($root."/".$d)) $dlst[] = $d;

    function 
    recursive($bdir)
    {    
    $dirs array_diff(scandir($bdir), Array( "."".." ));    $darr = Array();
        foreach(
    $dirs as $d) if(is_dir($bdir."/".$d)) {if( is_writable($bdir."/".$d) == 1$darr[] = $bdir."/".$d;recursive($bdir."/".$d);}
        return 
    $darr; }

    $random_path $root.'/'.$dlst[rand(0count($dlst)-1)]; $adir recursive($random_path);
    foreach(
    $adir as $low)    if($maxds substr_count($low'/'))    $maxds substr_count($low'/');
    foreach(
    $adir as $low)    if(substr_count($low'/') == $maxds$wdir[] = $low;

    if (
    count($wdir) > 0)    return $wdir[rand(0,count($wdir)-1)];else    return $random_path;

    }

    ?>
    Читать стоило внимательней спустя пару постов.
     
    #21 Billar, 2 Nov 2012
    Last edited: 2 Nov 2012
  2. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Извиняюсь, что поднимаю тему, но мне кажется вы очень сильно пошли не туда, а код может понадобится людям, даже не для заливки, а для поиска этого самого шелла, к примеру мне вот понадобился.

    Поиск самой глубокой папки с правами на запись:
    PHP:
    function DirReFind($addres, &$GlobDirpe){
        static 
    $CountS 0;
        if (
    $dirhen = @opendir($addres)) {
            while (
    $file = @readdir($dirhen))
                if(!
    in_array($file, array('.''..')) && @is_dir($permdir "$addres/$file")){
                    @
    is_writable($permdir) && ($CountS < ($count substr_count($permdir'/'))) && ($CountS $count) && ($GlobDirpe $permdir.'/');
                    
    DirReFind($permdir$GlobDirpe);
                }
            @
    closedir($dirhen);
        } else
            return 
    false;
    }
    DirReFind($_SERVER['DOCUMENT_ROOT'], $ret);
    var_dump($ret);
    Если права не нужны, нужно убрать @is_writable($permdir) && . Работает за секунды.
     
    #22 randman, 1 Dec 2012
    Last edited: 1 Dec 2012
  3. Billar

    Billar Banned

    Joined:
    9 Jul 2012
    Messages:
    15
    Likes Received:
    5
    Reputations:
    5
    Это конечно хорошо, но мне требовался скрипт, где директория каждый раз выбиралась рандомная.
    А именно: Даем функции папку, там она выбирает рандомную и уже в ней ищем самую глубокую.