FTP CONECTOR v1.0 Autor: Anderson Dadário Licença: GPL E-mail: andersonmvd@hotmail.com ~ Dependências: - Criar um arquivo no mesmo diretório deste arquivo com o nome: "info.ftp.class.php" - Criar um diretório no mesmo diretório deste arquivo com o nome: "temp" - Dê permissão geral ai nos arquivos e no diretório "temp" *****************************************************************************************/ session_start(); set_time_limit(0); require "info.ftp.class.php"; // Arquivo com as configurações da classe ftp if($_SERVER['QUERY_STRING'] == 'destruir'){ session_destroy();header("Location: ".$_SERVER['PHP_SELF'].""); } class ftp { private $host, $port, $timeout, $user, $pass; var $socket, $info, $dir, $nCampos, $nTamanho; function __construct($host, $port=21, $timeout=90, $user, $pass, $seguro) { if(empty($host)){ $host = base64_decode($conf_host); } if(empty($port)){ $port = base64_decode($conf_port); } if(empty($timeout)){ $timeout = base64_decode($conf_timeout); } if(empty($user)){ $user = base64_decode($conf_user); } if(empty($pass)){ $pass = base64_decode($conf_pass); } if(empty($seguro)){ $seguro = base64_decode($conf_seguro); } $this->host = $host; $this->port = $port; $this->timeout = $timeout; $this->user = $user; $this->pass = $pass; $this->info = "info.ftp.class.php"; // Arquivo no qual estarão salvas as informações da conexão $this->dir = "temp"; // Diretório responsável por armazenar os arquivos baixados por FTP $this->nCampos = 5; // Quantidade de campos para enviar arquivos $this->nTamanho = 100; // Tamanho em MB de cada arquivo que pode ser enviado por upload if(@!$this->Con()) { exit("
Houveram problemas durante a tentativa de conexão

