[UploadDeImagem] Urgente !

+2
Rafael
DouglasGoner
6 participantes

DouglasGoner DouglasGoner  • 15.10.13 14:18

[UploadDeImagem] Urgente ! Empty [UploadDeImagem] Urgente ! 15.10.13 14:18

Preciso do Código ou ele pronto em HTML e PHP, Obrigado !


Última edição por DouglasGoner em 15.10.13 14:25, editado 1 vez(es)

Rafael Rafael  • 15.10.13 14:24

[UploadDeImagem] Urgente ! Empty Re: [UploadDeImagem] Urgente ! 15.10.13 14:24

Iniciamos criando a página com o formulário de envio da imagem.
Usaremos como nome de arquivo: "foto.html"
<form action="upload.php" method="post" enctype="multipart/form-data">
Envie sua foto para o site! <input type="file" name="foto"><BR>
<input type="submit" value="Enviar Foto!">
</form>
Criamos agora, o arquivo "upload.php", que processa e verifica o upload da foto do usuário:
<?
$erro = $config = array();

// Prepara a variável do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 106883;
// Largura máxima (pixels)
$config["largura"] = 350;
// Altura máxima (pixels)
$config["altura"] = 180;

// Formulário postado... executa as ações
if($arquivo)
{
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
{
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg,
bmp, gif ou png. Envie outro arquivo";
}
else
{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}

// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);

// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem não deve
ultrapassar " . $config["largura"] . " pixels";
}

// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem não deve
ultrapassar " . $config["altura"] . " pixels";
}
}

// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";
}

echo "<a href=\"foto.html\">Fazer Upload de Outra Imagem</a>";
}

// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);

// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

// Caminho de onde a imagem ficará
$imagem_dir = "fotos/" . $imagem_nome;

// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

echo "Sua foto foi enviada com sucesso!";
}
}
?>
1 - Você deve alterar as variáveis de configuração, especificando o tamanho e as dimensões máximas das imagens que você permitirá upload:
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 106883;
// Largura máxima (pixels)
$config["largura"] = 350;
// Altura máxima (pixels)
$config["altura"] = 180;
2 - Ao invés de fazer verificação da extensão do arquivo (se é .gif, .png, etc..), verifica-se o mime-type do arquivo, prevenindo assim de usuários mal-intencionados alterarem extensões de não imagens e fazerem o upload (ex: usuário tem um vírus com extensão .exe, altera a extensão para .jpg e faz o upload):
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
{
$erro[] = "Arquivo em formato inválido!
A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
}
3 - Verifica o tamanho do arquivo, para evitar que usuários mal-intencionados ou inexperientes, "scaneiem" alguma imagem e a salve em qualidade máxima, sendo assim de tamanho para mais de 1MB!
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande!
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes.
Envie outro arquivo";
}
4 - Verifica então, as dimensões do arquivo. Para isso, usa-se a função getimagesize, que retorna um array onde o índice 0 é a largura e o índice 1 é a altura da imagem. Note que no argumento usado em getimagesize é usado o índice "tmp_name" do array com os dados do arquivo enviado:
// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);

// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";
}

// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem não deve
ultrapassar " . $config["altura"] . " pixels";
}
Então, essas são as verificações que todo script seu com upload de arquivos, principalmente de imagens, deveria ter. Evitando assim: uso elevado do espaço do servidor, páginas "estourando" de tamanho devido à imagens com dimensões elevadas, arquivos inválidos, gerando assim imagens quebradas em sua página.


Read more: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]


Créditos:Linha de Código

versionPY versionPY  • 15.10.13 15:37

[UploadDeImagem] Urgente ! Empty Re: [UploadDeImagem] Urgente ! 15.10.13 15:37

Eu irei fazer o sistema de upload de imagem do painel versionpy , se quiser esperar um pouquinho eu te mando :)

The Flash The Flash  • 15.10.13 15:48

[UploadDeImagem] Urgente ! Empty Re: [UploadDeImagem] Urgente ! 15.10.13 15:48

Movido para Pedidos Gráficos.

Whiskey Whiskey  • 03.11.13 22:24

[UploadDeImagem] Urgente ! Empty Re: [UploadDeImagem] Urgente ! 03.11.13 22:24

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

WictorP WictorP  • 12.12.13 2:36

[UploadDeImagem] Urgente ! Empty Re: [UploadDeImagem] Urgente ! 12.12.13 2:36

#Fechado.
O autor abandonou o tópico.
Permissões neste sub-fórum
Não podes responder a tópicos

BH Servers

Recomendamos a BH Servers com proteção DDOS gratuita em Cloud Server de alta performance. Entrega imediata.