Sistema de Upload em PHP


No exemplo a seguir voc� criar� um formul�rio de upload, que enviara arquivos de seu computador para o servidor. Tudo isso ser� feito com instru��es j� nativas do PHP, sem a necessidade de instalar qualquer componente adicional.

Ser�o utilizados dois arquivos: o upload.htm e o upload.php (contidos neste arquivo .zip). No upload.htm ser� criado o formul�rio de envio. J� no arquivo upload.php estar� o c�digo que enviar� o arquivo do computador do usu�rio para o servidor.

upload.htm

<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Enviar o arquivo: <input type="file" name="arquivo" size="20"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html> 

upload.php

<html>
<body>
<?
if (copy($arquivo,"/arquivos/".$arquivo_name)){
echo("<b>Arquivo enviado com sucesso!</b>");
}else{
echo ("<b>Erro no envio do arquivo!</b>");
}
?>
</body>
</html>

Veja que no form o enctype � definido como multipart/form-data, pr�prio para formul�rio de arquivo.

No c�digo PHP � utilizado o comando copy que copia o arquivo de sua origem, no caso a vari�vel arquivo, para o diret�rio arquivos. A vari�vel $arquivo_name � utilizada para o arquivo criado mantenha o nome original.

Para que o script acima funcione � preciso habilitar a grava��o do diret�rio /arquivos do servidor utilizando o comando chmod 777/arquivos.

Voc� poder� ainda, efetuar m�ltiplos uploads nesse mesmo script. Ser� necess�rio apenas acrescentar mais algumas linhas com o comando input no formul�rio e trocar o nome da vari�vel por outro diferente. No c�digo PHP bastar� repetir o comando e alterar a vari�vel de origem e destino.

Dica:
Para que os arquivos armazenados em seu site n�o sejam exibidos nos navegadores crie um arquivo index.htm em cada diret�rio do seu site. Assim, quando algum usu�rio digitar o endere�o de uma pasta no seu site no navegador, apenas ser� exibido o conte�do da p�gina index.htm e n�o a lista dos arquivos l� existentes. Ou voc� poder� configurar as p�ginas de erro no pr�prio Apache, para que n�o liste os arquivos dos diret�rios.

Seguran�a:
Ao permitir que os usu�rio fa�am o upload de arquivos para o ser servidor, voc� dever� estar atento ao local de destino da c�pia que voc� configurar em seu script. Pois como o arquivo enviado pode conter qualquer informa��o, um script em PHP ou qualquer outro tipo de script pode ser enviado.
 
Como voc� sabe, todos os comandos em PHP s�o executados diretamente no servidor e somente os resultados HTML s�o enviados para o computador do usu�rio. Se o local onde ele foi armazenado no servidor tiver a possibilidade de ser acessado de qualquer computador, esse arquivo poder� ser executado e os resultados poder�o ser os mais variados, desde um acesso a qualquer informa��o confidencial at� a exclus�o de todos os arquivos do servidor

Em nosso exemplo o diret�rio de destino � o /arquivos que pode ser acessado somente a partir do servidor, o que representa uma seguran�a a mais.
  

vlw..abra�os a todos da comunidade!