Ir para conteúdo

POWERED BY:

Arquivado

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

Biel.

Problema com if e else

Recommended Posts

Problema com if e else
Pessoal quando cadastro imagens .png e .jpeg no script abaixo
exibe a mensagem - cadastro realizado com sucesso
quando tento cadastrar imagens .gif ou qualquer imagem cuja extensão não esteja dentro do switch
não exibe a mensagem - essa extensão não é permitido . Gostaria que essa mensagem
aparecesse - essa extensão não é permitido
<?php
$pasta = 'upload_das_imagens'; // pasta para onde vai as imagens
//$type_extensoes = array('image/jpeg' , 'image/png'); //extensões permitidas 

$imagem = $_FILES['imagem']['name'];     // <- O nome original do arquivo que vem do seu pc	
$tmp    = $_FILES['imagem']['tmp_name']; // <- O nome temporário do arquivo, como foi guardado no servidor
$type   = $_FILES['imagem']['type'];     // <- tipo do arquivo que vem do seu pc. Ex: 'image/jpeg' , 'image/png' 


switch($type) { 
    case 'image/png':
        $img = imagecreatefrompng($tmp);
        break;
    case 'image/jpeg':
        $img = imagecreatefromjpeg($tmp);
        break;
    default: die();
}


if($type == true) {
	echo "cadastro realizado com sucesso ";
	}
	
else{ 
     echo "essa extensão não é permitido"; 
    }	

imagejpeg($pasta.'/'.$imagem);

$sql = mysql_query ("INSERT INTO tab_aprendiz (imagem) VALUES ('".$imagem."') ");

?>

<form action="" method="post" name="form1" id="form1" enctype="multipart/form-data" >
 
  <table width="315" border="0" cellpadding="5" cellspacing="5">

  <tr>
    <td width="67" height="34" align="right">imagem</td>
    <td width="218"><input type="file" name="imagem" required  value="" /></td>
  </tr>
    <tr>
    <td height="65" colspan="3" valign="bottom"><input type="submit" name="botaocss" value="Salvar Cadastro" /></td>
    </tr>
  </table>

<input type="hidden" name="MM_insert" value="form1" />
</form>

</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Marcelo, obrigado por postar. Se eu colocar a instrução if e else dentro do default, vai cadastrar todo tipo de arquivo ou seja não importa o que o colega esteja enviando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode colocar a mensagem dentro do default, sem if. Apenas exiba a mensagem e encerre a execução com die(), como já está fazendo.

Outra alternativa é tirar o default e fazer a verificação com o if que já existe.

 

Porém, seu if está errado. Não faz sentido comparar com true. $type vai conter uma string. Logo, sempre entrará no if. Use uma variável booleana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Biel, blz?

 

Cara, da uma repassada na tua lógica. A mensagem não está sendo exibida, pois como o Marcelo disse, você tem um die() ali que mata a execução antes de chegar nas linhas que exibem a mensagem.

 

O if ali também está sem sentido, sempre o resultado vai ser TRUE a não ser que $type esteja vazia, mas indepentende do formato do arquivo, $type sempre vai conter uma string com o formato, portanto $type == TRUE.

 

Outro detalhe, vai passar mesmo qualquer tipo de arquivo na inserção, pois você está fazendo fora da verificação, ou seja, tem um problema na logica ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não duplique sua dúvida. Apaguei o outro tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja as respostas no outro tópico ....

 

e troque isso:

 

 

switch($type) { 
    case 'image/png':
        $img = imagecreatefrompng($tmp);
        break;
    case 'image/jpeg':
        $img = imagecreatefromjpeg($tmp);
        break;
    default: die();
}
Por isso:

 

 

if($type == 'image/png'){
    $img = imagecreatefrompng($tmp);    
}
else if($type == 'image/jpeg'){
    $img = imagecreatefromjpeg($tmp);    
}
else{
    // aqui e quando não esta valido não a necessidade de redirec.
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode colocar a mensagem dentro do default, sem if. Apenas exiba a mensagem e encerre a execução com die(), como já está fazendo.

Outra alternativa é tirar o default e fazer a verificação com o if que já existe.

 

Porém, seu if está errado. Não faz sentido comparar com true. $type vai conter uma string. Logo, sempre entrará no if. Use uma variável booleana.

Beraldo, muito obrigado. Você acertou em cheio de primeira, maravilhaaaa!! Grato! :natallaugh: :D

Obrigado a todos!

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.