Ir para conteúdo

POWERED BY:

Arquivado

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

rafa2098

Erro ao se Cadastrar?

Recommended Posts

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

no IE o .jpg vira .Pjpg.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

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

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

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

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

É 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

×

Informação importante

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