rafa2098 1 Denunciar post Postado Abril 7, 2013 pessoal criei meu sistema de cadastro com Upload de imagem, mais sempre quando vou testar e enviar o cadastro da esse erro "Formato de Imagem nao e Valido, envie com as extensoes: jpg, jpeg, png, gif!" sendo que a imagem que eu coloco ta JPG, alguem pode me ajudar? cadastrar.php <?php if (isset($_POST['enviar']) && $_POST['enviar'] == 'send') { $nome = strip_tags(trim($_POST['nome'])); $email = strip_tags(trim($_POST['email'])); $dia = strip_tags(trim($_POST['dia'])); $mes = strip_tags(trim($_POST['mes'])); $ano = strip_tags(trim($_POST['ano'])); $data = strip_tags(trim($_POST['ano'])).'-'.strip_tags(trim($_POST['mes'])).'-'.strip_tags(trim($_POST['dia'])); if (empty($nome)) { $retorno = '<span class="no">Digite seu Nome</span>'; }if (empty($email)){ $retorno = '<span class="no">Digite seu Email</span>'; }elseif (filter_var($email, FILTER_VALIDADE_EMAIL)){ $retorno = '<span class="no">Digite um Email Valido</span>'; }elseif (empty($dia)){ $retorno ='<span class="no">Informe o Dia em que voce Nasceu!</span>'; }elseif (empty($mes)){ $retorno ='<span class="no">Informe o mes em que voce Nasceu!</span>'; }elseif (empty($ano)){ $retorno ='<span class="no">Informe o ano em que voce Nasceu!</span>'; }if (empty($retorno)) { $_UP['pasta'] = 'uploads/'; $_UP['tamanho'] = 1024 * 1024 *2; $_UP['extensoes'] = array ('jpg', 'jpeg', 'png', 'gif'); $_UP['renomeia'] = true; $_UP['errors'][0] = 'Nao tivemos errors'; $_UP['errors'][1] = 'A Pasta não foi encontrada'; $_UP['errors'][2] = 'Tamanho da Imagem Exedeu o Limite'; $_UP['errors'][3] = 'As Extensoes permitidas para o envio sao: jpg,jpeg,png,gif'; $_UP['errors'][4] = 'Nao foi feito o Upload da sua foto'; if ($_FILES['arquivo']['errors'] != 0) { die("Nao foi possivel enviar sua imagem o erro foi:" . $_UP['errors'][$_FILES['arquivo']['errors']]); exit; } $extensao = strtolower (end(explode('-',$_FILES['arquivos']['name']))); if (array_search($extensao, $_UP['extensoes']) === false) { echo "Formato de Imagem nao e Valido, envie com as extensoes: jpg, jpeg, png, gif!"; } else if ($_UP['tamanho'] < $_FILES['aequivo']['size']) { echo '0 arquivo nao pode ter mais de 2mb'; } else { if ($_UP['renomeia'] == true) { $nome_final = md5(time()).'.jpeg'; }else{ $nome_final = $_FILES['arquivo']['name']; } $tam_name = getimagesize($_FILES['arquivo']['tmp_name']); if ($tam_name[0] >= '201') { echo "a imagem deve ter a largura menor do que a 200px"; } if ($tam_name[1] >= '151') { echo "a imagem deve ter a altura menor do que a 150px"; }else if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) { $cadastro * mysql_query("INSERT INTO usuarios (nome, email, data, foto) VALUES ('$nome', '$email', '$data', '$nome_final')"); if ($cadastro == 1){ echo '<span class="yes"> Seu Cadastro foi realizado com suscesso, obrigado por fazer parte de nosso site!'; }else { echo '<span class="no">Erro ao Cadastrar, Tente Novamente</span>'; } } } } if ($retorno == 0){ echo "$retorno"; }else{ } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Abril 7, 2013 no IE o .jpg vira .Pjpg. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 7, 2013 Dê um print $_FILES['arquivos'][type'] ... e veja o que te retorna. :) Compartilhar este post Link para o post Compartilhar em outros sites
rafa2098 1 Denunciar post Postado Abril 7, 2013 no IE o .jpg vira .Pjpg. bom saber... (: mais to testando no Chorme Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Abril 7, 2013 Esta forma de validar um tipo de arquivo é falha, o correto é vc validar o mime-type. Como Definir Os Mime Types Válidos De Um Tipo De Arquivo Compartilhar este post Link para o post Compartilhar em outros sites
rafa2098 1 Denunciar post Postado Abril 7, 2013 Dê um print $_FILES['arquivos'][type'] ... e veja o que te retorna. :) cara nao intendi muito bem :/ Compartilhar este post Link para o post Compartilhar em outros sites
William Phantom 32 Denunciar post Postado Abril 7, 2013 cara nao intendi muito bem :/ o "$_FILES['arquivos'][type']" vai retornar algo assim "image/jpeg" ai em vez de você colocar "jpg,png..." coloca image/jpeg, image/png... Compartilhar este post Link para o post Compartilhar em outros sites
rafa2098 1 Denunciar post Postado Abril 8, 2013 o "$_FILES['arquivos'][type']" vai retornar algo assim "image/jpeg" ai em vez de você colocar "jpg,png..." coloca image/jpeg, image/png... nao deu certo Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Abril 8, 2013 Usar $_FILES[ 'userfile' ] [ 'type' ] é outra forma incorreta de validar um dado arquivo, basta mascarar um arquivo .exe mudando sua extensão para .jpg Compartilhar este post Link para o post Compartilhar em outros sites
rafa2098 1 Denunciar post Postado Abril 8, 2013 Usar $_FILES[ 'userfile' ] [ 'type' ] é outra forma incorreta de validar um dado arquivo, basta mascarar um arquivo .exe mudando sua extensão para .jpg e pra mim add essa linha no meu codigo? Compartilhar este post Link para o post Compartilhar em outros sites
Ricardo Saraiva 84 Denunciar post Postado Abril 8, 2013 Não, como o Carlos Coelho mesmo disse acima esta é uma forma incoreta pois é bem facil de ser burlada. Você deu uma olhada no link que foi postado na reposta #5. Compartilhar este post Link para o post Compartilhar em outros sites
rafa2098 1 Denunciar post Postado Abril 8, 2013 Não, como o Carlos Coelho mesmo disse acima esta é uma forma incoreta pois é bem facil de ser burlada. Você deu uma olhada no link que foi postado na reposta #5. dei sim cara, so nao intendi muito bem, por que, tipo, por que realmente ta dando erro ao enviar meu cadastro? e pela questao comentada do Carlos? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 8, 2013 Não disse que seria a forma correta, eu apenas especifiquei esta variável para que ele tenha conhecimento do que o navegador/broswer retorna para ele, além disso, tem muito mais tratamento por trás, para um sistema avançado. Não é forma incorreta, mesmo porque esse tipo de variável servidor, não serve para "validação" e sim para saber qual tipo de dados o broswer está retornando, para a partir daí tomar uma direção. Se usada somente como tal, é uma informação para possível validação. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Abril 8, 2013 Não é forma incorreta, mesmo porque esse tipo de variável servidor, não serve para "validação" e sim para saber qual tipo de dados o broswer está retornando, para a partir daí tomar uma direção. Se usada somente como tal, é uma informação para possível validação. Concordo que não serve para verificar um tipo de arquivo, mas discordo que tal variável sirva para saber qual tipo de dados está retornando sendo que não tem credibilidade alguma, por isso é inútil. Veja um exemplo, vou utilizar um arquivo executable.exe outro executable.jpg (os dois arquivos são o executável, mas um deles teve sua extensão alterada para .jpg) <?php if( isset( $_FILES[ 'userfile' ] ) ) { var_dump( $_FILES ); } ?> <form enctype="multipart/form-data" action="#" method="post"> files: <input name="userfile[]" type="file" multiple /> <input type="submit" value="Send File" /> </form> Saída: array 'userfile' => array 'name' => array 0 => string 'executable.exe' (length=14) 1 => string 'executable.jpg' (length=14) 'type' => array 0 => string 'application/octet-stream' (length=24) 1 => string 'image/jpeg' (length=10) 'tmp_name' => array 0 => string 'C:\wamp\tmp\php8720.tmp' (length=23) 1 => string 'C:\wamp\tmp\php8730.tmp' (length=23) 'error' => array 0 => int 0 1 => int 0 'size' => array 0 => int 13824 1 => int 13824 Atenção a este pedaço de código 'type' => array 0 => string 'application/octet-stream' (length=24) 1 => string 'image/jpeg' (length=10) Completamente inútil, de que adianta saber o que o navegador vai retornar se não dá para confiar ou utilizar para nada. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 8, 2013 Certo, concordo... até aí tudo bem, o que não da pra negar é que ela realmente "RETORNA" a "extensão" de arquivo, o que você fez foi "driblar" ela, aí a bichinha não tem culpa de ficar inútil. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Abril 8, 2013 É isso mesmo amigo, nós sempre temos que estar um passo a frente no que diz respeito a segurança. ^_^ Sempre terá um espertinho tentando burlar a segurança da aplicação. :pinch: :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites