Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Como criar formulário de Upload seguro?

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Como criar formulário de Upload seguro?

    Com certeza isso é útil para muitos. Em redes sociais, blogs, livros de visitas e vários outros locais um formulário de upload é sempre bom.
    Mas, o que é upload?
    up + load, ou seja, carregamento acima. Diferentemente de download (carregamento abaixo), você não obtém dados de um servidor, mas envia dados a ele. Isso é comum, por exemplo, no Orkut (se é que isso ainda existe), onde se enviam fotos.
    Vamos aprender a criar um formulário de upload seguro?
    Vamos começar com nosso formulário. Em action, colocamos uma variável que retorna o nome do arquivo que está sendo executado naquele momento por aquele cliente.
    Código HTML:
    <form method="post" enctype="multipart/form-data" action=""<?php echo $_SERVER['PHP_SELF'];?>"">
    <input name="imagem" type="file" id="imagem" value="<?php echo basename(__FILE__); ?>">
    <input type="submit" name="Submit" value="Enviar">
    </form>
    Agora, no mesmo arquivo, vamos criar o código PHP responsável pelo envio do arquivo. Vamos primeiro ver se o usuário clicou no botão Submit do formulário.
    Código PHP:
    <?php
    if(isset($_POST['submit'])){
    $arquivo = isset($_FILES["imagem"]) ? $_FILES["imagem"] : FALSE;
    Agora, vamos pegar a extensão do arquivo. Coloque na função preg_match os formatos aceitos, divididos por "|".
    Código PHP:
    preg_match("/\.(gif|bmp|png|jpg|jpeg|exe|txt|html|html|php|txt|doc|docx|ppt|pptx|odf|asp|lnk|dll|js){1}$/i"$arquivo["name"], $ext); 
    Agora, vamos gerar um nome randômico para a imagem, usando uma função que gera uma string randômica e que é incapaz de gerar a mesma string mais de uma vez.
    Código PHP:
    $imagem_nome uniqid(time()) . "." $ext[1]; 
    Configure agora o local para onde vão todos os arquivos upados.
    Código PHP:
    $imagem_dir "arquivos"// coloque aqui apenas o nome do diretório 
    Agora, vamos definir o nome do arquivo, unindo o diretório ao nome gerado randomicamente.
    Código PHP:
    $imagem_dir $imagem_dir "/" $imagem_nome
    E, por fim, fazer o upload.
    Código PHP:
    move_uploaded_file ($arquivo['tmp_name'], $imagem_dir); 
    É muitas vezes necessário receber em outra página o nome do arquivo. Mas, como queremos segurança, vamos fazer com sessions, que são espécies de cookies que agem do lado do servidor.
    Código PHP:
    session_start("upload");
    $_SESSION['arquivo'] = $imagem_dir
    Agora, para conseguir o nome do arquivo em outras páginas, podemos apenas fazer:
    Código PHP:
    session_start("upload");
    echo 
    $_SESSION['arquivo']; 
    No exemplo acima, dei um echo, ou seja, pedi que o interpretador mostrasse o nome na tela, apenas para provar que é possível fazer qualquer coisa com essa string.
    Agora, lembre-se do if que fizemos acima, para verificar se o formulário foi submited? E se não for? Adivinhou? Mostramos o formulário! Para isso, fazemos com o else.
    Código PHP:
    }
    else {
    ?>
    [cole aqui nosso formulário que vimos acima]
    <?php
    }
    E está pronto! Até a próxima!
    Este material pode ser compartilhado, desde que os devidos créditos sejam dados.



    Notify-list · Twitter · Blog

    Nova lei: Invadir computadores protegidos é crime.
    Lógica: Se eu invadi, não é protegido. Logo, não é crime :-)
    Similar Threads

  • Font Size
    #2
    Obrigado por compartilhar 0KAL.

    Abraços.

    WCG 147
    sigpic

    Comment


    • Font Size
      #3
      Olá!

      WOOW! Obrigado mesmo meu amigo, pois meu colega, Coca, está fazendo uma rede social.
      Estávamos precisando disto ^^

      Até mais,
      Script.
      "Compartilhe, agradeça, motive, engrandeça!"
      "Faça o bem, sem ver a quem!"
      "Conhecimento não é crime. Crime é o que vem depois dele, seus atos!"
      "Não deixe mais que seu opressor o domine!"

      Comment

      X
      Working...
      X