[RESOLVIDO] O que há de errado nesse código, por favor

$sql = “SELECT
app_name,
priv_access,
priv_insert,
priv_delete,
priv_update,
priv_export,
priv_print
FROM sec_groups_apps
WHERE group_id IN
(SELECT
group_id
FROM
sec_users_groups
WHERE
login = '”. [usr_login] ."’)";

sc_select(rs, $sql);
if ({rs} !== false)
{
while (!$rs->EOF)
{
if( $rs->fields[1] == ‘Y’)
{
sc_apl_status($rs->fields[0], ‘on’);
}
else
{
sc_apl_status($rs->fields[0], ‘off’);

	}

	sc_apl_conf($rs->fields[0], 'insert', has_priv($rs->fields[2]));
	sc_apl_conf($rs->fields[0], 'delete', has_priv($rs->fields[3]));
	sc_apl_conf($rs->fields[0], 'update', has_priv($rs->fields[4]));
	
	//export
	$export_permission = 'btn_display_'. has_priv($rs->fields[5]);
	sc_apl_conf($rs->fields[0], $export_permission, 'xls');
	sc_apl_conf($rs->fields[0], $export_permission, 'word');
	sc_apl_conf($rs->fields[0], $export_permission, 'pdf');
	sc_apl_conf($rs->fields[0], $export_permission, 'xml');
	sc_apl_conf($rs->fields[0], $export_permission, 'csv');
	sc_apl_conf($rs->fields[0], $export_permission, 'rtf');
	//export
	
	$export_permission = 'btn_display_'. has_priv($rs->fields[6]);
	sc_apl_conf($rs->fields[0], $export_permission, 'print');
   $rs->MoveNext();	
}
$rs->Close();
if(sc_logged({login})):
	sc_log_add('login', {lang_login_ok});
	sc_user_logout('logged_user', 'logout', 'app_Login');

//aqui para baixo foi minha implementação

$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups
WHERE
login = ‘". [usr_login] ."’)";
sc_lookup(rs, $check_sql);

if({description} == ‘Administrador’)
{
sc_redir(‘MenuAdmin’);
}
elseif({description} == ‘Operador’) {
sc_redir(‘MenuUser’);
}


massagem de erro:

Parse error: syntax error, unexpected ‘}’ in C:\Program Files (x86)\NetMake\v7\wwwroot\scriptcase\app\ProjetoCadOcorrencias\app_Login\app_Login_apl.php on line 1772

Verifique exatamente em seu código a linha de erro e poste somente ela.

Nobre colega, por favor me mostre o erro e coloque pra mi como seria o correto, pq já mexi muito nesse código sempre dar algum tipo de erro

Tente apagar essa linha e teste novamente:

if(sc_logged({login})): sc_log_add('login', {lang_login_ok}); sc_user_logout('logged_user', 'logout', 'app_Login');

Fiquei meio confuso nessa linha e acho que a mesma está faltando algo.

quando tirei a linha

" if(sc_logged({login})):
sc_log_add(‘login’, {lang_login_ok});
sc_user_logout(‘logged_user’, ‘logout’, ‘app_Login’); "

deu certo foi para tela de login

quando realizo o login dar um erro.
o erro é :

ERROR Fechar
Undefined variable: description
Undefined variable: description
Fatal error: Call to a member function Close() on a non-object in C:\Program Files (x86)\NetMake\v7\wwwroot\scriptcase\app\ProjetoCadOcorrencias\app_Login\app_Login_apl.php on line 1774

Meu código completo:

