Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- /**
- * Upload de Imagens com Segurança
- *
- * @author Alfred Reinold Baudisch
- * @email alfred_baudisch@hotmail.com
- * @date Jan 09, 2004
- * @changes Jan 14, 2004 - v2.0
- */
- // 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"] = 10485760;
- // Largura Máxima, em pixels
- $config["largura"] = 200;
- // Altura Máxima, em pixels
- $config["altura"] = 200;
- // Diretório onde a imagem será salva
- $config["diretorio"] = "../uploads/avatares/";
- // 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(!preg_match("/^image\/(png)$/", $arquivo["type"])){
- $erro[] = "Seu avatar está em um formato inválido, aceitamos apenas imagens .PNG."."";
- }
- else
- {
- // Verifica tamanho do arquivo
- if($arquivo["size"] > $config["tamanho"])
- {
- $erro[] = "Seu avatar só pode ter até 10 megabytes";
- }
- // Para verificar as dimensões da imagem
- $tamanhos = getimagesize($arquivo["tmp_name"]);
- // Verifica largura
- if($tamanhos[0] < $config["largura"] && $tamanhos[1] < $config["altura"])
- {
- $erro[] = "Seu avatar deve ter " . $config["altura"] . " pixels de largura e " . $config["largura"] . " pixel de altura".".";
- }
- if($tamanhos[0] > 500 && $tamanhos[1] > 500)
- {
- $erro[] = "Seu avatar deve ter até 500 pixels de largura e 500 pixel de altura".".";
- }
- }
- if(!sizeof($erro))
- {
- // Pega extensão do arquivo, o indice 1 do array conterá a extensão
- preg_match("/\.(png){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);
- }
- }
- ?>
- <?
- // Imagem foi enviada com sucesso, mostra mensagem de SUCESSO
- if($arquivo && !sizeof($erro)){
- $update_avatar = "UPDATE w_usuarios SET avatar = 'uploads/avatares/$imagem_nome' WHERE id = '$id_logado'";
- $resultado_update_icone = mysqli_query($conn, "$update_avatar");
- echo "<div class='alert alert-success'>Avatar atualizado com sucesso!</div>";
- }
- ?>
- <form action="" method=post ENCTYPE="multipart/form-data">
- <?
- if(sizeof($erro))
- {
- echo "<div class='alert alert-warning'><strong>Porque meu avatar não foi enviado?</strong><br><br>";
- foreach($erro as $err)
- {
- echo " - " . $err . "<br>";
- }
- echo "</div>";
- }
- ?>
- <div class="randombox">
- <div class="containerf">
- <img src="<?php $url ?>/<?php echo $user_foto;?>" style="width:90px;float: left;margin-right: 20px;border-radius: 10%;">
- <p><span>Formatos aceitos</span> <strong>.PNG</strong></p>
- <input type="file" name="foto">
- </div>
- </div>
- <strong> Dimenções:</strong> Mínima: <strong>200x200</strong> Máxima: <strong>500x500</strong>!
- <br>
- <br>
- <center><input type="hidden" name="enviar_avatar" value="envia"><input type="submit" class="btn btn-default" value="Atualizar avatar"></center>
- </form>
- </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement