- Como Criar Um Site, Blog – WebMaster.pt - http://www.webmaster.pt -

Conexão Via FTP Com PHP

Tweet [3]

Na matéria de hoje falaremos um pouco sobre um assunto bastante comentado na Internet, porém, que possui poucos exemplos simples (em sua grande maioria são com erros).

Quem trabalha com Internet, sabe que o envio rápido e prático de arquivos é essencial. correto?

Já pensou em enviar um ficheiro para seu Servidor de forma rápida e por um motivo ou outro, esquece o login, senha ou até mesmo o IP do Servidor em um outro lugar?

Com uma solução prática, você pode facilmente enviar ou receber seu conteúdo!

Se você Vasculhar os recursos do CPanel, encontrará um sisteminha prático que faz isso pra você (o file manager), mas se você não tiver os dados de acesso ao Servidor, de nada adianta!

Há a possibilidade também de baixar o file manager e customizá-lo, mas… se for para executar tal procedimento, é mais fácil você desenvolver sua própria solução!

Na matéria de hoje vamos lhe dar algumas dicas de como fazer isso. Claro, não vamos postar o conteúdo completo, mas você terá uma base para elaborar algo mais sofisticado.

Efetuando Conexão FTP

A conexão a um Servidor FTP não é difícil de fazer. Basta você usar a função ftp_connect().

Geralmente usamos classes pré-definidas e limpas. Como nosso foco nesta matéria é auxiliar quem está iniciando, vou disponibilizar abaixo um script básico. ok?

Veja abaixo como faríamos o script de conexão:


<?php
// definindo o tempo limite da aplicação o time default é de 30 segundos - você setando para 0  fica um tempo indefinido
set_time_limit(0);

// INFORMAÇÕES DE ACESSO AO SERVIDOR
$ftp_server = "SERVIDOR"; // Nome ou IP do Servidor
$login      = "USUARIO"; // Usuário
$senha      = "SENHA";   // Senha

$diretorio  = "/public_html/"; // Diretório onde deverá acessar (default)

// efetua a conexão
$conn_id = ftp_connect($ftp_server);
// caso ocorra algum erro de conexao
if(!$conn_id){
echo "nao foi possivel conectar ao servidor de ftp dp site ".$ftp;
exit;
}else{
// faz a autenticação do usuario - nessa parte sera necessário informar o login e senha
$login_result = ftp_login($conn_id, $login, $senha);
if(!$login_result){
  echo "erro ao efetuar login";
  exit;
}else{}
}
?>

Prático, não?

O que acha de verificar na prática o conteúdo?

Listando O Conteúdo Do Diretório

Abaixo disponibilizamos um pequeno exemplo de como você pode listar o conteúdo da sua página.

Antes disso, vamos mostrar como ficaría uma função para tal finalidade:


function listar($modo,$diretorio,$ant,$dps) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  if ($modo == "simples"){
   $lista = ftp_nlist($conn_id,$diretorio);
  } elseif ($modo == "detalhada"){
   $lista = ftp_rawlist($conn_id,$diretorio);
  }
  for ($x=0;$x<count($lista);$x++){
   echo $ant.$lista[$x].$dps;
  }
}

Veja que na primeira linha da função listar, ficaría o modo (se simples ou detalhado), o diretório atual, antes e depois.

Abaixo, ele faría a verificação se a conexão estava funcionando e após isso definiria o conteúdo dentro das especificações (usando o ftp_nlist ou o ftp_rawlist).

Para a matéria de hoje, estaremos postando apenas um exemplo simples, mas que já supre a necessidade de quem quer visualizar seus ficheiros no site (conforme imagem e script abaixo descrito).