$sql = “SELECT
app_name,
priv_access,
priv_insert,
priv_delete,
priv_update,
priv_export,
priv_print
FROM sec_groups_apps
WHERE group_id IN
(SELECT
group_id
FROM
sec_users_groups
WHERE
login = '”. [usr_login] ."’)";

sc_select(rs, $sql);
if ({rs} !== false)
{
while (!$rs->EOF)
{
if( $rs->fields[1] == ‘Y’)
{
sc_apl_status($rs->fields[0], ‘on’);
}
else
{
sc_apl_status($rs->fields[0], ‘off’);

	}

	sc_apl_conf($rs->fields[0], 'insert', has_priv($rs->fields[2]));
	sc_apl_conf($rs->fields[0], 'delete', has_priv($rs->fields[3]));
	sc_apl_conf($rs->fields[0], 'update', has_priv($rs->fields[4]));
	
	//export
	$export_permission = 'btn_display_'. has_priv($rs->fields[5]);
	sc_apl_conf($rs->fields[0], $export_permission, 'xls');
	sc_apl_conf($rs->fields[0], $export_permission, 'word');
	sc_apl_conf($rs->fields[0], $export_permission, 'pdf');
	sc_apl_conf($rs->fields[0], $export_permission, 'xml');
	sc_apl_conf($rs->fields[0], $export_permission, 'csv');
	sc_apl_conf($rs->fields[0], $export_permission, 'rtf');
	//export
	
	$export_permission = 'btn_display_'. has_priv($rs->fields[6]);
	sc_apl_conf($rs->fields[0], $export_permission, 'print');
   $rs->MoveNext();	
}
$rs->Close();


//começa aqui para baixo minha implementação 

$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups
WHERE
login = ‘". [usr_login] ."’)";

sc_lookup(rs, $check_sql);

if({description} == ‘Administrador’)
{
sc_redir(‘MenuAdmin’);

}
elseif({description} == ‘Operador’)
{
sc_redir(‘MenuUser’);
}
else
{
sc_error_message(“Usuário não autorizado!”);
}
$rs->Close();
}


o erro está apontado para o {description}

Mais não entendi por que eu fiz um $check_sql fiz no evento onvalidateSuccess do formulário de login,
no formulário d e login tenho os campos: login e pswd; quero verificar se o login é ;Administrador ou Operador
se for Administrador ele carrega aplicação MenuAdmin.php se não for carrega MenuUser.php

//meu $scheck_sql;

$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups


select description(descrição do grupo de usuário)

Esse pedaço de código está errado, vou te mostrar como ficaria o certo, e você vai no webhelp do scriptcase e verifique mais sobre a função sc_lookup.

Codigo errado:

[code]$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups
WHERE
login = ‘". [usr_login] ."’)";

sc_lookup(rs, $check_sql);

if({description} == ‘Administrador’)
{
sc_redir(‘MenuAdmin’);

}
elseif({description} == ‘Operador’)
{
sc_redir(‘MenuUser’);
}[/code]

Codigo correto:

[code]$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups
WHERE
login = ‘". [usr_login] ."’)";

sc_lookup(rs, $check_sql);

if({rs[0][0]} == ‘Administrador’)
{
sc_redir(‘MenuAdmin’);

}
elseif({rs[0][0]} == ‘Operador’)
{
sc_redir(‘MenuUser’);
}[/code]

Obrigado pelo código ficou sem erros…

executou para tela de login

Quando se coloca o login para entra no sistema , não saí da tela de login
como se não tivesse um sc_redir

ou seja não está ocorrendo o sc_redir para o menu desejado, tentei posicionar o código de outra forma e nada

o código final ficou assim com ajuda do colega Almeida;

//código;

$sql = “SELECT
app_name,
priv_access,
priv_insert,
priv_delete,
priv_update,
priv_export,
priv_print
FROM sec_groups_apps
WHERE group_id IN
(SELECT
group_id
FROM
sec_users_groups
WHERE
login = '”. [usr_login] ."’)";

sc_select(rs, $sql);
if ({rs} !== false)
{
while (!$rs->EOF)
{
if( $rs->fields[1] == ‘Y’)
{
sc_apl_status($rs->fields[0], ‘on’);
}
else
{
sc_apl_status($rs->fields[0], ‘off’);

  }

  sc_apl_conf($rs->fields[0], 'insert', has_priv($rs->fields[2]));
  sc_apl_conf($rs->fields[0], 'delete', has_priv($rs->fields[3]));
  sc_apl_conf($rs->fields[0], 'update', has_priv($rs->fields[4]));
  
  //export
  $export_permission = 'btn_display_'. has_priv($rs->fields[5]);
  sc_apl_conf($rs->fields[0], $export_permission, 'xls');
  sc_apl_conf($rs->fields[0], $export_permission, 'word');
  sc_apl_conf($rs->fields[0], $export_permission, 'pdf');
  sc_apl_conf($rs->fields[0], $export_permission, 'xml');
  sc_apl_conf($rs->fields[0], $export_permission, 'csv');
  sc_apl_conf($rs->fields[0], $export_permission, 'rtf');
  //export
   $export_permission = 'btn_display_'. has_priv($rs->fields[6]);
  sc_apl_conf($rs->fields[0], $export_permission, 'print');
   $rs->MoveNext();   

}
$rs->Close();

$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups
WHERE
login = ‘". [usr_login] ."’)";
sc_lookup(rs, $check_sql);

if({rs[0][0]} == ‘Administrador’)
{
sc_redir(‘MenuAdmin’);

}
elseif({rs[0][0]} == ‘Operador’)
{
sc_redir(‘MenuUser’);
}
}

