Como fazer um login para clintes e admin (***** RESOLVIDO *****)

Funcionou Cleyton, abriu a tela de login, mas coloco o login do admin e senha ou os dados do cliente e não entra nada, fica na tela de login.

Funcionou quando coloquei mais uma } no final, ficando assim:

{
sc_redir(‘menu_cliente’);
}
}

// DIRECIONA PARA APLICACAO MENU
sc_redir(menu_cliente.php, “”, “_self”);

Isso, agora faz como o George disse, usa a sc_redir corretamente:

sc_redir(menu_cliente.php, “”, “_self”);

Nome da sua aplicação menu .php

É pessoal, ficou assim:

[code]$var_login = sc_sql_injection({login});
$var_password = sc_sql_injection(md5({password}));

sc_lookup(ds_user, "select login, senha, tipo from tbl_usuarios where login = $var_login and senha = $var_password ");

if ({ds_user} != false)
{
$sm_global_login = {login};
sc_set_global($sm_global_login);

    sc_lookup(ds_user_app, "select tbl_grupos_x_apps.cod_aplicacao from tbl_grupos_x_apps inner join tbl_usuarios_x_grupos on tbl_grupos_x_apps.cod_grupo = tbl_usuarios_x_grupos.cod_grupo where tbl_usuarios_x_grupos.login = '{login}' ");

if ({ds_user_app} != false)
{
	for($i = 0; $i < count({ds_user_app}); $i++)
	{		    
		sc_apl_status({ds_user_app[$i][0]}, 'on');
	}
}
else
    {

sc_error_message(“Acesso negado !”);
}

if ({ds_user[0][2]} == 1)
{
sc_redir(‘menu_admin.php’, “”, “_self”);
}
else
{
sc_redir(‘menu_clientes.php’, “”, “_self”);

}
}[/code]

Só que aparece o Login, coloco o login e senha do Admin ou do cliente não vai para página nenhuma, a senha fica limpa e só.

Vc está usando o código no evento onValidate?

sim, desde o inicio.

Na sua aplicação de login, em Ligações tem alguma ligação definida ?

Não

Em Ligações se eu escolher aplicação e colocar o menu_admin, quando eu logar com admin ele entra certinho, mas se eu colocar o login do cliente, ele tb entra no menu_admin.

$var_login = sc_sql_injection({login});
$var_password = sc_sql_injection(md5({password}));

sc_lookup(ds_user, "select login, senha, tipo from tbl_usuarios where login = $var_login and senha = $var_password ");

if ({ds_user} != false)
{
$sm_global_login = {login};
sc_set_global($sm_global_login);

    sc_lookup(ds_user_app, "select tbl_grupos_x_apps.cod_aplicacao from tbl_grupos_x_apps inner join tbl_usuarios_x_grupos on tbl_grupos_x_apps.cod_grupo = tbl_usuarios_x_grupos.cod_grupo where tbl_usuarios_x_grupos.login = '{login}' ");

if ({ds_user_app} != false)
{
	for($i = 0; $i < count({ds_user_app}); $i++)
	{		    
		sc_apl_status({ds_user_app[$i][0]}, 'on');
	}
}
else
    {

sc_error_message(“Acesso negado !”);
}

}
if ({ds_user[0][2]} == 1)
{
sc_redir(‘menu_admin.php’, “”, “_self”);
}
else
{
sc_redir(‘menu_clientes.php’, “”, “_self”);
}

Oi George,

Coloquei o que vc informou no onValidate do Login e ele está entrando sim, mas se eu colocar o login e senha do admin ou do cliente ele vai para um só menu, que é o menu_clientes.php.

Antes de entrar ele aparece este erro:


Erro Undefined offset: 0


O certo seria:
Como admin entrar no menu_admin.php e clientes em menu_clientes.php.

Na tabela de usuarios coloquei o campo tipo, 1 para admin e 2 para cliente.

Ele deveria estar indo para as páginas correspondentes? Ou eu ainda teria que fazer mais alguma configuração?

Tenta

if ({ds_user[0][2]} == (1))

Quanto ao erro Erro Undefined offset: 0 só analisando melhor.

Nossa George, está complicado.
A versão q uso é a 5,2,

Enviei para seu e-mail uma rotina de login que funciona em um dos meus projetos, use-a como exemplo…

Tá…

Vamos analisar:

Se o vc tem na tabela 1 para Administrador e 2 para cliente, e na validação o código está mandando sempre para o menu de clientes, que é o else da validação, podemos supor que a comparação do if tem algum problema.

Tenha assim:

if ({ds_user[0][2]} == ‘1’)

Com aspas simples delimitando a constante de comparação.

Oi gente,

Conseguimos resolver!

Vejam como ficou:

[code]// LIMPA DA SESSAO O PERFIL DO ULTIMO USUARIO LOGADO NESTE BROWSER (DIREITOS)
sc_reset_apl_conf();

// SEGURANÇA NA SENHA LOGIN
$var_login = sc_sql_injection({login});
$var_password = sc_sql_injection(md5({password}));

sc_lookup(ds_user, “select login, senha, tipo from tbl_usuarios where (login = $var_login and senha = $var_password)”);

// SEGURANÇA NO ACESSO
if({ds_user} != false){
$sm_global_login = {login};
sc_set_global($sm_global_login);
sc_lookup(ds_user_app, "select tbl_grupos_x_apps.cod_aplicacao from tbl_grupos_x_apps inner join tbl_usuarios_x_grupos on tbl_grupos_x_apps.cod_grupo = tbl_usuarios_x_grupos.cod_grupo where tbl_usuarios_x_grupos.login = ‘{login}’ ");
if({ds_user_app} == false){
sc_error_message(“Erro no acesso a tabela USUÁRIOS!”);
return;
}else{
for($i = 0; $i < count({ds_user_app}); $i++){
sc_apl_status({ds_user_app[$i][0]}, ‘on’);
}
}
}else{
sc_error_message(“Acesso negado, Usuário ou Senha inválido!”);
return;
}

// SETA VARIAVEIS GLOBAIS
[tipo] = {ds_user[0][2]};

// SE EH UM ADMINISTRADOR LOGADO DIRECIONA PARA O MENU
if ([tipo] == 1)
{
sc_redir(‘menu_admin.php’, “”, “_self”); // DIRECIONA PARA O MENU ADMINISTRADOR
}

// DIRECIONA MENU CLIENTE
if ([tipo] == 2)
{
sc_redir(‘menu_clientes.php’, “”, “_self”);
}
[/code]

Agradeço muito a ajuda o Cleyton e do George e a todos do fórum.

Espero que este tópico ajude outras pessoas.

Parabéns!!! Agora bola pra frente.

Sim, enviei um email pra vc sobre uma dúvida, mas não quiz postar aqui para não confundir as coisas deste loguin q está correto ok!

Blz.

Estou respondendo seu e-mail.