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>