Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

PHP - Upload De Imagens (completo e bem explicado).


Guihrox' sXe
 Compartilhar

Posts Recomendados

Sistema de upload de imagens em PHP para o seu servidor, primeiramente você precisará de:

 

- Um host que tenha suporte à PHP:

 

É necessário se cadastrar para acessar o conteúdo.

 

- O diretório onde as fotos ficarão hospedadas, deverão estar com chmod 777, ou seja permissão total. Para dar chmod em um diretório, é simples... Tem host que já vem com a opção para mudar as permissões:

 

2551751.chmod.png

 

Na foto acima, o host foi o

É necessário se cadastrar para acessar o conteúdo.
, mas tem host diferente, por exemplo o
É necessário se cadastrar para acessar o conteúdo.
e
É necessário se cadastrar para acessar o conteúdo.
, para dar chmod em um diretório, você deverá fazer o seguinte:

 

1) clique sobre:

 

5515954.chmod2.png

 

2) e depois aparecerá as opções, marque TODAS:

 

3959000.chmod3.png

 

as opções marcadas significam:

 

u = user

r = read

w = write

x = execute

_____

 

g = group

r = read

w = write

x = execute

 

ou seja, a pessoa terá que ter total controle sobre o diretório, permitindo enviar arquivos para ele, porque senão o upload não poderia ser realizado.

 

 

 

Agora vamos ao código. *OBS: só mude os valores onde eu disser, se você não souber mexer, não altere o código porque poderá não funcionar*. (Eu vou postando de parte em parte para explicar, mas no final do tutorial vai ter o código pronto para ser baixado.

 

FOTO.PHP -

 

<?

 

// Prepara a variável caso o formulário tenha sido postado

$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

 

$config = array();

// Tamano máximo da imagem, em bytes

$config["tamanho"] = 10000;

// Largura Máxima, em pixels

$config["largura"] = 350;

// Altura Máxima, em pixels

$config["altura"] = 250;

// Diretório onde a imagem será salva

$config["diretorio"] = "fotos/";

 

 

^ Cor vermelho - Caso você queira que o tamanho da imagem for maior, você deverá mudar os valores onde está destacado a cor vermelha. Ali consta o valor 106883, ou seja, 100KB, caso você queria mudar para 1MB, deverá colocar o valor 100000, e assim por diante...

Cor rosa - O tamanho em píxels da imagem, o padrão é 350x250 píxels, se você quiser que o tamanho da imagem seja maior, você deverá mudar esses 2 valores.

Cor azul - diretório pra onde as imagens vão ser enviadas, exemplo:

É necessário se cadastrar para acessar o conteúdo.
se quiser que seja enviado para outro diretório é só renomear onde está destacado.

 

continuando o código...

 

 

// Gera um nome para a imagem e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..

// Função Recursiva

function nome($extensao)

{

global $config;

 

// Gera um nome único para a imagem

$temp = substr(md5(uniqid(time())), 0, 10);

$imagem_nome = $temp . "." . $extensao;

 

// Verifica se o arquivo já existe, caso positivo, chama essa função novamente

if(file_exists($config["diretorio"] . $imagem_nome))

{

$imagem_nome = nome($extensao);

}

 

return $imagem_nome;

}

 

if($arquivo)

{

$erro = array();

 

// Verifica o mime-type do arquivo para ver se é de imagem.

// Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:

//

// if(!eregi("\.(jpg|jpeg|bmp|gif|png){1}$", $arquivo["name"])) {

// $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; }

//

// Mas, o que ocorre é que alguns usuários mal-intencionados, podem pegar um vírus .exe e simplesmente mudar a extensão

// para alguma das imagens e enviar. Então, não adiantaria em nada verificar a extensão do nome do arquivo.

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";

}

}

 

if(!sizeof($erro))

{

// Pega extensão do arquivo, o indice 1 do array conterá a extensão

preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);

 

// Gera nome único para a imagem

$imagem_nome = nome($ext[1]);

 

// Caminho de onde a imagem ficará

$imagem_dir = $config["diretorio"] . $imagem_nome;

 

// Faz o upload da imagem

move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

}

}

?>

 

 

^ Cor vermelho - extensões permitadas para enviar ao site, ali são só extensões de imagens, mas se você quiser adicionar mais uma extensão de IMAGEM, você pode, mas cuidado para não adicionar extensões "perigosas", como .exe, .php, etc...

Cor rosa - Se você alterou alguma extensão na parte do código onde está em vermelho, você deve adicionar a extensão à essa parte do código também. Exemplo: preg_match("/\.(gif|bmp|png|jpg|jpeg|TIF){1}$/i", $arquivo["name"], $ext); - Usei a extensão TIF como exemplo.

Cor azul - Se você alterou alguma extensão na parte do código onde está em vermelho, você deve adicionar a extensão à essa parte do código também. Exemplo: if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|TIF)$", $arquivo["type"])) - Usei a extensão TIF como exemplo.²

 

continuando o código...

 

 

<html>

<head>

<title>Enviar Foto</title>

<style type="text/css">

BODY, TD {font-family: verdana; font-size: 10pt; color: white}

</style>

</head>

 

<body bgcolor=black link=red vlink=red alink=red>

 

<center><font size=4>Envio de Foto</font><BR>

<?

// Imagem foi enviada com sucesso, mostra mensagem de SUCESSO

if($arquivo && !sizeof($erro))

{

echo "<img src=\"" . $imagem_dir . "\" border=0><BR><BR>Sua foto foi enviada com sucesso!<br>Deseja enviar outra? <a href=\"foto.php\">Clique aqui</a>";

}

 

// Ocorreu algum erro ou ainda o formulário não foi postado

else

{

?>

<form action="<?echo $PHP_SELF?>" method=post ENCTYPE="multipart/form-data">

Envie sua foto em formato gif, jpg, bmp ou png.<BR>

A imagem não deve ter mais que <?echo $config["tamanho"] ?> bytes e deve ter <? echo $config["largura"] . "x" . $config["altura"] ?> pixels.<BR>

<table border=0 cellpadding=2 cellspacing=1 align=center>

<?

if(sizeof($erro))

{

echo "<tr><td colspan=2 bgcolor=red><B><U>Ocorreu(am) o(s) seguinte(s) erro(s):</u><BR>";

foreach($erro as $err)

{

echo " - " . $err . "<BR>";

}

echo "</B></td></tr>";

}

?>

<tr><td align=center>Enviar Foto: <input type=file size=30 name=foto></td></tr>

<tr><td align=center><input type=submit value="Ok!"></td></tr>

</table>

</form>

<? } ?>

</body>

</html>

 

 

 

Não alterar nada no código acima, só se você quiser mudar os estilos da página, mas você precisa ter noções sobre HTML.

 

 

*AMOSTRA, RESULTADO FINAL*:

 

É necessário se cadastrar para acessar o conteúdo.

 

Código pronto para Download:

 

Knoxx Xtrem - File Hosting

 

ou

 

É necessário se cadastrar para acessar o conteúdo.

 

 

======

Créditos

======

Quem criou o Script - Alfred R. Baudisch

Quem criou o Tutorial completo - Guilherme Knoxx (No WC, Guihrox' sXe) :B

 

 

 

[:)]

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.