Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 154
Sexo: Masculino

Mover arquivo somente se for JPG

28-04-2013 21:10

Não consigo enviar arquivo (imagem) para a pasta e não alerta sobre a extensão errada...
estou tentando há dias e cheguei a este script:

if (move_uploaded_file($_FILES['userfile_name']['tmp_name'], $_UP['pasta'] .$fotoGrava)) 

Será que o move_uploaded_file não serve para todos os provedores?
E quando pego um arquivo com outra extensão, que não seja JPG, o Alert não ativa.

Vejam o código completo:

<?php  session_start(); include "config.php"; if($_GET['acao']=="insert") {     $_UP['pasta'] = "../fotos/";     $fotoGrava=$_SESSION['usuario']."_foto.jpg";      if(!($_POST['userfile_name'] == '')) { echo "<script language='javascript'>alert('Você não selecionou nenhuma foto!');history.go(-1);</script>"; exit; } if ((!".JPG")) { if(!preg_match(".JPG",$userfile_name))     { echo "<script language='javascript'>alert('Somente arquivos com a extensão JPG são permitidos!');history.go(-1);</script>"; exit; } if($userfile_size > 100000) // Valor em bytes (100kb) { echo "<script language='javascript'>alert('Sua foto excedeu o tamanho máximo permitido de 100Kb!');history.go(-1);</script>"; exit; }  if(!$_FILES) { echo "<script language='javascript'>alert('Erro ao tentar baixar foto!\\nTente novamente.');history.go(-1);</script>"; exit; } } else { if (move_uploaded_file($_FILES['userfile_name']['tmp_name'], $_UP['pasta'] .$fotoGrava)) { echo "<script language='javascript'>alert('Erro ao tentar inserir sua foto!\\nTente novamente.');history.go(-1);</script>"; exit; }          mysql_query("UPDATE usuarios SET photo='$fotoGrava' WHERE usuario_id ='{$usuario_id}'")      or die("<br><br><br><br><br><div align=\"center\"><font face=\"Verdana\" color=\"#000000\" style=\"font-size: 11pt\">     Erro no servidor! Tente novamente.<br><br><a href=\"javascript:history.back(1)\"><font color=\"#0077C6\" style=\"font-size: 9pt\"><u>Voltar</u></a>     <font color=\"#999999\" style=\"font-size: 8pt\"><br><br><br><br>Nome do site © 2013</font>");              header("Location: ../index2.php?area=configs");          function AtualizaSession($photo) {      $_SESSION['photo'] = $photo;       }     AtualizaSession($fotoGrava);          }     } ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mover arquivo somente se for JPG

28-04-2013 21:24

Isso que você fez no seu código eu nunca vi

if ((!".JPG")) { 

Para validação da imagem, o melhor é esse objeto

$_FILES["name_do_input"]["type"]

Esse verifica diretamente da imagem, e não do nome do arquivo.

O type de figuras jpg, é image/jpeg

Sendo assim, basta colocar um if verificando esses dados

if($_FILES["name_do_input"]["type"] != "image/jpeg") { echo "[color=#FF0000]ERRO NO FORMATO[/color]"; exit; } 

Montei um exemplo bem simples para você se basear

<?php if(isset($_POST['submit'])) { // VARIÁVEIS PARA ERRO E CONTAGEM $erros = ""; $conta = 0; // VERIFICANDO IMAGEM VAZIA if ($_FILES["imagem"]["error"] > 0) { $erros.= "Selecione uma imagem<br />"; $conta++; } // VERIFICANDO O TIPO DA IMAGEM if($_FILES["imagem"]["type"] != "image/jpeg" && $_FILES["imagem"]["error"]==0) { $erros.= "Somente aceito imagens no formato .jpg<br />"; $conta++; } // VERIFICANDO O TAMANHO DA IMAGEM if($_FILES["imagem"]["size"] > 100000) { $erros.= "A foto não pode ter mais que 100 Kb<br />"; $conta++; } // VERIFICANDO SE TEVE ERRO if($conta > 0) { echo $erros; } else { move_uploaded_file($_FILES["imagem"]["tmp_name"], "arquivos/" . $_FILES["imagem"]["name"]); echo "foto enviada"; } } ?>


<form name="" method="post" action="teste.php" enctype="multipart/form-data"> <input type="file" name="imagem"> <input type="submit" name="submit"> </form>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 154
Sexo: Masculino

Mover arquivo somente se for JPG

29-04-2013 19:00

Olá web, obrigado pela força!

Para qq arquivo que eu tento inserir, sempre dá o mesmo alerta:
"Somente aceito imagens no formato .jpg"
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Mover arquivo somente se for JPG

30-04-2013 16:54

Eu testei aqui e não deu esse problema. Faz o seguinte, depois do isset POST, coloca isso

echo "<script> alert('".$_FILES["imagem"]["type"]."'); </script>"; 

Faz um teste com um jpg e um arquivo de outro formato, e vê o que é exibido.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 154
Sexo: Masculino

Mover arquivo somente se for JPG

30-04-2013 20:26

Na verdade, eu adaptei o seu código ao meu e agora tá tudo funcionando perfeitamente, menos ao verificar a extensão do arquivo, se retiro está parte, passa limpinho... VEJA:

<?php  session_start(); include "config.php"; if($_GET['acao']=="insert") {     $_UP['pasta'] = "../fotos/";     $fotoGrava=$_SESSION['usuario']."_foto.jpg";      if ($_FILES["userfile"]["error"] > 0) { echo "<script language='javascript'>alert('Você não selecionou nenhuma foto!');history.go(-1);</script>"; exit; } if($_FILES["userfile"]["type"] != 'image/jpeg' && $_FILES["userfile"]["error"] == 0) { echo "<script language='javascript'>alert('Somente arquivos com a extensão JPG são permitidos!');history.go(-1);</script>"; exit; } if($_FILES["userfile"]["size"] > 100000) { echo "<script language='javascript'>alert('Sua foto excedeu o tamanho máximo permitido de 100Kb!');history.go(-1);</script>"; exit; }     if (move_uploaded_file($_FILES["userfile"]["tmp_name"], $_UP['pasta'] .$fotoGrava)) {          mysql_query("UPDATE usuarios SET photo='$fotoGrava' WHERE usuario_id ='{$usuario_id}'")      or die("<br><br><br><br><br><div align=\"center\"><font face=\"Verdana\" color=\"#000000\" style=\"font-size: 11pt\">     Erro no servidor! Tente novamente.<br><br><a href=\"javascript:history.back(1)\"><font color=\"#0077C6\" style=\"font-size: 9pt\"><u>Voltar</u></a>     <font color=\"#999999\" style=\"font-size: 8pt\"><br><br><br><br>Nome do site © 2013</font>");              header("Location: ../index2.php?area=configs");          function AtualizaSession($photo) {      $_SESSION['photo'] = $photo;       }     AtualizaSession($fotoGrava);     }     } ?>

0
 
Mais de 100 postagens
Mais de 100 postagens
Mensagens: 411
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Mover arquivo somente se for JPG

30-04-2013 22:58

Este é um exemplo que eu uso, adapta ao seu ....
<?php // Pasta onde o arquivo vai ser salvo $pasta = 'file/'; // extensão da imagem $ext = 'jpg'; // se a imagem tem nome diferente $renomeia = false; // verifico a extensão $ext = strtolower(end(explode('.', $_FILES['arquivo']['name']))); if ($ext != 'jpg') { echo "Por favor, envie arquivos com as seguintes extensões: jpg"; } else { // Primeiro verifica se deve trocar o nome da imagem , caso ela seja igual a outra ja cadastrada if ($renomeia = true) { // Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg $n_final = time().'.jpg'; } else { $n_final = $_FILES['arquivo']['name']; } //faz o upload if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $pasta . $n_final)) { // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo echo "Upload efetuado com sucesso!"; echo '<br /><a href="' . $pasta . $n_final . '">Clique aqui para acessar o arquivo</a>'; } else { // Não foi possível fazer o upload, provavelmente a pasta está incorreta echo "Não foi possível enviar o arquivo, tente novamente"; } } ?>

0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 154
Sexo: Masculino

Mover arquivo somente se for JPG

01-05-2013 03:50

Muito obrigado a web e gersonab, vcs me ajudaram pra caramba...
acabaram com meses de "sufoco", graças a Deus e a vcs dois eu consegui resolver o problema do envio do arquivo!
SESSION é muito seguro, mas "quebra a cabeça da gente"!
Está tudo mudado desde a nova era HTML5 e agora que todos os provedores se adaptaram, eu tive que me adaptar também.

Vou deixar o código assim:
<?php  session_start(); include "config.php"; if($_GET['acao']=="insert") {     $_UP['pasta'] = "../fotos/";     $fotoGrava=$_SESSION['usuario']."_foto.jpg";     $ext = 'jpg';      if ($_FILES["userfile"]["error"] > 0) { echo "<script language='javascript'>alert('Você não selecionou nenhuma foto!');history.go(-1);</script>"; exit; } $ext = strtolower(end(explode('.', $_FILES['userfile']['name']))); if ($ext != 'jpg') { echo "<script language='javascript'>alert('Somente arquivos com a extensão JPG são permitidos!');history.go(-1);</script>"; exit; }  if($_FILES["userfile"]["size"] > 100000) { echo "<script language='javascript'>alert('Sua foto excedeu o tamanho máximo permitido de 100Kb!');history.go(-1);</script>"; exit; }     if (move_uploaded_file($_FILES["userfile"]["tmp_name"], $_UP['pasta'] .$fotoGrava)) {          mysql_query("UPDATE usuarios SET photo='$fotoGrava' WHERE usuario_id ='{$usuario_id}'")      or die("<br><br><br><br><br><div align=\"center\"><font face=\"Verdana\" color=\"#000000\" style=\"font-size: 11pt\">     Erro no servidor! Tente novamente.<br><br><a href=\"javascript:history.back(1)\"><font color=\"#0077C6\" style=\"font-size: 9pt\"><u>Voltar</u></a>     <font color=\"#999999\" style=\"font-size: 8pt\"><br><br><br><br>Nome do site © 2013</font>");              header("Location: ../index2.php?area=configs");          function AtualizaSession($photo) {      $_SESSION['photo'] = $photo;       }     AtualizaSession($fotoGrava);     }     } ?>

0

Quem está online

Usuários navegando neste fórum: Bing [Bot]