Файл менеджер на PHP

Discussion in 'PHP' started by daniel777, 5 Apr 2011.

  1. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Привет всем:)

    Хочу написать файловый менеджер на PHP.
    Не могу составить алгоритм.

    Вот скрипт для вывода списка файлов в заданной папке:

    <?php
    $current_dir = '.';
    $dir = opendir($current_dir);
    while ($file = readdir($dir))
    {
    echo "$file";
    }
    closedir($dir);
    ?>

    Если $current_dir точка - то это папка, в которой лежит скрипт.
    Если две точки - то на уровень выше.

    Пожалуйста помогите составить алгоритм, и как правильно обрабатывать эти точки?
     
  2. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    <?php
    if ($handle = opendir('.'))
    {
    while (false !== ($file = readdir($handle)))
    {
    if ($file != "." && $file != "..")
    {
    echo "$file\n";
    }
    }
    closedir($handle);
    }
    ?>
     
  3. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37

    В таком случае эти точки выводится вообще не будут.
    А мне надо чтобы:

    if($file == '..'){
    echo "<a href=то тут ссылка на уровень выше>up</a>";
    }

    И по этой ссылке на уровень выше опять загружался список файлов и папок.
     
  4. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Ну посмотри ты как у настоящего шелла, итам всё счразу станет понятно.
     
  5. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    вот правда тут только для папок и для ftp но можешь удалить часть кода

    PHP:
    foreach($directories_for_check as $key =>$value){
               
           if (@
    ftp_chdir(self::$resourse,$value))
    {       
    $directories[] = $value;
                
    ftp_chdir(self::$resourse"/..");
    }
    и будет работать для всех файлов
    ............... model
    PHP:
    public function ShowDirs($dir){
             
            
    ftp_chdir(self::$resourse,$dir);
            
    $dir ftp_pwd(self::$resourse);
            

           
    $directories_for_check ftp_nlist(self::$resourse$dir);

           foreach(
    $directories_for_check as $key =>$value){
               
           if (@
    ftp_chdir(self::$resourse,$value))
    {       
    $directories[] = $value;
                
    ftp_chdir(self::$resourse"/..");
    }
                         else {
                continue;             
                         }}

           return 
    $directories;
               }
    .............................. view
    PHP:
    foreach ($directories as $ftp_dir )
        {
            echo 
    "$ftp_dir";
       echo 
    "   <form action='";
       echo 
    Yii::app()->createUrl('magazineDownload/ShowDirs',array('dir'=>$ftp_dir)) ;
       echo 
    "'method='POST'>";
     echo 
    "<input type='submit' value='перейти'>"."</form>";
          
    ...................controler
    PHP:
    public function actionShowDirs ($dir=null){
            if( 
    $dir == null ) {
                
    $model = new MagazineDownload;
                
    //$directory =Yii::app()->params['ftp_server'];
                
    $ftp_resourse MagazineDownload::$resourse;
                
    $dir ftp_pwd($ftp_resourse);
            }
                 
    $model = new MagazineDownload;
        
    $ftp_directories =  $model->ShowDirs($dir);
            
    $this->render('DownloadForm',array(  'directories'=>$ftp_directories  ));
               }
     
    #5 barnaki, 13 Apr 2011
    Last edited: 13 Apr 2011
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Мда
    PHP:
    $it = new RecursiveDirectoryIterator('temp');
        foreach(new 
    RecursiveIteratorIterator($it) as $file)
        {
            echo 
    $file PHP_EOL;
        }
     
    1 person likes this.