Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

puro osso sinistro

upload seguro e completo

Recommended Posts

Pessoal... fiz esse script de upload (utilizei alguns scripts como referencia) mas não está funcionando corretamente... alguém poderia me dar uma luz?1 - form.php:<form action="script.php" method="POST" enctype="multipart/form-data"><input type="hidden" name="MAX_FILE_SIZE" value="30000">Seu arquivo: <input name="arquivo" type="file"><br><input type="submit" value="Enviar"></form>2 - script.php<?php// Criando uma array para armazenar os erros$erros = array();$erros[0] = "";// Pegando o nome do arquivo$arq_nome = $_FILES["arquivo"]["name"];// Pegando o "temp" do arquivo$arq_temp = $_FILES["arquivo"]["tmp_name"]; // Pegando o tipo do arquivo$arq_tipo = $_FILES["arquivo"]["type"]; // Pegando o tamanho do arquivo$arq_tamanho = $_FILES["arquivo"]["size"]; // Setando o tamanho máximo do arquivo em bytes// 51200 bytes = 50 kbytes$arq_limitemaximo = 51200; // Setando a pasta onde o arquivo será gravado$caminho = "newsletter/layouts/"; // Verificando campo ARQUIVO (se foi enviado pelo formulário e se está vazio)if(isset($_FILES['arquivo'])){if($arquivo==""){$erros[] = "Nenhum arquivo foi enviado";}} else {$erros[] = "Esta página não pode ser acessada diretamente";}// Convertendo Bytes em Kbytes$convertendo = $arq_limitemaximo / 1024;// Verificando tamanho máximo do arquivoif($arq_tamanho > $arq_limitemaximo){$erros[] = "O arquivo enviado por você ultrapassa o limite máximo de $arq_limitemaximo bytes ($convertendo) Kbytes";}// Verificando o tamanho máximo do arquivo "permitido pelo MAX_FILE_SIZE do formulario"if($_FILES["arquivo"]["error"] == UPLOAD_ERR_FORM_SIZE){ $erros[] = "O arquivo enviado por você ultrapassa o limite máximo do formulário";} // Verificando o tamanho máximo do arquivo pelo "limite da configuração upload_max_filesize do php.ini"if($_FILES["arquivo"]["error"] == UPLOAD_ERR_INI_SIZE){ $erros[] = "O tamanho de seu arquivo ultrapassa o limite de tamanho de arquivo do PHP";} // Verificando se o upload não pode ser realizadoif($_FILES["arquivo"]["error"] == UPLOAD_ERR_NO_FILE){ $erros[] = "O upload não pode ser realizado";} // Verificando se o upload foi bem sucedidoif($_FILES["arquivo"]["error"] == !UPLOAD_ERR_OK){ $erros[] = "O upload não foi bem sucedido";} // Verificando se o upload foi realizado parcialmenteif($_FILES["arquivo"]["error"] == UPLOAD_ERR_PARTIAL){ $erros[] = "O upload foi realizado parcialmente";} // Verificando o mime-type do arquivo (html = "text/html")if($arq_tipo !== "text/html"){ $erros[] = "O arquivo enviado não é HTML";} // Substituindo espaços por underlines no nome do arquivo$nome = str_replace(" ", "_", $arquivo["name"]);// Substituindo letras maiúsculas por minúsculas$nome = strtolower($nome);// Caminho completo do arquivo$nome = $caminho . $nome;// Verificando se o nome já existe no diretório dadoif(file_exists($nome)){ $erros[] = "Um arquivo com o mesmo nome já existe";} // Verificando errosif(isset($erros[1])){// Abrindo página de erroinclude "admin_newsletter_layout_cadastrar_erro.php";} else {// Movendo o arquivo$movendo = move_uploaded_file($arquivo['tmp_name'], $nome);// Verificando se o arquivo foi movidoif(!$movendo){ $erros[] = "O arquivo não pode ser movido";} // Verificando errosif(isset($erros[1])){// Abrindo página de erroinclude "admin_newsletter_layout_cadastrar_erro.php";} else {// Abrindo página de acertoinclude "admin_newsletter_layout_cadastrar_enviado.php";}}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha... eu simplifiquei pra fazer os testes de erro e consegui verificar se a variável foi setada... porém dá erro no tipo do arquivo... sempre dá o erro "O arquivo enviado não é HTML" mesmo o arquivo sendo html... ja verifiquei varias vezes e não funcionou.... por favor ajudem!<?php// Criando uma array para armazenar os erros$erros = array();$erros[0] = "";// Pegando o nome do arquivo$arq_nome = $_FILES['arquivo']['name'];// Pegando o tipo do arquivo$arq_tipo = $_FILES['arquivo']['type']; // Verificando se o nome foi pego pelo formulárioif (isset($arq_nome)){if($arq_nome==""){$erros[] = "Nenhum arquivo foi enviado";}} else {$erros[] = "Nenhum arquivo foi enviado pelo formulário";}// Verificando o mime-type do arquivo (html = "text/html")if($arq_tipo !== "text/html"){ $erros[] = "O arquivo enviado não é HTML";} // Verificando errosif(isset($erros[1])){// Abrindo página de erroinclude "aa_up_00_erro.php";} else {// Abrindo página de erroinclude "aa_up_00_enviado.php";}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... descobri o porque da treta e vou postar pra ajudar quem precisar resolver um problema parecido:o html é um text/plain, o q define q ele é html são as tags <html> q o NAVEGADOR reconhece e "renderiza" como html... se o sistema operacional nao tiver cadastrado o .htm como text/html nem o servidor (apache) "souber" disso, ele vem como texto puro mesmo q é o q ele é na verdade.... é mais ou menos isso... por isso tive q usar: if($arq_tipo != "text/html" AND $arq_tipo != "text/plain") Até!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.