admin Founder


Registrato: Oct 03, 2008 Messaggi: 261
|
Inviato: Mer Apr 15, 2009 9:09 pm Oggetto: [PHP] Simple FTP Client |
|
|
| Codice: | <?php
/*
Simple FTP Client 1.0
Autore: luruke
Linguaggio: PHP
Licenza: GPL
Scusate per la commentazione alquanto "ridicola", per maggiori info sulle funzioni: [url=http://www.php.net]www.php.net[/url]
Uso:
php <file.php> <host> <user> <passwd> [int <port>]
[] = valore optional
Esempio:
php ftp.php ftp.mysite.it mysite asbd9gbuasdh
Per aiuto, dopo essersi loggati, dare il comando "help"
*/
error_reporting(0); //disabilita gli errori
$sito = @$argv[1]; //$sito è uguale alla stringa passata via ARGV n1
$username = @$argv[2]; //bla bla bla
$password = @$argv[3];
$port = @$argv[4];
function pulisci(){ //funzione pulisci
for($i=0;$i<50;$i++){ //il ciclo dura per 50 volte, ad ogni ciclo stampa "\n", ovvero va a capo
print "\n";
}
}
function help(){
print "\tComandi:\n\n";
print "\tquit = Esci\n";
print "\tls [-a] [-s] = Lista file\n";
print "\tpwd = Posizione di lavoro\n";
print "\tclear = Pulisce il terminale\n";
print "\tcd <nomecartella> = Entra in una cartella\n";
print "\trm <nomefile> = Elimina un file\n";
print "\tdownload <file_remoto> <file_locale> = Download di un file\n";
print "\tupload <file_locale> <file_remoto> = Upload di un file\n";
print "\tmkdir <nome_cartella> = Crea una cartella\n";
print "\trename <old_name> <new_name> = Rinomina un file o una cartella\n";
print "\trmdir <nome_cartella> = Elimina una cartella\n";
}
function ftp($comando){ //funzione ftp()
global $connessione; //prende la variabile esterna $connessione
if ($comando == "quit"){ //se $comando, passatogli via funzione è uguale a quit:
ftp_close($connessione); //chiudi la connessione
exit; //esci dallo script
}
elseif ($comando == "help"){
help(); //richiama la funzione help
}
elseif ($comando == "ls"){ //se $comando è uguale a ls:
$ls = ftp_nlist($connessione, "."); //$ls è uguale ad un array che contiene il listato delle directory della cartella ".", ovvero la locale
asort($ls); //ordina l'array $ls in maniera crescente, quindi da "a" a "z"
foreach($ls as $file){ //esegue un ciclo sull'array, e $ls è $file
print "\t". $file ."\n"; //stampa $file
}
}
elseif (eregi("ls (.+)", $comando, $flag)){ //qui è lungo il fatto, asd php.net
if($flag[1] == "-a"){
$list = ftp_rawlist($connessione, ftp_pwd($connessione)); //$list è un array che contiene il listato dei file e delle cartelle in modo dettagliato
asort($list);
foreach($list as $file){
echo "\t$file\n";
}
}
if ($flag[1] == "-s"){
$ls = ftp_nlist($connessione, "."); //listato semplice (array)
asort($ls);
foreach($ls as $file){
print "\t". $file ."\tSize:". ftp_size($connessione, $file) ."Byte\n"; //ftp_size(), ritorna la dimensione (in byte) del file
}
}
}
elseif ($comando == "pwd"){
print "\t". ftp_pwd($connessione) ."\n"; //ftp_pwd ritorna la posizione attuale dello script (directory)
}
elseif ($comando == "clear"){
pulisci(); //richiama la funzione pulisci(), dichiarata in precedenza
}
elseif (eregi("cd (.+)", $comando, $cartella)){
if(ftp_chdir($connessione, $cartella[1])){} else //entra nella cartella
print"\tErrore nell'entrare nella cartella!\n";
}
elseif(eregi("rm (.+)", $comando, $file)){
if (ftp_delete($connessione, $file[1])){} else //elimina file
print "\tErrore nel cancellare il file $file[1]\n";
}
elseif(eregi("download ([^ ].+) ([^ ].+)", $comando, $file)){
if(file_exists($file[2])){ //se il file esiste...
print "\tIl file $file[2] esiste gia', scegliere un nome differente\n";
} else {
ftp_get($connessione, $file[2], $file[1], FTP_BINARY); //download file
}
}
elseif(eregi("upload ([^ ].+) ([^ ].+)", $comando, $file)){
if(file_exists($file[1])){ //se il file esiste...
if (ftp_put($connessione, $file[2], $file[1], FTP_BYNARY)){} else //upload file
print "\tErrore nella fase d'upload del $file[1]!\n";
} else {
print "\tErrore! Il file $file[1] , non esiste!\n";
}
}
elseif(eregi("mkdir (.+)", $comando, $cartella)){
if (ftp_mkdir($connessione, $cartella[1])){} else //crea cartella
print "\tErrore nel creare la cartella $cartella[1]\n";
}
elseif(eregi("rename ([^ ].+) ([^ ].+)", $comando, $file)){
if(ftp_rename($connessione, $file[1], $file[2])){}else //rinomina file o cartella
print "\tErrore nel tentativo di rinominare $file[1] in $file[2]\n";
}
elseif(eregi("rmdir (.+)", $comando, $cartella)){
if(ftp_rmdir($connessione,$cartella[1])){}else //elimina cartella
print "\tErrore durante l'eliminazione della cartella $cartella[1]\n";
}
else{
print "\t Errore! Comando sconosciuto! Per la lista dei comandi \"help\"\n";
}
}
if ((isset($sito)) AND (isset($username)) AND (isset($password))){
if (isset($port)){ //se var $port esiste...
$connessione = @ftp_connect($sito, $port); //connette al server specificando il numero di porta (default: 21)
} else {
$connessione = @ftp_connect($sito); //connette al server
}
$login = @ftp_login($connessione, $username, $password); //aggiunge le credenziali d'accesso alla connessione
if($login){
pulisci(); //richiama pulisci()
print "Sei connesso al server:\n";
print "\tInfo:\n";
print "\tOS:". ftp_systype($connessione) ."\n"; //visualizza OS del server FTP
while(true) { //ciclo infinito
print ftp_pwd($connessione) ."> "; //stampa la directory di lavoro
$comando = trim(fgets(STDIN)); //trim() leva gli spazi e formatta il testo, fgets preleva dal terminale una variabile
ftp($comando); //richiama la funzione ftp e gli passa $comando
}
} else {
print "\tErrore nella connessione, rivedere i dati d'accesso\n";
}
}
?> |
|
|