Biel. 9 Denunciar post Postado Março 11, 2015 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 Lipienski 9 Denunciar post Postado Março 11, 2015 você tem uma instrução die() <?php // linha 18 do código que você forneceu no post default: { // seu código aqui } Compartilhar este post Link para o post Compartilhar em outros sites
Biel. 9 Denunciar post Postado Março 11, 2015 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
Beraldo 864 Denunciar post Postado Março 11, 2015 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
pazeto 0 Denunciar post Postado Março 11, 2015 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
William Bruno 1501 Denunciar post Postado Março 11, 2015 Não duplique sua dúvida. Apaguei o outro tópico. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago - Bulfaitelo 6 Denunciar post Postado Março 11, 2015 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
Biel. 9 Denunciar post Postado Março 12, 2015 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