Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de uploading


Eu o Mister HTML !!!

Pergunta

Eu estou precisando dum código que faça upload de arquivos (Não estou conseguindo de jeito nenhum). Já fiz download, já consultei Workshops on-line, mas creio que esses códigos são para PHP 4. Meu PHP é 5, e como tenho certeza que certa coisas mudam, e como ainda sou novato em PHP, peço ajuda, por favor:

Se encontrarem algum exemplo de uploading para download na Internet afora, que funciona especialmente como PHP 5, não esqueça de enviar um link, pois tudo que testei que trata a respeito de uploading NÃO funcionou. Sempre o PHP vinha com aquelas mensagens de "Warning", "Noticie", etc e tal.

Serei grato, pois posso precisar disso no futuro (mas não deixe de responder mesmo assim!)

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Esse é um deles. A única coisa que precisei alterar é o "<?" para "<?php" po que não consigo fazer o apache reconhecer o "<?" apareceu esse tal de "_FILES", mas mesmo assim » ERROR

<?php
/**
* 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"] = 106883;
// 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/";

// 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);
    }
}
?>
<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>
<?php
// 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="<?php 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>
<?php
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>
<?php } ?>
<br><font face=arial size=1 color=white>Programado por Alfred R. Baudisch - 14/01/2004. Versão 1.2</font>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui no meu server, logo de cara aparece:

Notice: Undefined variable: erro in C:\Arquivos de programas\EasyPHP 2.0b1\www\fortest\foto.php on line 126

Aí, quando dá submit, aparece:

Forbidden

You don't have permission to access /fortest/<br /><b>Notice</b>: Undefined variable: PHP_SELF in <b>C:/Arquivos de programas/EasyPHP 2.0b1/www/fortest/foto.php</b> on line <b>120</b><br /> on this server.

Por quê esses erros?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...