File "main.php"

Full Path: /home/analogde/www/Administratif/FTP/Code05/main.php
File size: 15.1 KB
MIME-type: text/html
Charset: 8 bit

<HTML> 

<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> 

<TITLE>WEB PHP FTP CLIENT</TITLE> 

</HEAD> 

<BODY> 

<? 


//------------------------------------------------------------------------------------//

//konektni ftp server
$conn_id = ftp_connect("$ftp_server");

//------------------------------------------------------------------------------------//  

//naloguj se pomoci uzivatelskeho jmena a hesla
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
if ($ftp_user_dir)
{
   $Directory = "$ftp_user_dir";    // Nastav adresar
   $EnterDirectory = 1;             // Virtualne zmackni tlacitko Enter Directory, aby
                                    // se provedla funkce pro prochzen adres
}

//------------------------------------------------------------------------------------// 

//zkus jesli jsem nalogovanej
if ((!$conn_id) || (!$login_result))
{
    echo "Ftp connection has failed!<BR>";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name<BR>";
    die;
}
else
{
    echo "Connected to: <B>$ftp_server</B><BR> User: <B>$ftp_user_name</B><BR><BR>";
}

//------------------------------------------------------------------------------------//

$systype = ftp_systype($conn_id);  //zjisti jaky se pripojuje server
echo "<BR>systype = $systype";

//------------------------------------------------------------------------------------//

//Upload souboru
if ($upload)
{
    //vytvor a sifruj soubor pro nasledny prenos z lokalniho disku na PHP server
    $HTTP_POST_FILES['userfile']['tmp_name'];    //vyhod informace o upload souboru

    //zobraz informace o upload souboru
    print "<BR>";
    print "userfile = $userfile";
    print "<BR>";
    print "userfile_name = $userfile_name";
    print "<BR>";
    print "userfile_type = $userfile_type";
    print "<BR>";
    print "userfile_size = $userfile_size";
    print "<BR>";
    print "tmp_name = $tmp_name";
    print "<BR>";

    $filename = $userfile_name;    //nastav jmeno souboru
    $temp = $userfile;    //nastav temp
    move_uploaded_file($filename, $temp);    //presun soubor z disku do tempu na PHP serveru

    //nakopiruj soubor z PHP serveru na pripojeny FPT server
    $destination = "$OldDirectory[$DirStep]/$userfile_name";    //nacti, do ktereho adresare a pod jakym jmenem se ma soubor ulozit
    $upload_file = ftp_put($conn_id, $destination, $temp, FTP_BINARY);    //kopiruj soubor z tempu PHP serveru na pripojeny FPT server
    //echo "<BR>presouvam soubor $destination";

    //napis pokec, jestli se soubor presunul, nebo ne
    if (!$upload_file)
    {
        echo "<BR>Ftp upload nefunguje!";
    }
    else
    {
        echo "<BR>Kopiruju soubor $temp na server $ftp_server jako soubor $destination";
    }
}//konec UPLOAD

//------------------------------------------------------------------------------------//

//Skok do predesleho adresare
if (($UpDirectory)&&($DirStep != 0))

{
     $DirStep = $DirStep - 1;
     $Directory=$OldDirectory[$DirStep];
     $dir = $Directory;
     echo "<BR>Path: <B>$dir</B>";

     //Promenna $len bude potreba pri vypisu souboru do tabulky tak,
     //ze nactu celou cestu i se souborem a smazu prvni znaky $len, takze zustane jenom jmeno souboru.
     $len =  strlen($dir); //kolik obsahuje etzec adrese znak?
     $len = $len + 1;    //pricti jeden znak, coz je lomitko
}

//------------------------------------------------------------------------------------//

// precti adresar
if (($EnterDirectory)&&($Directory))
{
    echo "<BR>Directory = $Directory";
    $slash = strchr($Directory,"/");    //testuj, jestli Directory obsahuje lomtko
    if ($slash)    //pokud ano, tak prochazej adresare timto zpusobem
    {
      //takhle funguje ftp.opengl.cz
      $DirStep = $DirStep + 1;    //pricti pocet vnorenych adresaru
      $OldDirectory[$DirStep] = $Directory;     //tomuto vnorenemu adresari prirad jmeno akrualniho adresare
      $dir = $Directory;    //predej promenne $dir
    }
    else    //jinak prochazej adresare timto zpusobem
    {
      //takhle funguje ftp.nixnet.cz
      $prev_dir_step = $DirStep;
      $DirStep = $DirStep + 1;    //pricti pocet vnorenych adresaru
      $OldDirectory[$DirStep] = "$OldDirectory[$prev_dir_step]//$Directory";     //tomuto vnorenemu adresari prirad jmeno akrualniho adresare
      $dir = "$OldDirectory[$prev_dir_step]//$Directory";    //predej promenne $dir
    }
    echo "<BR>Path: <B>$dir</B>";     // vypis cestu k souboru

    //Promenna $len bude potreba pri vypisu souboru do tabulky tak,
    //ze nactu celou cestu i se souborem a smazu prvni znaky $len, takze zustane jenom jmeno souboru.
    $len =  strlen($dir);    //kolik obsahuje etzec adrese znak?
    $len = $len + 1;       //pricti jeden znak, coz je lomitko
}

//------------------------------------------------------------------------------------//



//Pokud se nevybere zadny adresar, tak zustan na stejne pozici adresaroveho stromu
if (!$Directory)
{
    echo "<BR>";
    echo "Nevybrany zadny adresar";
    echo "<BR>";
    echo "DirStep = $DirStep";
    $dir = $OldDirectory[$DirStep];    //ponechej puvodni adresar
    echo "<BR>";
    echo "dir = $dir";

    //Promenna $len bude potreba pri vypisu souboru do tabulky tak,
    //ze nactu celou cestu i se souborem a smazu prvni znaky $len, takze zustane jenom jmeno souboru.
    $len =  strlen($dir);     //kolik obsahuje etzec adrese znak?
    echo "<BR>";
    echo "len = $len";
    if ($len)
    {
      $len = $len + 1;
    }
    echo "<BR>";
    echo "druhej len = $len";
}


//------------------------------------------------------------------------------------//

// Make Direstory
if ($make_directory)    //jestlize jsem klepnul na Make Directory
{
    echo "<BR> Make Directory jede";
    //ftp_mkdir ( resource ftp_stream, string directory)
    ftp_mkdir($conn_id, "//$dir//$value_make_directory//");    //vytvor adresar podle value_make_directory
    echo "<BR> Vytvarim adresar //$dir//$value_make_directory//";
}

//------------------------------------------------------------------------------------//

// Delete Direstory
if ($delete_directory)    //jestlize jsem klepnul na Delete Directory
{
    echo "<BR> Delete Directory jede";
    echo "<BR>Directory = $Directory";
    if($Directory)
    {
      $slash = strchr($Directory,"/");    //testuj, jestli Directory  obsahuje lomtko
      if ($slash)
      {
         //tohle jede na opengl
         $dir = $OldDirectory[$DirStep];    //ponechej puvodni adresar
         //Promenna $len bude potreba pri vypisu souboru do tabulky tak,
         //ze nactu celou cestu i se souborem a smazu prvni znaky $len, takze zustane jenom jmeno souboru.
         $len =  strlen($dir);     //kolik obsahuje etzec adrese znak?
         echo "<BR>";
         echo "len = $len";
         if ($len)
         {
           $len = $len + 1;
         }

         ftp_rmdir ($conn_id, $Directory);
         echo "<BR> Mazu adresar $Directory";
      }
      else
      {
         //tohle jede na nixnetu
         $dir = $OldDirectory[$DirStep];
         echo "<BR>dir = $dir";
         ftp_rmdir ($conn_id, "//$dir//$Directory//");
         echo "<BR> Mazu adresar //$dir//$Directory//";

         $Directory = "";
      }
    }

}

//------------------------------------------------------------------------------------//

//Download file
if ($download_file)
{
   echo "<BR> Download jede";
   echo "<BR> File = $File";

   $destination_file = "temp/$File.zip";
   $source_file = "//$dir//$File";
   ftp_get($conn_id, $destination_file, $source_file, FTP_BINARY);   //kopiruj soubor z pripojeneho serveru na muj server
   header("Location: $destination_file");
}

//------------------------------------------------------------------------------------//

// Delete File
if ($delete_file)    //jestlize jsem klepnul na Delete File
{
    echo "<BR> Delete File jede";
    $slash = strchr($File,"/");    //testuj, jestli File  obsahuje lomtko
    if($File)
    {
      if ($slash)
      {
        ftp_delete ($conn_id, $File);
        echo "<BR> Mazu soubor $File";
      }
      else
      {
        ftp_delete ($conn_id, "//$dir//$File");
        echo "<BR> Mazu soubor $File";
      }
    }

}

