Ir para conteúdo

Arquivado

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

Carcleo

Estrutura try

Recommended Posts

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

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

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

×

Informação importante

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