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']."
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
Feito por Anderson Dadário";
}
?>