Conectar-se novamente
"); } if(!isset($_GET['caminho'])) { $this->Salvar(); exit(""); } else{ if(isset($_GET['dwn']) && !empty($_GET['dwn'])){ $this->Download($_GET['dwn']); } elseif(isset($_GET['pasta']) && !empty($_GET['pasta'])){ $this->NovoDir($_GET['pasta']); } elseif(isset($_GET['cmd']) && !empty($_GET['cmd'])){ $this->Comando($_GET['cmd']); } elseif(isset($_GET['enviar']) && !empty($_GET['enviar'])){ $this->UploadForm();exit; } $this->chDir($_GET['caminho']); } } function __destruct() { $this->Des(); # shell_exec("del ".$this->dir."/*.*"); # unlink($this->info); } // ================ Conexão public function Con() { if($this->seguro == true){ $this->socket = ftp_ssl_connect($this->host,$this->port,$this->timeout); } else{ $this->socket = ftp_connect($this->host,$this->port,$this->timeout); } if($this->Aut()){ return TRUE; } else{ return FALSE; } } // ================ Autenticação public function Aut() { if(ftp_login($this->socket, $this->user, $this->pass)){ return TRUE; } else{ return FALSE; } } // ================ Desconcetar public function Des() { if(!empty($this->$socket)){ ftp_close($socket); } else { return FALSE; } # unlink($this->file); } // ================ Alocação private function Aloc($bytes) { if (ftp_alloc($this->con(), filesize($bytes), $retorno)) { return $retorno; } else{ return FALSE; } } // ================ Upload public function Upload($nome, $file) { // if(!$this->Aloc(filesize($file))){ return FALSE; } if(empty($nome) || empty($file)){ return FALSE; } if(ftp_put($this->socket, $nome, $file, FTP_ASCII)){ fclose($fp);return TRUE; } elseif(ftp_put($this->socket, $nome, $file, FTP_BINARY)){ fclose($fp);return TRUE; } else{ fclose($fp);return FALSE; } } // ================ Upload Form public function UploadForm() { echo "Enviar arquivos para: ".$_GET['caminho']."

"; for($i=0;$i < $this->nCampos; $i++) { echo"
\n"; } echo"


Retornar
"; } // ================ Listar public function Listar() { $var=ftp_nlist($this->socket,$this->Atual()); // var_dump($var) || print_r($var) $pastas = array(); $arquivos = array(); foreach($var as $chave => $valor) { if($this->Tamanho($valor) < 0) { array_unshift($pastas,$valor); } else{ array_unshift($arquivos,$valor); } } # Visualização ~~ Começa echo "FTP CONECTOR v1.0 - Você está em: ".$this->Atual().""; echo "Diretórios:

"; foreach($pastas as $nome){ echo "$nome
"; } echo "


"; echo "Arquivos:

"; foreach($arquivos as $nome){ echo "$nome
"; } echo "
"; # Visualização ~~ Termina echo "

Disconnect || Put Files
"; } // ================ Download public function Download($arq_servidor) { $errey = explode("/",$arq_servidor); $errey = array_reverse($errey); $concat = "".$this->dir."/".$errey[0].""; if($var = ftp_get($this->socket, $concat, $arq_servidor, FTP_BINARY)){ $tamanho = filesize($concat); header("Content-Type: application/save"); header("Content-Length: $tamanho"); header("Content-Disposition: attachment; filename=$errey[0]"); header("Content-Transfer-Encoding: binary"); $fp = fopen($concat, "r");fpassthru($fp);fclose($fp);return TRUE; } else{ return FALSE; } } // ================ Dir Atual public function Atual() { return "".ftp_pwd($this->socket).""; } // ================ File Size public function Tamanho($arquivo) { if(empty($arquivo)){ return FALSE; } else{ return ftp_size($this->socket,$arquivo); } } // ================ Cria dir public function NovoDir($dir) { if(empty($dir)){ return FALSE; } else{ return (ftp_mkdir($this->socket,$dir)) ? TRUE : FALSE; } } // ================ Opções public function Info() { $inf = array(); $inf[0] = ftp_systype($this->socket); $inf[1] = ftp_get_option($this->socket); return $inf; } // ================ Comando public function Comando($cmd) { if(ftp_site($this->socket,$cmd)){ return TRUE; } else{ return FALSE; } } // ================ CD .. public function DirUp() { return ftp_cdup($this->socket); } // ================ mudar CD.. public function chDir($dir) { if(ftp_chDir($this->socket,$dir)){ return TRUE; } else{ return FALSE; } } // ================ CHMOD public function chmod($chmod,$oque) { if(ftp_chmod($this->socket, $chmod, $oque) !== false){ return TRUE; } else{ return FALSE; } } // ================ Salvando public function Salvar() { $fp = fopen($this->info,"w"); fputs($fp,"host)."\"; \$conf_port = \"".base64_encode($this->port)."\"; \$conf_timeout = \"".base64_encode($this->timeout)."\"; \$conf_user = \"".base64_encode($this->user)."\"; \$conf_pass = \"".base64_encode($this->pass)."\"; \$conf_seguro = \"".base64_encode($this->seguro)."\"; ?>"); fclose($fp); } } // fim da classe # Usando: new ftp( [STR] $host, [INT] $porta, [INT] $timeout, [STR] $usuario, [STR] $senha, [BOOL] $conexao_ssl) if(getenv('REQUEST_METHOD') == "POST") { if(isset($_POST['logar'])) { $host = $_POST['host']; $port = $_POST['port']; $timeout = $_POST['timeout']; $user = $_POST['user']; $pass = $_POST['pass']; $seguro = $_POST['seguro']; $form = true; session_register('host'); session_register('port'); session_register('timeout'); session_register('user'); session_register('pass'); session_register('seguro'); session_register('form'); } else { $classe = new ftp($_SESSION['host'],$_SESSION['port'],$_SESSION['timeout'],$_SESSION['user'],$_SESSION['pass'],$_SESSION['seguro']); for($i=0;$i $classe->nTamanho*1024*1024){ echo "O arquivo $name é maior do que o limite definido.";exit; } elseif($file_erros==1 || $file_erros==2) { echo "O arquivo $name é maior do que o limite definido.";exit; } elseif($file_erros==3) { echo "O arquivo $name está corrompido.";exit; } elseif($file_erros==4) { echo "Não foi feito a transferência do arquivo: $name";exit; } elseif(!$file_erros){ move_uploaded_file($temp_name, "".$classe->dir."/" . $name) or die("Erro ao mover arquivo"); if(@!$classe->Upload($name,"".$classe->dir."/" . $name)) { exit("
Houveram erros ao tentar enviar o arquivo para o servidor

Tentar novamente
"); } // fim do if } // fim do elseif }// fim do if }// fim do for echo "
Arquivos enviados com sucesso!

"; } // fim do else } // fim do post if($_SESSION['form'] == true){ $ftp = new ftp($_SESSION['host'],$_SESSION['port'],$_SESSION['timeout'],$_SESSION['user'],$_SESSION['pass'],$_SESSION['seguro']); $ftp->Listar(); } else{ echo"
FTP CONECTOR v1.0 - Feito por Anderson Dadário FTP CONECTOR v1.0

Host:
Porta:
Timeout:
Usuario:
Senha:
Seguro:


Feito por Anderson Dadário"; } ?>