<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="48%"><div align="center"><font size="2" face="Verdana, Tahoma, Arial"><strong>Nome</strong></font></div></td>
<td width="22%"><div align="center"><font size="2" face="Verdana, Tahoma, Arial"><strong>Tamanho</strong></font></div></td>
<td width="30%"><div align="center"><font size="2" face="Verdana, Tahoma, Arial"><strong>Última Modificação</strong></font></div></td>
</tr>
<?
echo "<b>O diretorio atual é: </b> ". $diretorio;

$lista=ftp_nlist($conn_id, $diretorio); //Devolve um array com os nomes de arquivos
$lista=array_reverse($lista); //Inverte ordem do array (ordena array)
while ($item=array_pop($lista)) //Lê todos os arquivos e diretorios do diretorio
{
$tamanho=number_format(((ftp_size($conn_id,$item))/1024),2)." Kb";
//Obtem tamanho de arquivo e o passa a KB
if($tamanho=="-0.00 Kb") // Se for -0.00 Kb se refere a um diretorio
{
$item="<i>".$item."</i>";
$tamanho="&nbsp;";
$data="&nbsp;";
}else{
$data=date("d/m/y h:i:s", ftp_mdtm($conn_id,$item));
//Filemtime obtem a data de modificação do arquivo; e date lhe dá o formato de saída
}

?>

<tr>
<td><font size="2" face="Verdana, Tahoma, Arial"><? echo $item ?></font></td>
<td align="right"><font size="2" face="Verdana, Tahoma, Arial"><? echo $tamanho ?></font></td>
<td align="right"><font size="2" face="Verdana, Tahoma, Arial"><? echo $data ?></font></td>
</tr>
<? }?>
</table>
<?
// fechando a conexao FTP
ftp_close($conn_id);
?>

Prático, não?

Bem… este é apenas um pontapé inicial…

Abaixo você poderá ver alguns modelos para que você implemente seu conteúdo:

OBS.: Para que você não tenha sobre como implementar o conteúdo abaixo, em anexo temos o ficheiro “comandos.txt” que deverá lhe ajudar a entender as variáveis.


function upload($fonte,$destino,$modo) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  ftp_put($conn_id,$destino,$fonte,$modo);
}

Na função acima, através do ftp_put você poderá efetuar o UPLOAD do conteúdo ao Servidor.

 
function download($fonte,$destino,$modo) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  ftp_get($conn_id,$destino,$fonte,$modo);
}

Na função acima, através do ftp_get você poderá efetuar o DOWNLOAD do conteúdo do Servidor.

 
function renomear($antigo,$novo) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  ftp_rename($conn_id,$antigo,$novo);
}

Na função acima, através do ftp_rename você poderá efetuar a alteração do nome do arquivo ou diretório.


function deletar($alvo) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  ftp_delete($conn_id,$alvo);
}

Na função acima, através do ftp_delete você poderá efetuar a exclusão de um ficheiro disponível no Servidor.


function diretorio($modo,$caminho) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  if ($modo == "criar") {
   ftp_mkdir($conn_id,$caminho);
  } elseif ($modo == "remover") {
   ftp_rmdir($conn_id,$caminho);
  }
}

Na função acima, através do ftp_rmdir você poderá criar ou remover diretório do Servidor.


function tamanho($alvo) {
  if ($conn_id == "") die("Você deve conectar primeiro");
  $tam = ftp_size($conn_id,$alvo);
  if ($tam == -1) {
   echo "Arquivo não encontrado";
  } else {
   echo $tam;
  }
}

Apesar de ser pouco usada a função tamanho poderá lhe auxiliar descobrindo se existe ou não um ficheiro no Servidor.

Bem… ficamos por aqui com mais uma matéria de PHP. Espero que com as dicas acima possamos lhe ajudar em algo.

Download do código usado neste tutorial: Conexão Via FTP Com PHP [4]

Foi publicado novo artigo onde está matéria é desenvolvida: Conexão Via FTP – Arquivos Dum Diretório [5]

Tweet [3]
Be Sociable, Share!
  • [6]
  • [7]
  • [8]
  • [9]
  • [10]