OmegaX 0 Denunciar post Postado Março 15, 2009 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
Williams Duarte 431 Denunciar post Postado Março 15, 2009 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
~TiuTalk~ 7 Denunciar post Postado Março 16, 2009 Veja um exemplo de upload de imagens mais simples que este que você está usando: http://thiagobelem.net/blog/php/2009/03/13...os-com-php-339/ Já tem validação de extensões e tamanho de arquivos. ;) É só adaptar ele ao seu script. Compartilhar este post Link para o post Compartilhar em outros sites
OmegaX 0 Denunciar post Postado Março 16, 2009 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
lgcovizzi 0 Denunciar post Postado Junho 25, 2009 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