//------------------------------------------------------------------------------------//

//Nacti soubory v adresari dir
$file_list=Array();
$file_list=ftp_nlist($conn_id, "$dir");

//Sead podle abecedy file_list
sort($file_list);

//------------------------------------------------------------------------------------//

//Vykresli tabulky
echo  "<TABLE  BORDER=1 CELLPADDING=4 width=600>";

/////vykresli Form 1 /////
echo "<FORM enctype=\"multipart/form-data\" ACTION = \"main.php\" METHOD=POST>";

//------------------------------------------------------------------------------------//

//Zobraz adresare
echo "<TR><TD width=30%><B>Directories</B><BR>";    //prvni radka a bunka tabulky
echo "<SELECT TYPE=TEXT NAME=Directory  SIZE=10>";   //detekce, ktery adresar je oznaceny ,vyhodi promennou $Directory

$i=0;    //cyklus nastav na 0
do    //cykluj
{

    $slash = strchr($file_list[$i],"/");    //testuj, jestli file list obsahuje lomtko
    if ($slash)    //jestlie file list obsahuje lomtko tak
    {
      $clear_dir = substr($file_list[$i], $len, 20 );    //vymaz cestu k souborum, nech jenom nazvy adresaru a souboru
    }
    else  //jinak
    {
      //nacti celou cestu i se souborem a smaz prvni znaky $len, aby zustalo jenom jmeno souboru.
      $clear_dir = $file_list[$i];  //bude clear_dir rovno file listu
    }
    //$file_size = ftp_size($conn_id, $file_list[$i]);   //nacti velikost souboru
    //$file_size = ftp_size($conn_id, $clear_dir);   //nacti velikost souboru
    $dot = strchr($file_list[$i],".");    //testuj, jestli file list obsahuje tecku

    //if (($file_size == -1) and ($file_list[$i] != ""))    //pokud je velikost souboru nulova, tak je to adresar
    if (!$dot)    //jestlize string obsahuje tecku, tak je to soubor
    {
       echo "<option value=$file_list[$i]> $clear_dir </option>";    //tak ho muzus vypsat do prvniho formulare
    }
    $i++;    //pricti cyklus
}while($file_list[$i]);    //dokud se neprojedou vsechny soubory a adresare

echo "</select>";    //konec detekce, ktery adresar je oznaceny

//------------------------------------------------------------------------------------//  

//Zobraz soubory
echo "<TD><B>Files</B><BR>";    //prvni radka, druha bunka tabulky
echo "<SELECT TYPE=TEXT NAME=File  SIZE=10>";    //detekce, ktery soubor je oznaceny ,vyhodi promennou $File

$i=0;    //cyklus nastav na 0
do    //cykluj
{
    $slash = strchr($file_list[$i],"/");    //testuj, jestli file list obsahuje lomtko
    if ($slash)    //jestlie file list obsahuje lomitko tak
    {
      $clear_dir = substr($file_list[$i], $len, 20 );    //vymaz cestu k souborum, nech jenom nazvy adresaru a souboru
      $file_size = ftp_size($conn_id, $file_list[$i]);    //nacti velikost souboru
    }
    else  //jinak
    {
      //nacti celou cestu i se souborem a smaz prvni znaky $len, aby zustalo jenom jmeno souboru.
      $clear_dir = $file_list[$i];  //bude clear_dir rovno file listu
      $file_size = ftp_size($conn_id, "//$dir//$file_list[$i]");    //nacti velikost souboru
    }
    $dot = strchr($file_list[$i],".");    //testuj, jestli file list obsahuje tecku

    if ($dot)    //jestlize string obsahuje tecku, tak je to soubor
    {
      echo "<option value=$file_list[$i]> $clear_dir ($file_size bytes) </option>";    //tak ho muzus vypsat do druheho formulare
    }
    $i++;    //pricti cyklus
}while($file_list[$i]);    //dokud se neprojedou vsechny soubory a adresare

echo "</select>";    //konec detekce, ktery soubor je oznaceny

//------------------------------------------------------------------------------------//  

//Posli formularove informace
echo "<TR><TD>";    //dryhy radek, prvni bunka tabulky

