Carcleo 4 Denunciar post Postado Maio 14, 2012 Pessoal, estou precisando de uma orientaçao: Tenho a estrutura abaixo: <?php if((isset($_GET["acao"]))and ($_GET["acao"]=="login")) { $user_string ="select id_admin, nome_admin, usuario_admin, bloqueio_admin from admin where usuario_admin = '".$_POST['usuario']."' and senha_admin = '".$_POST['senha']."'" ; try{ $user = $conexao->query($user_string); if($user->num_rows!=0) { list($id_admin, $nome_admin, $usuario_admin, $bloqueio_admin)=$user->fetch_row(); if ($bloqueio_admin == "s") { echo "<script>document.location='index.php?erroadmin=usuário bloqueado'</script>"; } else { $_SESSION['bloqueio_administrador'] = $bloqueio_admin; $_SESSION['nome_administrador'] = $nome_admin; $_SESSION['sessaologinadministrador'] = $id_admin; echo "<script>document.location='inicio.php'</script>"; } } else { echo "<script>document.location='index.php?erroadmin=usuário inválido ou senha não confere'</script>"; } }catch(Exception $e) { echo $e->getMessage(); } } ?> <?php $conexao->close(); ?> Agora, gostaria de usar essa estrutura para um formulario de cadastro de usuarios. Mas, observei que, deste jeito, terei um try dentro de outro. o try da pesquisa se o usuario ja existe para evitar cadastro repetido e, caso não haja, outro try para cadastrar. Será que existe uma forma de criar, de repente, uma classe pra usar? Estou perdido nisso. Compartilhar este post Link para o post Compartilhar em outros sites
Gabriel Heming 766 Denunciar post Postado Maio 14, 2012 Não há necessidade de um try para cada exception. Todas as exceptions serão lançacadas no único catch que existir. O que eu aconselho a fazer, é criar uma exception para exceção que você quer tratar. Por exemplo. class UsuarioInvalidoException extends Exception { public function __construct() { parent::__construct('Usuário inválido'); } } E então, você terá um catch para essa exceção específica. try { } catch( UsuarioInvalidoException $e ) { echo $e->getMessage(); } catch( Exception $e ) { echo $e->getMessage(); } Essa estrutura é válida somente se você for realizar alguma operação diferente caso houver uma exceção. Se não for realizar nada diferente, só mostrar a mensagem, deixe como está no seu código. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Maio 14, 2012 Dei uma mechida. Vê se tem como melhorar fazendo favor: <?php if(!isset($_GET["acao"])) {?> <h1><br />Cadastro de Administradores</h1><h1><br /></h1> <form action="?acao=cadastra" method="post" name="cadatra_admin" id="cadastra_admin"> <label for="cad_nome_admin" id="label_cad_nome_admin">Nome</label> <input type="text" name="cad_nome_admin" id="cad_nome_admin" maxlength="4" tabindex="1"/><br /><br /> <label for="cad_usuario_admin" id="label_cad_usuario_admin">Usuário</label> <input type="text" name="cad_usuario_admin" id="cad_usuario_admin" maxlength="4" tabindex="2"/><br /><br /> <label for="cad_senha_admin" id="label_cad_senha_admin">Senha</label> <input type="text" name="cad_senha_admin" id="cad_senha_admin" maxlength="4" tabindex="3"/><br /><br /> <input type="button" value="Cadastrar Usuário" onclick="valida_cad_admin()" tabindex="4" /> </form> <?php } ?> <?php if(isset($_GET["acao"]) and $_GET["acao"]=="cadastra") { try{ $select_admin_string="select usuario_admin from admin where usuario_admin = '".$_POST['cad_usuario_admin']."'"; $select_admin = $conexao->query($select_admin_string); if($select_admin->num_rows==0) { $cadastro_admin_string=" insert into admin (nome_admin, usuario_admin, senha_admin, bloqueio_admin) values( '".$_POST['cad_nome_admin']."', '".$_POST['cad_usuario_admin']."', '".$_POST['cad_senha_admin']."', 'n' ) "; $cadastro_admin = $conexao->query($cadastro_admin_string); if($cadastro_admin) { echo "<table align=\"center\" width=\"600px\" height=\"300px\"><tr><td align=\"center\" valign=\"middle\">"; echo "Cadastro Efetuado com sucesso"; echo "<br />"; echo "Redirecionando em 10 segundos..."; echo "</td></tr></table>"; header("refresh: 10; url=admin_cad.php"); } else { echo "<table align=\"center\" width=\"600px\" height=\"600px\"><tr><td align=\"center\" valign=\"middle\">"; echo "Erro no cadastro. Tente novament!"; echo "<br />"; echo "Redirecionando em 10 segundos..."; echo "</td></tr></table>"; header("refresh: 10; url=admin_cad.php"); } } else { echo "<table align=\"center\" width=\"600px\" height=\"300px\"><tr><td align=\"center\" valign=\"middle\">"; echo "Este usuário já esta cadastrado, por favor escolha outro"; echo "<br />"; echo "Redirecionando em 10 segundos..."; echo "</td></tr></table>"; header("refresh: 10; url=admin_cad.php"); } }catch(Exception $e) { echo $e->getMessage(); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites