Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in /home/plugmasters/www/sys/admin/includes/classes/class.install.php on line 543
Upload de arquivos com PHP, por Fred Jader

  » Início » Programação » PHP » Upload de arquivos com PHP
 
Avaliação: | Publicado em: 24/02/2008
Upload de arquivos com PHP
Fred Jader Desenvolvedor web desde os 12 anos, Frederico Jader hoje em dia atua como diretor de arte e administrador de portais em geral, tendo como mais novo projeto o site www.gamesnahora.com


Olá pessoal, nesse artigo gostaria de mostrar como fazer um simples sistema de Upload utilizando PHP, mas funcional.


Contruindo a Página com o Formulário de envio de Arquivos

CÓDIGO

Esse é um simples formulário para o envio de um arquivo:

<html>
<head><title>Envio de Arquivos com PHP</title>
<script language="Javascript">
<!-- Usaremos o Javascript para validar o formulário -->
function valida() {
var erro = false;
var msg = "Os seguintes erros ocorreram:";
// Com as variáveis declaradas, podemos verificar os campos do formulário
if(document.form1.arquivo.value == "") {
erro = true; msg += "nVocê deve Informar um Arquivo!"
}
}
</script>
</head>
<body>
<span style='margin-left: 8px;'>
<form name="form1" action="upload.php" method="post" enctype="multipart/form-data">
Arquivo: <input type="file" name="arquivo" size="25"><br/>
<input type="submit" value="Enviar">
</form>
</body>
</html>


Com o formulário para envio de arquivo pronto, vamos partir para o código PHP que manipulará os arquivos:

CÓDIGO

<? //Iniciamos o PHP
/* a variável $arquivo é o arquivo que o usuário enviou no formulário, então:
$arquivo_name = nome do arquivo
$arquivo_size = tamanho do arquivo
*/
$nome = $arquivo_name; //$arquivo_name corresponde ao nome do arquivo
$separa = explode(".", $nome); //Separamos o nome do arquivo para verificar seu tipo
$separa = array_reverse($separa); /*array_reverse, inverte o array, então se o usuário enviar um arquivo com mais de um ponto, ele pegará o ultimo ponto, depois desse ponto será o tipo do arquivo*/
$tipo = $separa[0]; //Pegamos o tipo do arquivo
/* Agora iremos verificar se o arquivo é válido, você pode alterar o tipo de arquivo que deseja receber conforme sua nescessidade */
if($tipo == "exe" || $tipo == "bat" || $tipo == "com" || $tipo == "src") {
/* Caso o arquivo seja um executável (Windows), ele mostrará o seguintes :*/
echo "
<html>
<body>
<script>alert("Tipo de Arquivo Inválido!"); history.back()</script>
</body>
</html>";
} /* Ele mostra um mensagem de erro e encerra a execução, voltando para a página anterior */
/* Agora verificaremos o tamanho do arquivo, você pode descartar isso caso não seja nescessário */
$tamanho = $arquivo_size; //Ele retorna o tamanho em Bytes
if($tamanho > 1000024) { /* Se o arquivo for maior que 1 Mb ele mostra: */
echo "
<html>
<body>
<script>alert("Arquivo muito grande!"); history.back()</script>
</body>
</html>";
exit();
} /* Ele mostra uma mensagem de erro, e volta para a página anterior encerrando a execução */
// Caso esteja tudo certo
if(@move_uploaded_file($arquivo, "$nome")) {
/* A função move_uploaded_file() moverá o arquivo para a pasta (String) informada , caso de certo ele informará: */
echo "
<html>
<body>
<script>alert("O Arquivo foi enviado com Sucesso!"); history.back()</script>
</body>
</html>";
}
else {
echo "
<script>alert("Houve erro$nome")</script>
$nome
";
}
?>

Bom, você pode utilizar um Banco de Dados para manipulação de Usuários, tamanho máximo dos arquivo e etc. Basicamente você utilizará isso!

Espero que gostem, dúvidas é só posta ae!
Em breve teremos outro artigo.
Enquanto isso não deixem de acessar meu site de jogos!
Abraços e até a próxima!

Cara gostei do script soh q ta dando um erro:

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/gsmbrasi/public_html/fdb/rs/upload.php on line 16

E eu enviei um arquivo .exe com 0.99 mb!
Flwz