echo "<INPUT TYPE=hidden NAME=ftp_server VALUE=$ftp_server>";     //jmeno FTP serveru
echo "<INPUT TYPE=hidden NAME=ftp_user_name VALUE=$ftp_user_name>";    //uzivatelske jmeno
echo "<INPUT TYPE=hidden NAME=ftp_user_pass VALUE=$ftp_user_pass>";    //uzivatelske heslo
echo "<INPUT TYPE=hidden NAME=DirStep VALUE=$DirStep>";    //identifikacni cislo vnoreneho adresare, ve kterem se nachazim
$slash = strchr($dir,"/");    //testuj, jestli file list obsahuje lomtko
if (!$slash)
{
  echo "<INPUT TYPE=hidden NAME=dir VALUE=$dir>";    //posli nazev adresare
}

//posli informace o poctu vnorenych adresaru
$i=0;    //cyklus nastav na 0
do    //cykluj
{
    echo "<INPUT TYPE=hidden NAME=OldDirectory[$i] VALUE=$OldDirectory[$i]>";
    $i++;    //pricti cyklus
}while($i <= $DirStep); //dokud i se nebude rovnat 20, vic vnorenych adresaru snad nikdo nebude mit
//while($i <= 20); //dokud i se nebude rovnat 20, vic vnorenych adresaru snad nikdo nebude mit

//------------------------------------------------------------------------------------//

//Vykresli buttony pro praci s adresarema
echo "<INPUT TYPE=SUBMIT NAME=\"EnterDirectory\" VALUE=\"Enter Directory\"><BR>";    //Button Enter Directory
echo "<INPUT TYPE=SUBMIT NAME=\"UpDirectory\" VALUE=\"Go up one Directory\">";    //Button Go up one Directory
echo "<BR>"; echo "<HR>"; //odradkuj
echo "<INPUT TYPE=TEXT NAME=\"value_make_directory\" VALUE=\"New Directory\">";    //Button Make Directory
echo "<INPUT TYPE=SUBMIT NAME=\"make_directory\" VALUE=\"Make Directory\">";    //Button Make Directory
echo "<BR><HR><BR><HR>"; //odradkuj
echo "<INPUT TYPE=SUBMIT NAME=\"delete_directory\" VALUE=\"Delete Directory\">";    //Button Delete Directory

//------------------------------------------------------------------------------------//
  
//Vykresli buttony pro praci se souborama
echo "<TD>";    //druha radka, druha bunka tabulky

//buttony pro Upload File
echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000000\">";    //posli informaci o maximalni velikosti uploadovaneho souboru
echo "<input name=\"userfile\" type=\"file\">";    //button browse - prochazeni
echo "<input type=\"submit\" name=\"upload\" value=\"Upload File\">";    //button upload

//echo "<BR><HR>";    //odradkuj


// Vykresli button Download File
//echo "<input type=\"submit\" name=\"download_file\" value=\"Download File\">";

echo "<BR><HR><BR><HR>"; //odradkuj

//Vykresli button Delete File
echo "<input type=\"submit\" name=\"delete_file\" value=\"Delete File\">";

echo "</FORM>";    //konec Form1
echo "</TABLE>";    //konec tabulky


echo "<BR>"; echo "<BR>"; //odradkuj

//------------------------------------------------------------------------------------//

//Vykresli button Logout
//Form 3 pro Logout, vraci se zpet na index.php
echo "<FORM enctype=\"multipart/form-data\" ACTION = \"index.php\" METHOD=POST>";

//button Logout
echo "<BR>"; echo "<BR>"; //odradkuj
echo "<input type=\"submit\" name=\"logout\" value=\"Logout\">";
//echo "<INPUT TYPE=hidden NAME=conn_id VALUE=$conn_id>";    //uzivatelske cislo
echo "<INPUT TYPE=hidden NAME=ftp_server VALUE=$ftp_server>";     //jmeno FTP serveru
echo "<INPUT TYPE=hidden NAME=ftp_user_name VALUE=$ftp_user_name>";    //uzivatelske jmeno
echo "<INPUT TYPE=hidden NAME=ftp_user_pass VALUE=$ftp_user_pass>";    //uzivatelske heslo

echo "</FORM>";    //konec FORM 3 pro Logout//

//------------------------------------------------------------------------------------//



 ?>

 

 

</BODY>

</HTML>