Advertisement
Guest User

Untitled

a guest
Aug 17th, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. <?
  2. /**
  3. * Upload de Imagens com Segurança
  4. *
  5. * @author Alfred Reinold Baudisch
  6. * @email alfred_baudisch@hotmail.com
  7. * @date Jan 09, 2004
  8. * @changes Jan 14, 2004 - v2.0
  9. */
  10. // Prepara a variável caso o formulário tenha sido postado
  11. $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
  12.  
  13. $config = array();
  14. // Tamano máximo da imagem, em bytes
  15. $config["tamanho"] = 10485760;
  16. // Largura Máxima, em pixels
  17. $config["largura"] = 200;
  18. // Altura Máxima, em pixels
  19. $config["altura"] = 200;
  20. // Diretório onde a imagem será salva
  21. $config["diretorio"] = "../uploads/avatares/";
  22.  
  23. // Gera um nome para a imagem e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..
  24. // Função Recursiva
  25. function nome($extensao)
  26. {
  27. global $config;
  28.  
  29. // Gera um nome único para a imagem
  30. $temp = substr(md5(uniqid(time())), 0, 10);
  31. $imagem_nome = $temp . "." . $extensao;
  32.  
  33. // Verifica se o arquivo já existe, caso positivo, chama essa função novamente
  34. if(file_exists($config["diretorio"] . $imagem_nome))
  35. {
  36. $imagem_nome = nome($extensao);
  37. }
  38.  
  39. return $imagem_nome;
  40. }
  41.  
  42. if($arquivo)
  43. {
  44. $erro = array();
  45.  
  46. // Verifica o mime-type do arquivo para ver se é de imagem.
  47. // Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
  48. //
  49. // if(!eregi("\.(jpg|jpeg|bmp|gif|png){1}$", $arquivo["name"])) {
  50. // $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; }
  51. //
  52. // Mas, o que ocorre é que alguns usuários mal-intencionados, podem pegar um vírus .exe e simplesmente mudar a extensão
  53. // para alguma das imagens e enviar. Então, não adiantaria em nada verificar a extensão do nome do arquivo.
  54. if(!preg_match("/^image\/(png)$/", $arquivo["type"])){
  55. $erro[] = "Seu avatar está em um formato inválido, aceitamos apenas imagens .PNG."."";
  56. }
  57. else
  58. {
  59. // Verifica tamanho do arquivo
  60. if($arquivo["size"] > $config["tamanho"])
  61. {
  62. $erro[] = "Seu avatar só pode ter até 10 megabytes";
  63. }
  64.  
  65. // Para verificar as dimensões da imagem
  66. $tamanhos = getimagesize($arquivo["tmp_name"]);
  67.  
  68. // Verifica largura
  69. if($tamanhos[0] < $config["largura"] && $tamanhos[1] < $config["altura"])
  70. {
  71. $erro[] = "Seu avatar deve ter " . $config["altura"] . " pixels de largura e " . $config["largura"] . " pixel de altura".".";
  72. }
  73.  
  74. if($tamanhos[0] > 500 && $tamanhos[1] > 500)
  75. {
  76. $erro[] = "Seu avatar deve ter até 500 pixels de largura e 500 pixel de altura".".";
  77. }
  78. }
  79.  
  80. if(!sizeof($erro))
  81. {
  82. // Pega extensão do arquivo, o indice 1 do array conterá a extensão
  83. preg_match("/\.(png){1}$/i", $arquivo["name"], $ext);
  84.  
  85. // Gera nome único para a imagem
  86. $imagem_nome = nome($ext[1]);
  87.  
  88. // Caminho de onde a imagem ficará
  89. $imagem_dir = $config["diretorio"] . $imagem_nome;
  90.  
  91. // Faz o upload da imagem
  92. move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
  93. }
  94. }
  95. ?>
  96. <?
  97. // Imagem foi enviada com sucesso, mostra mensagem de SUCESSO
  98. if($arquivo && !sizeof($erro)){
  99. $update_avatar = "UPDATE w_usuarios SET avatar = 'uploads/avatares/$imagem_nome' WHERE id = '$id_logado'";
  100. $resultado_update_icone = mysqli_query($conn, "$update_avatar");
  101.  
  102. echo "<div class='alert alert-success'>Avatar atualizado com sucesso!</div>";
  103. }
  104. ?>
  105. <form action="" method=post ENCTYPE="multipart/form-data">
  106. <?
  107. if(sizeof($erro))
  108. {
  109. echo "<div class='alert alert-warning'><strong>Porque meu avatar não foi enviado?</strong><br><br>";
  110. foreach($erro as $err)
  111. {
  112. echo " - " . $err . "<br>";
  113. }
  114. echo "</div>";
  115. }
  116. ?>
  117. <div class="randombox">
  118. <div class="containerf">
  119. <img src="<?php $url ?>/<?php echo $user_foto;?>" style="width:90px;float: left;margin-right: 20px;border-radius: 10%;">
  120. <p><span>Formatos aceitos</span> <strong>.PNG</strong></p>
  121. <input type="file" name="foto">
  122. </div>
  123. </div>
  124. <strong>&nbsp;&nbsp;Dimenções:</strong> Mínima: <strong>200x200</strong> Máxima: <strong>500x500</strong>!
  125. <br>
  126. <br>
  127. <center><input type="hidden" name="enviar_avatar" value="envia"><input type="submit" class="btn btn-default" value="Atualizar avatar"></center>
  128. </form>
  129. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement