Jump to content
Fórum Script Brasil
  • 0

Script-ajuda: Upload De Imagem C/ 4 Restrições.


nknk
 Share

Question

Script-Ajuda: Upload de Imagem c/ 4 restrições. e Renomeia e Codifica

Oi,

Preciso que alguém me ajude a encontrar os erros desse código que pode servir para muita gente. Eu fiz com base em outros códigos e artigos.

O que ele faz ? Upload da foto, se não tiver a foto ele envia um caminho para a tabela, o caminho é de uma foto escrita sem foto, se tiver foto ele renomeia colocando data, hora, ip e codifica em md5 e verifica o tipo/tamanho/dimensões da foto, inserindo na tabela.

$file = $_FILES['file'];

$data = date("dmY");

$hora = date("His");

$ip=$_SERVER['REMOTE_ADDR'];

$usip = $ip; //Guarda em usip

$erro = $config = array();

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

// Tamanho máximo do arquivo (em bytes)

$config["tamanhomax"] = 10240000000;

$config["tamanhomin"] = 16000;

// Largura máxima (pixels)

$config["largura"] = 640;

// Altura máxima (pixels)

$config["altura"] = 400;

if($file['name'] != ""){ //verificando se o campo foto foi preenchido. se foi, irá fazer o upload

if($file){

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

if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $file["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($file["size"] > $config["tamanhomax"])

{ $erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo"; }

if($file["size"] < $config["tamanhomin"])

{ $erro[] = "Arquivo em tamanho muito pequeno! A imagem deve ser de no minimo " . $config["tamanho"] . " bytes. Envie outro arquivo"; }

// Para verificar as dimensões da imagem

$tamanhos = getimagesize($file["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";

}

}

// Imprime as mensagens de erro

if(sizeof($erro))

{

foreach($erro as $err) { echo " - " . $err . "<BR>"; }

}

// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...

else

{

// Pega extensão do arquivo

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

$imagem_nome = $data."_".$hora."_".$usip."_".$imagem_nome;

// Gera um nome único para a imagem

$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

// Caminho de onde a imagem ficará

$imagem_dir = "imagem/" . $imagem_nome;

// Faz o upload da imagem

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

echo "Sua foto foi enviada com sucesso!";

}

}

else{ //se o campo não foi preenchido, ele definirá o caminho.

$semfoto = "imagem/semimagem.jpg";

mysql_query("INSERT INTO catalogo (imagem) VALUES ('$semfoto')");

}

:D

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Gutto, eu não conseguindo verificar os erros porque instalei um captcha no formulário e quando clico em enviar preenchendo todas as restrições, ele volta para o formulário, não sei se é por causa dessa linha action="<?php echo $_SERVER['enviar.php'];?>" ou essa session_start();

(o meu formulário está dentro de um sistema de login, é necessário declarar duas vezes session_start() para o captcha ?)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...