Ir para conteúdo
Fórum Script Brasil
  • 0

Upload Seguro E Completo


Guest --puroossosinistro --

Pergunta

Guest --puroossosinistro --

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 arquivo
if($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 realizado
if($_FILES["arquivo"]["error"] == UPLOAD_ERR_NO_FILE)
{
$erros[] = "O upload não pode ser realizado";
}


// Verificando se o upload foi bem sucedido
if($_FILES["arquivo"]["error"] == !UPLOAD_ERR_OK)
{
$erros[] = "O upload não foi bem sucedido";
}


// Verificando se o upload foi realizado parcialmente
if($_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 dado
if(file_exists($nome))
{
$erros[] = "Um arquivo com o mesmo nome já existe";
}


// Verificando erros
if(isset($erros[1]))
{


// Abrindo página de erro
include "admin_newsletter_layout_cadastrar_erro.php";


} else {


// Movendo o arquivo
$movendo = move_uploaded_file($arquivo['tmp_name'], $nome);


// Verificando se o arquivo foi movido
if(!$movendo)
{
$erros[] = "O arquivo não pode ser movido";
}


// Verificando erros
if(isset($erros[1]))
{


// Abrindo página de erro
include "admin_newsletter_layout_cadastrar_erro.php";


} else {


// Abrindo página de acerto
include "admin_newsletter_layout_cadastrar_enviado.php";


}


}


?>[/codebox]

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
Guest --puroossosinistro --

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... já 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ário

if (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 erros

if(isset($erros[1]))

{

// Abrindo página de erro

include "aa_up_00_erro.php";

} else {

// Abrindo página de erro

include "aa_up_00_enviado.php";

}

?>

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --puroossosinistro --

Bom... descobri o porque da treta e vou postar pra ajudar quem precisar resolver um problema parecido:

o html é um text/plain, o que define que ele é html são as tags <html> que o NAVEGADOR reconhece e "renderiza" como html... se o sistema operacional não tiver cadastrado o .htm como text/html nem o servidor (apache) "souber" disso, ele vem como texto puro mesmo que é o que ele é na verdade.... é mais ou menos isso... por isso tive que usar:

if($arq_tipo != "text/html" AND $arq_tipo != "text/plain")

Até!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...