Passagem de parâmetro

Olá pessoal,

Utilizo o Scriptcase 8.1.006. Tô fazendo uma aplicação onde tenho uma tela de login e, ao clicar no botão OK, passo valores de uma consulta para dois parâmetros [pUsuario] e [pPerfil]. Até aí tudo bem mas, como faço para que um formulário retorne para a tela de login caso o parâmetro seja nulo?

Abaixo segue o código do botão OK:


$vlLogin = {TxtEmail};
$vlSenha = md5({TxtSenha});
$vlTipo = {rbTipo};

[pUsuario] = 0;
[pPerfil] = 0;

If ($vlTipo == 1)
{
$vlSQL = "SELECT Usuario_ID, Perfil_ID, Usuario_Nome, Usuario_Nascimento, Usuario_Email, Usuario_Senha FROM mdi_a007_usuarios WHERE Usuario_Email = '".$vlLogin."' AND Usuario_Senha = '".$vlSenha."'";
	
/* ============================================================================= */	


sc_lookup(meus_dados, $vlSQL);
if ({meus_dados} === false)
{
echo "Erro de acesso. Mensagem = " . {meus_dados_erro};
}
elseif (empty({meus_dados}))
{
	echo "<b>ATENÇÃO</b><br /><br />O e-mail <b>".$vlLogin."</b> não foi encontrado.<br /><br />";
}
else
	{
		[pUsuario]={meus_dados[0][0]};
		[pPerfil]={meus_dados[0][1]};
		sc_redir(menu.php);
	}	

/* ============================================================================= */


}
else
	{
		echo "<b>ATENÇÃO</b><br /><br />Desculpa, mas ainda não existem clientes.<br /><br />";
	}

onScriptInit do form
if(!isset([pUsuario]) || empty([pUsuario]))
{
sc_redir(login);
}

Olá Rodrigo,

Cara, funcionou direitinho! Mas chamando fora da aplicação Menu. Como ficaria no caso de outras aplicações:

  • Controle
  • Menu
  • Blank

Tentei colocar o mesmo código nos eventos (onApplicationinit, onExecute e onLoad) da minha aplicação de Menu e não rolou. Até mesmo as aplicações normais (Consulta e Formulário) não tiveram efeito quando chamadas a partir da aplicação Menu.

No menu pode colocar no onLoad.
O que pode estar acontecendo é que o menu em específico não solicita aquela tela onde você informa os valores das variáveis e na sessão deve ter valor nessa variável, assim passa direto da validação.
Muda a variável para testar (por uma que não existe) exemplo
if(!isset([xxpUsuario]) || empty([xxpUsuario]))
{
sc_redir(login);
}

Nas demais aplicações é só usar no onScriptInit

Rodrigo,

Se eu colocar um parâmetro que não exista (como você sugeriu) ele executa a função mas, se colocar o [pUsuario] não faz nada. E agora?

É justamente o que falei acima a variável já existe e tem algum valor, assim nã dá erro.
Na prática quando estiver ok funcionará normal.

Rodrigo,

Lá código que coloquei no início deste post comentei as linhas abaixo e deu certo.

[pUsuario] = 0;
[pPerfil] = 0;

Agora posso criar minha tela de login sem precisar fazer pela forma padrão como é criada no scriptcase. Eu até fiz lá pelo menu Módulos > Segurança e funcionava tudo direitinho com o usuário administrador mas, quando criava um novo usuário, atribuindo o seu perfil com suas respectivas permissões o sistema simplesmente dizia que não existia esse usuário ou login/senha estavam errados, coisa do tipo. Pra mim, aparentemente era bem simples fazer por esse meio que o scriptcase oferece mas quando começava a criar os usuários não conseguia entrar com nenhum deles apenas com o administrador.

Bom, até eu descobrir o motivo disso vou utilizando essa forma de trabalho.

Muitíssimo obrigado Rodrigo.