Verifica se o seu campo “description” está retornando exatamente “Administrador” e “Operador”, lembrado que o PHP é CASE SENSITIVE, ou seja, diferencia MAIÚSCULAS de minúsculas.

Dica: Seria interessante usar uma função para converter a string para maiúsculo ou minúscula… strtoupper() ou strtolower().

Tá faltando fechar as chaves do 1o if

Pode ser que eu esteja errado, más o primeiro if está fechado na última chave do código.

elseif({rs[0][0]} == 'Operador') { sc_redir('MenuUser'); } } <--------- AQUI

Dependendo do tipo de campo que vc usa no banco, o select pode retornar valores com espaço em branco no final.
Então testa o seguinte:

if(trim({rs[0][0]}) == 'Administrador') {
     sc_redir('MenuAdmin');
} elseif(trim({rs[0][0]}) == 'Operador') {
    sc_redir('MenuUser');
}

Outra coisa,
Tu já executou esse select direto no banco pra ver o que tá retornando?
[]s

Não,

Testei as duas dicas

Se eu tira a chave;

elseif({rs[0][0]} == ‘Operador’)
{
sc_redir(‘MenuUser’);
}
} <--------- AQUI

Da erro

e se eu fechar as chaves ou abrir no 1° if , também dar erro…

deve ser um detalhe, será o código SQL está certo mesmo?

Amigo, as últimas chaves tem que estar ai mesmo.

No fim do seu script escreve esse comando:

die({rs[0][0]});

E informe o resultado aqui no fórum para agente.
Esse comando irá imprimir na tela o valor do seu retorno do banco, e parar o script.

Aguardo

Roda esse sql no banco e nos diz o resultado:
SELECT DISTINCT description
FROM seg_groups
WHERE group_id IN (SELECT group_id FROM seg_users_groups WHERE login = ‘ALGUM_LOGIN’)

o script
die({rs[0][0]});

retorna resultado em branco


//Irei postar novamente o código final no evento onvalidateSuccess do formulário de login

$sql = “SELECT
app_name,
priv_access,
priv_insert,
priv_delete,
priv_update,
priv_export,
priv_print
FROM sec_groups_apps
WHERE group_id IN
(SELECT
group_id
FROM
sec_users_groups
WHERE
login = '”. [usr_login] ."’)";

sc_select(rs, $sql);
if ({rs} !== false)
{
while (!$rs->EOF)
{
if( $rs->fields[1] == ‘Y’)
{
sc_apl_status($rs->fields[0], ‘on’);
}
else
{
sc_apl_status($rs->fields[0], ‘off’);

  }

  sc_apl_conf($rs->fields[0], 'insert', has_priv($rs->fields[2]));
  sc_apl_conf($rs->fields[0], 'delete', has_priv($rs->fields[3]));
  sc_apl_conf($rs->fields[0], 'update', has_priv($rs->fields[4]));
 
  //export
  $export_permission = 'btn_display_'. has_priv($rs->fields[5]);
  sc_apl_conf($rs->fields[0], $export_permission, 'xls');
  sc_apl_conf($rs->fields[0], $export_permission, 'word');
  sc_apl_conf($rs->fields[0], $export_permission, 'pdf');
  sc_apl_conf($rs->fields[0], $export_permission, 'xml');
  sc_apl_conf($rs->fields[0], $export_permission, 'csv');
  sc_apl_conf($rs->fields[0], $export_permission, 'rtf');
  //export
   $export_permission = 'btn_display_'. has_priv($rs->fields[6]);
  sc_apl_conf($rs->fields[0], $export_permission, 'print');
   $rs->MoveNext();   

}
$rs->Close();

// da qui para baixo começa minha implementação

$check_sql = “SELECT description”
. " FROM seg_groups"
. " WHERE group_id IN
(SELECT
group_id
FROM
seg_users_groups
WHERE
login = ‘". [usr_login] ."’)";
sc_lookup(rs, $check_sql);

if({rs[0][0]} == ‘Administrador’)
{
sc_redir(‘MenuAdmin’);

}
elseif({rs[0][0]} == ‘Operador’)
{
sc_redir(‘MenuUser’);
}
}

Resolvido!!!

Muito bem!!