Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

OmegaX

Upload de imagem

Recommended Posts

Olá a todos!

 

Criei um sistema de login com níveis, cadastro e tudo mais em php/mysql. Na página painel de controles de cada nível de usuário tem um link pra ele editar os dados do cadastro, por exemplo avatar, perfil, email, senha. Estilo fórum.

 

Na hora de alterar o perfil o script em php conecta ao banco de dados pega as informações e preenche os campos, para o usuário saber o que ele colocou quando se cadastrou, assim ele só muda e da um update no registro quando reenvia, até aí tudo bem.

 

No link pra mudar o avatar acontece o mesmo processo, a imagem que ele colocou no cadastro aparece no topo da página e em baixo tem um campo de envio pra substituir por outra. O problema é que na hora de enviar uma imagem com extensão (.JPG, .PNG, .BMP) "em letra maiúscula" ela não é exibida.

 

Obs: Quando a imagem é enviada ela vai pra uma pasta e só vai o caminho e o nome(criptografado) pro banco de dados. O nome da imagem com extensão .jpg aparece assim na pasta: 0942b34afa0e069e225e0ec4f4985c9bArray. O nome com extensão .JPG aparece diferente: imagem.JPG5bfb084f306f560058f13e41cf05111eArray.

 

Existe algum meio de validar a imagem diferenciando extensão com letra maiúscula de extensão com letra minúscula neste código? Ou sei lá, mudar tudo pra minúscula antes de enviar?

 

<?php
include ("restringir.php");
include ("config.php");

//Recebe os dados preenchidos no formulário
$erros = "";
$avatar =	$_FILES['avatar'];

//Obtém algumas informações da imagem
$avatar_temp =	$_FILES['avatar']['tmp_name']; 	
$avatar_name =	$_FILES['avatar']['name'];		
$avatar_size =	$_FILES['avatar']['size'];		
$avatar_type =	$_FILES['avatar']['type'];

$caminho = "imagem/".$_FILES['avatar']['name'];

//Validar nome
function ext($str) { 
$ext = substr($str,-4); 
if(substr($ext,0,1) != '.') $ext = '.'.$ext; 
return $ext; 
} 

// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 307200;

// Largura máxima (pixels)
$config["largura"] = 109;

// Altura máxima (pixels)
$config["altura"]  = 116;

//Validar imagem
if($avatar)
{  


if(!eregi("\.(jpg|jpeg|bmp|png){1}$", $avatar["name"])){
$erros .= "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, 
		   bmp ou png. Envie outro arquivo<br>";
} 
	if(!eregi("^image\/(pjpeg|jpeg|png|bmp)$", $avatar["type"]))
	{
		$erros .= "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp ou png. Envie outro arquivo";
	} 
else{
if($avatar["size"] > $config["tamanho"]){
$erros .= "Arquivo em tamanho muito grande! 
		   A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. 
		   Envie outro arquivo<br>";
}

$tamanhos = getimagesize($avatar["tmp_name"]);

if($tamanhos[0] > $config["largura"]){
$erros .= "Largura da imagem não deve 
		   ultrapassar " . $config["largura"] . " pixels<br>";
}

if($tamanhos[1] > $config["altura"]){
$erros .= "Altura da imagem não deve 
		   ultrapassar " . $config["altura"] . " pixels<br>";
	}
  }   
}

//Chama a função ext para os seguintes formatos
$avatar_nome = $avatar["name"]; 
$ext = ext($avatar_nome); 
if ($ext == '.jpg' || $ext == '.pjpeg' 
|| $ext == '.png' || $ext == '.jpeg' 
|| $ext == '.bmp'){ 
$caminho = "imagem/"; 
}

if ($erros == "") {
//Caso não haja, pega a extensão do arquivo
preg_match("/\.(bmp|png|jpg|jpeg){1}$/i", $avatar["name"], $ext);
//Criptografa um nome único para imagem
$imagem_nome = md5(uniqid(time())); 
$arquivo_nome = $caminho . $imagem_nome . $ext; 
//Move a imagem para pasta indicada em $caminho
move_uploaded_file($avatar["tmp_name"], $arquivo_nome);
//Envia os dados do formulário para a tabela no Banco de dados
$atualiza = mysql_query ("UPDATE `$tabela` SET avatar = '$avatar_temp' , avatar_nome = '$arquivo_nome' WHERE email = '$email' and senha = '$senha'", $db) or die ("NÃO FOI POSSÍVEL REALIZAR A CONSULTA");
if ($atualiza == 1){


if ($nivel == 1) {
echo "<div align=center><font color=#000000 size=2 face=Verdana, Arial, Helvetica, sans-serif><br><br>Dados alterados com sucesso!</font></div>";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=res_membro.php'>";
}

if ($nivel == 2) {
echo "<div align=center><font color=#000000 size=2 face=Verdana, Arial, Helvetica, sans-serif><br><br>Dados alterados com sucesso!</font></div>";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=res_mod.php'>";
}

if ($nivel == 3) {
echo "<div align=center><font color=#000000 size=2 face=Verdana, Arial, Helvetica, sans-serif><br><br>Dados alterados com sucesso!</font></div>";
echo "<meta HTTP-EQUIV='Refresh' CONTENT='3;URL=res_adm.php'>";
}
//Caso contrário
}
}
else {
echo "<div align=center><font color=#FFFFFF size=2 face=Verdana, Arial, Helvetica, sans-serif>Ocorreu os seguintes erros ao tentar realizar a alteração:<br><br>$erros<br><br><a href='java script: history.back();'>Tentar novamente</a></font></div>"; 
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm postou hj, final de semana e não tem paciência. vou ver aqui o problema e te digo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixei essa parte assim ~TiuTalk~:

 

// Extensão da imagem
$config["extensao"]  = array('jpg', 'png', 'gif');

//Validar imagem
if($avatar)
{  
$extensao = strtolower(end(explode('.', $_FILES['avatar']['name'])));
if(array_search($extensao, $config["extensao"]) === false){
$erros .= "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, 
		   bmp ou png. Envie outro arquivo<br>";
} 
	if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $avatar["type"]))
	{
		$erros .= "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp ou png. Envie outro arquivo";
	} 
else{
if($avatar["size"] > $config["tamanho"]){
$erros .= "Arquivo em tamanho muito grande! 
		   A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. 
		   Envie outro arquivo<br>";
}

$tamanhos = getimagesize($avatar["tmp_name"]);

if($tamanhos[0] > $config["largura"]){
$erros .= "Largura da imagem não deve 
		   ultrapassar " . $config["largura"] . " pixels<br>";
}

if($tamanhos[1] > $config["altura"]){
$erros .= "Altura da imagem não deve 
		   ultrapassar " . $config["altura"] . " pixels<br>";
	}
  }   
}

//Chama a função ext para os seguintes formatos
$avatar_nome = $avatar["name"]; 
$ext = ext($avatar_nome); 
if ($ext == '.jpg' || $ext == '.pjpeg' 
|| $ext == '.png' || $ext == '.jpeg' 
|| $ext == '.bmp'){ 
$caminho = "imagem/"; 
}

if ($erros == "") {
//Caso não haja, pega a extensão do arquivo
preg_match("/\.(bmp|png|jpg|jpeg){1}$/i", $avatar["name"], $ext);
//Criptografa um nome único para imagem
$imagem_nome = md5(uniqid(time())); 
$arquivo_nome = $caminho . $imagem_nome . $ext; 

//Move a imagem para pasta indicada em $caminho
move_uploaded_file($avatar["tmp_name"], $arquivo_nome);
//Envia os dados do formulário para a tabela no Banco de dados
$atualiza = mysql_query ("UPDATE `$tabela` SET avatar = '$avatar_temp' , avatar_nome = '$arquivo_nome' WHERE email = '$email' and senha = '$senha'", $db) or die ("NÃO FOI POSSÍVEL REALIZAR A CONSULTA");

Mas ainda não deu certo, parece que a função strtolower não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixei essa parte assim ~TiuTalk~:

 

// Extensão da imagem
$config["extensao"]  = array('jpg', 'png', 'gif');

//Validar imagem
if($avatar)
{  
$extensao = strtolower(end(explode('.', $_FILES['avatar']['name'])));
if(array_search($extensao, $config["extensao"]) === false){
$erros .= "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, 
		   bmp ou png. Envie outro arquivo<br>";
} 
	if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $avatar["type"]))
	{
		$erros .= "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp ou png. Envie outro arquivo";
	} 
else{
if($avatar["size"] > $config["tamanho"]){
$erros .= "Arquivo em tamanho muito grande! 
		   A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. 
		   Envie outro arquivo<br>";
}

$tamanhos = getimagesize($avatar["tmp_name"]);

if($tamanhos[0] > $config["largura"]){
$erros .= "Largura da imagem não deve 
		   ultrapassar " . $config["largura"] . " pixels<br>";
}

if($tamanhos[1] > $config["altura"]){
$erros .= "Altura da imagem não deve 
		   ultrapassar " . $config["altura"] . " pixels<br>";
	}
  }   
}

//Chama a função ext para os seguintes formatos
$avatar_nome = $avatar["name"]; 
$ext = ext($avatar_nome); 
if ($ext == '.jpg' || $ext == '.pjpeg' 
|| $ext == '.png' || $ext == '.jpeg' 
|| $ext == '.bmp'){ 
$caminho = "imagem/"; 
}

if ($erros == "") {
//Caso não haja, pega a extensão do arquivo
preg_match("/\.(bmp|png|jpg|jpeg){1}$/i", $avatar["name"], $ext);
//Criptografa um nome único para imagem
$imagem_nome = md5(uniqid(time())); 
$arquivo_nome = $caminho . $imagem_nome . $ext; 

//Move a imagem para pasta indicada em $caminho
move_uploaded_file($avatar["tmp_name"], $arquivo_nome);
//Envia os dados do formulário para a tabela no Banco de dados
$atualiza = mysql_query ("UPDATE `$tabela` SET avatar = '$avatar_temp' , avatar_nome = '$arquivo_nome' WHERE email = '$email' and senha = '$senha'", $db) or die ("NÃO FOI POSSÍVEL REALIZAR A CONSULTA");

Mas ainda não deu certo, parece que a função strtolower não funciona.

 

Cara, estou querendo colocar um sistema muito parecido com esse que você descreve, porém não estou achando um sistema para colocar a foto.

 

você poderia colocar seu sistema, ou o sistema de imagens que você usou?

 

obrigado;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.