<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Uploader PRO ~ O uploader inteligente


Script  ==> Uploader PRO
Owner   ==> Anderson Maranh�o Ventura Dad�rio
Email   ==> andersonmvd@hotmail.com
Profile ==> http://www.orkut.com/Profile.aspx?uid=6950651699637847193

 -- _________________________________________________________________--
 --|                          Uploader PRO                           |-
 --|_________________________________________________________________|-
 --> Este script tem por finalidade checar a validade das extens�es <--
 --> de modo avan�ado e ainda realizar upload inteligente para imgs <--

Instru��es:

- Cole seu c�digo HTML na func�o carregaForm() [Cuidado com as ASPAS]
- O nome do submit deve se chamar 'enviar'
- O nome do campo file que carrega o arquivo deve se chamar 'arquivo'
- Altere as configura��es abaixo
- Altere as extens�es v�lidas nos arrays() em qualquer ordem

Curiosidades:

Quando o usu�rio faz upload ...
Automaticamente � enviado 4 vari�veis anexado ao nome do campo file
No nosso caso, o nome do campo � 'arquivo'

$arquivo_name
$arquivo_type
$arquivo_size
$arquivo_mime

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
// Coloque no echo() desta fun��o todo c�digo HTML de sua p�gina
function carregaForm(){
echo "
<title>Uploader PRO - Anderson ~ andersonmvd@hotmail.com</title>
<form action=\"$_SERVER[PHP_SELF]\" method='post' enctype='multipart/form-data'>
<center>
<input type=file name='arquivo' style='border;background: #BDBDBD;color: white;'> <input type=submit name='enviar' value='Upload Pro!' style='border 1;color: white; background: darkred;'>
</form>
";
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 

// ... Sobre o arquivo que ser� checado
$diretorio = "uploads/";  /* USE BARRA NO FINAL "/"  */
$TamanhoMaxi = 500; // Tamanho limite do arquivo que ser� uploadado em KB
$TamanhoMax = 1024*$TamanhoMaxi; // N�o altere
$TamanhoMaxMB = 1024*$TamanhoMax; // N�o altere
$TamanhoMaxMBP = 2048*$TamanhoMax; // N�o altere
$SoImagens = 0; // Se os uploads ser�o apenas para imagem digite '1' se n�o digite '0'
$larguraMax = 100; // V�lido apenas se o arquivo for imagem definido na vari�vel $SoImagens
$alturaMax = 100; // V�lido apenas se o arquivo for imagem definido na vari�vel $SoImagens

// ... Extens�es v�lidas ~ Coloque quantas quiser
$ExtensoesValidaS = array('zip','mp3','htm','wma','html','php','aspx','txt','gif','jpg','jpge','png');
$ExtensoesValidaSparaImagens = array('gif','jpg','jpge','png');

// ... Erros em HTML

$semVariavel = "<center><font face=verdana size=2 color=red>Campo n�o foi preenchido</font></center>";
$semPonto = "<center><font face=verdana size=2 color=red>Arquivo sem extens�o</font></center>";
$semValidade = "A extens�o:";
$semValidade_ = "n�o � permitida";
$erroLargura = "<center><font face=verdana size=2 color=red>Largura da imagem ultrapassou <b>".$larguraMax."</b> pixels</font></center>";
$erroAltura = "<center><font face=verdana size=2 color=red>Altura da imagem ultrapassou <b>".$alturaMax."</b> pixels</font></center>";
$erroTamanho = "<center><font face=verdana size=2 color=red>Tamanho do arquivo ultrapassou <b>".$TamanhoMaxi."</b> KB</font></center>";
$erroDir = "<center><font face=verdana size=2><b><font color=red>Erro interno!</font></b><br><br>A string que cont�m o diret�rio � inv�lida, n�o possui barra:  <b>/</b></font></center>";
$erroCopia = "<center><font face=verdana size=2><b><font color=red>Erro na c�pia do arquivo!</font></b><br><br>Permiss�o do diret�rio <b>".$diretorio."</b> n�o � 777.<br>Ou Permiss�o deste arquivo n�o � 755</font></center>";
$erroCriar = "<center><font face=verdana size=2><b><font color=red>Erro na cria��o do diret�rio!</font></b><br><br>Este arquivo n�o possui permiss�o 755 para criar o diret�rio: <b>".$diretorio."</b></font></center>";
$erroArquivo = "<center><font face=verdana size=2 color=red>Dados inv�lidos, envie um ARQUIVO</center>";

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
@header ("Pragma: no-cache");
@ini_set("file_uploads","On");
@ini_set("upload_max_filesize", "".$TamanhoMaxMB."M");
@ini_set("post_max_size","".$TamanhoMaxMBP."M");
if(substr($diretorio,-1) != "/"){ echo $erroDir;exit; } 
if(isset($_POST['enviar']) and empty($arquivo_name)){  echo $semVariavel;carregaForm();exit; }
elseif(isset($_POST['enviar']) and !empty($arquivo) and is_file($arquivo)){
$erro = ""; // N�o alterar
if(empty($arquivo_name)){  echo $semVariavel;carregaForm();exit; }
else{
if (strpos($arquivo_name, ".") === false) { echo $semPonto;carregaForm();exit; }
else{ $ext = explode(".",$arquivo_name);$ext = array_reverse($ext);$ext = strtolower($ext[0]);}}
if($SoImagens == 1){ for($i = 0;$i < count($ExtensoesValidaSparaImagens); $i++){ $ok = 0;if($ext == $ExtensoesValidaSparaImagens[$i]) { $ok = 1; break; } }}
else{ for($i = 0;$i < count($ExtensoesValidaS); $i++){ $ok = 0;if($ext == $ExtensoesValidaS[$i]) { $ok = 1; break; } }}
if($ok == 0) { $erro.= "".$semValidade." <b>".$ext."</b> ".$semValidade_.""; }
else { 
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

// ... Zona Segura Come�a

for($i = 0;$i < count($ExtensoesValidaSparaImagens); $i++){
$okx = 0;if($ext == $ExtensoesValidaSparaImagens[$i]){
$okx = 1; break; } }
if($okx == 1){
$imgsize = @GetImageSize($arquivo);
$img_w = $imgsize[0];
$img_h = $imgsize[1];
if($img_w > $larguraMax){ echo $erroLargura;carregaForm();exit; }
if($img_h > $alturaMax){ echo $erroAltura;carregaForm();exit; }}

if($arquivo_size > $TamanhoMax){ echo $erroTamanho;carregaForm();exit; }
$caminho = $diretorio.$arquivo_name;
$xKAHggsag = explode('/',$diretorio);$xKAHggsag = $xKAHggsag[0];
if(!file_exists($xKAHggsag)){ @mkdir($xKAHggsag,0777) or die($erroCriar); }
@copy($arquivo,$caminho) or die($erroCopia);
echo "<center><font face=verdana color=green size=2>Sucesso - Extens�o <b>".$ext."</b> permitida - Seu arquivo <b>".$arquivo_name."</b> foi salvo</font></center>";


// ... Termina Zona Segura

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
} // Fim do else

if($erro != ""){ echo "<center><font face=verdana color=red size=2>".$erro."</font></center>"; } }
elseif(isset($_POST['enviar']) and !is_file($arquivo) and !empty($arquivo)){ echo $erroArquivo;carregaForm();exit; }
carregaForm();
/*                        {:  Feito por Andersoni69 :}                          */ ?>