Autor Tópico: Não Seta Variáveis Globais do Módulo de segurança  (Lida 452 vezes)

gutoribeiro

  • Intermediário
  • ***
  • Mensagens: 175
    • Email
Não Seta Variáveis Globais do Módulo de segurança
« Online: Dezembro 29, 2016, 02:59:59 pm »
Boa tarde a todas e todos,

Segui o tutorial do vídeo de scriptcase (Scriptcase 8.1 - Modulo segurança + App Blank (integração com login responsivo)) em: https://www.youtube.com/watch?v=--jUxlwL0sM

Fiz algumas mudanças.  Criei uma blank usando o bootstrap, o sistema tá logando normal, tudo certinho. Estou tendo problema em relação as variáveis globais que o módulo de segurança deve "setar".

Se eu rodo a aplicação padrão gerada pelo módulo de segurança, as variáveis são "setadas" normalmente. Na aplicação blank isso não acontece e estranhamente apenas é "setada" a variável [usr_name].

Código onExecute da Blank:
Código: [Selecionar]
start();
$str_error_msg = "";
if(isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['password']) && !empty($_POST['password'])) {
$str_output = validate($_POST['login'], $_POST['password']);
if($str_output != 'NM_OK_NM') {
$str_error_msg = $str_output;
?>
<div class="alert alert-danger alert-dismissible" style="z-index: 1; position: absolute; margin: 20vh 30vw 20vh 30vw">
    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
    <strong>Erro!</strong> Usuário/Senha inválidos ou Usuário não ativo. Dúvidas, contate o suporte.
  </div>
<?php
}
else {
sc_redir('menu_proponente');
}
}
?>

<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
  <link href="http://v4.pingendo.com/assets/bootstrap/themes/default.css" rel="stylesheet" type="text/css">
  <style>
/* Full-width input fields */
input[type=text], input[type=password] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    box-sizing: border-box;
border-radius: 10px;
}


/* Set a style for all buttons */
button {
    background-color: #264A7A;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
border-radius: 10px;
}

/* Extra styles for the cancel button */
.cadastraruser {
    width: auto;
    padding: 10px 18px;
    background-color: #308d41;
}

/* Center the image and position the close button */
.imgcontainer {
    text-align: center;
    margin: 24px 0 12px 0;
    position: relative;
}

img.avatar {
    width: 40%;
    border-radius: 50%;
}

.container {
    padding: 16px;
}

span.psw {
    /*float: right;*/
    padding-top: 16px;
}

/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
    padding-top: 60px;
}

/* Modal Content/Box */
.modal-content {
    background-color: #fefefe;
    margin: 5% 10% 15% 10%; /* 5% from the top, 15% from the bottom and centered */
    border: 1px solid #888;
    width: 80%; /* Could be more or less, depending on screen size */
}

/* The Close Button (x) */
.close {
    position: absolute;
    right: 25px;
    top: 0;
    color: #000;
    font-size: 35px;
    font-weight: bold;
}

.close:hover,
.close:focus {
    color: red;
    cursor: pointer;
}

/* Add Zoom Animation */
.animate {
    -webkit-animation: animatezoom 0.6s;
    animation: animatezoom 0.6s
}

@-webkit-keyframes animatezoom {
    from {-webkit-transform: scale(0)}
    to {-webkit-transform: scale(1)}
}
   
@keyframes animatezoom {
    from {transform: scale(0)}
    to {transform: scale(1)}
}

/* Change styles for span and cancel button on extra small screens */ @media
screen and (max-width: 300px) {     span.psw {        display: block;
float: none;     }     .cadastraruser {        width: 100%;     } }
 
</style>
</head>

<body>
  <div class="section section-fill-height section-opaque-light text-xs-center">
    <div class="background-image" style="background-image: url(&quot;http://acaicomfarinha.com.br/fcplogo-cortada.png&quot;);"></div>
    <div class="container">

      <div class="row">
        <div class="col-md-12"><img class="center-block img-fluid img-rounded" src="../_lib/img/grp__NM__img__NM__logo-sgp-150x98.png"> </div>
      </div>
      <div class="row">
        <div class="col-md-12">

          <p class="lead pi-draggable pi-item">Sistema de Gestão de Projetos Culturais do Programa Semear</p>

          <button onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Acessar</button>
 
<div class="row">
        <div class="col-md-12">

<div class="row">
<br>
<div class="col-md-4">
<img class="center-block img-fluid" src="../_lib/img/grp__NM__img__NM__FCP_Logo80x97.png">
</div>
<div class="col-md-4">
<img class="center-block img-fluid" src="../_lib/img/grp__NM__img__NM__LogoSemear140x81.png" style="margin-top: 8px">
</div>
<div class="col-md-4">
<img class="center-block img-fluid" src="../_lib/img/grp__NM__img__NM__Governo-do-Pará-Horizontal210x81.png" style="margin-top: 27px">
</div>
</div>
</div>

    </div>

<div id="id01" class="modal">
 
  <form class="modal-content animate" method="post">
    <div class="imgcontainer">
      <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
    </div>

    <div class="container">
      <label><b>Usuário</b></label>
    <input type="text" placeholder="Digite o nome de usuário" name="login" required>
  <label><b>Senha</b></label>
      <input type="password" placeholder="Digite a senha" name="password" required>
      <button type="submit" title="Acessar o Sistema">Acessar</button>
    </div>

    <div class="container" style="background-color:#f1f1f1">
      <a href="../app_form_add_users/app_form_add_users.php"><button type="button" class="cadastraruser" title="Cadastrar um novo usuário no sistema">Cadastrar</button></a>
      <span class="psw">Esqueceu a <a href="../app_retrieve_pswd/app_retrieve_pswd.php">senha?</a></span>
    </div>
  </form>
</div>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript" src="https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/js/bootstrap.js"></script>

</body>

</html>
<?php

Seguindo as orientações do vídeo, criei os métodos php na blank, baseando-os nos eventos do form appLogin (gerado pelo módulo de segurança do SC).

Método start()
Código: [Selecionar]
//Application Ini
sc_reset_apl_conf("app_form_add_users");
sc_reset_apl_conf("app_retrieve_pswd");

//Script Ini
sc_reset_apl_status();
sc_reset_global([usr_login], [usr_email]);


//OnLoad
sc_apl_conf('app_form_add_users', 'start', 'new');

Método validate($login,$pass)
Código: [Selecionar]
$slogin = sc_sql_injection($login);
$spswd = sc_sql_injection(md5($pass));

$sql = "SELECT
priv_admin,
active,
name,
email
      FROM sec_users
      WHERE login = $slogin
AND pswd = ".$spswd;

sc_lookup(rs, $sql);

if(count({rs}) == 0)
{
sc_log_add('login Fail', {lang_login_fail} . $login);
;
return "Usuário ou Senha incorreto(s)";
}
else if({rs[0][1]} == 'Y')
{
[usr_login] = $login;
[usr_priv_admin] = {rs[0][0]};
[usr_name] = {rs[0][2]};
[usr_email] = {rs[0][3]};

validate_success();

return "NM_OK_NM";
}
else
{
sc_error_message({lang_error_not_active});
sc_error_exit();
return "NM_ERROR_NM";
}

Método validate_success()
Código: [Selecionar]
$dir = opendir($this->Ini->path_aplicacao . "..");

while ($file = readdir($dir))
{
if ($file != '.' && $file != '..' && $file != '_lib')
{
      sc_apl_status($file, 'on');
}
}

closedir($dir);


sc_log_add('login', {lang_login_ok});

Como disse, executando appLogin as variáveis são setadas. Mas rodando a blank, não. As demais situações estão funcionando normalmente, ou seja, verifica o usuário no banco, valida tudo e loga.

Alguém pode me ajudar a enxergar o erro? Pelo que parece está no método validate($login,$pass). Eu o fiz seguindo as orientações do vídeo e o evento onValidade da aplicação padrão do módulo de segurança appLogin é o seguinte:

Código: [Selecionar]
$slogin = sc_sql_injection({login});
$spswd = sc_sql_injection(md5({pswd}));


$sql = "SELECT
priv_admin,
active,
name,
email
      FROM sec_users
      WHERE login = $slogin
AND pswd = ".$spswd;

sc_lookup(rs, $sql);

if(count({rs}) == 0)
{
sc_log_add('login Fail', {lang_login_fail} . {login});
;
sc_error_message({lang_error_login});
}
else if({rs[0][1]} == 'Y')
{
[usr_login] = {login};
[usr_priv_admin] = {rs[0][0]};
[usr_name] = {rs[0][2]};
[usr_email] = {rs[0][3]};
}
else
{
sc_error_message({lang_error_not_active});
sc_error_exit();
}

Alguém pode por favor iluminar minha visão, pois não consigo ver onde está o erro.

Muito grato desde já pela atenção.

gutoribeiro

  • Intermediário
  • ***
  • Mensagens: 175
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #1 Online: Janeiro 02, 2017, 01:15:16 pm »
Alguém?

robertobru

  • Avançado
  • ****
  • Mensagens: 286
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #2 Online: Janeiro 02, 2017, 08:57:39 pm »
Aplicação;
Variáveis Globais.
Configuração das variáveis.
Verifique o Escopo, por favor.

gutoribeiro

  • Intermediário
  • ***
  • Mensagens: 175
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #3 Online: Janeiro 02, 2017, 09:11:23 pm »
Aplicação;
Variáveis Globais.
Configuração das variáveis.
Verifique o Escopo, por favor.

Está marcado SESSION. Já tentei os outros também.

gutoribeiro

  • Intermediário
  • ***
  • Mensagens: 175
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #4 Online: Janeiro 03, 2017, 01:48:46 pm »
Bem, depois de muito tentar, encontrei uma solução para a questão das varáveis globais não estarem sendo setadadas na aplicação Blank. Mas, ainda estou com problemas para inserir informações no log através da sc_log_add.

Vou compartilhar aqui novamente os códigos já com as devidas mudanças em que está funcionando as variáveis globais

Vamos aos métodos.

Método start() -> que está na blank de login.

Código: [Selecionar]
/*Método Start*/

//Application Ini
sc_reset_apl_conf("app_form_add_users");
sc_reset_apl_conf("app_retrieve_pswd");

//Script Ini
sc_reset_apl_status();
sc_reset_global([usr_login], [usr_email], [usr_name], [usr_priv_admin]);
        //Destruindo as variáveis de sessão criadas no método validate()
unset($_SESSION['glo_usr_login']);
unset($_SESSION['glo_usr_priv_admin']);
unset($_SESSION['glo_usr_name']);
unset($_SESSION['glo_usr_email']);


//OnLoad
sc_apl_conf('app_form_add_users', 'start', 'new');

/*Fim do método Start*/

Método validade() ->  que está na blank de login.

Código: [Selecionar]
$slogin = sc_sql_injection($login);
$spswd = sc_sql_injection(md5($pass));
$sql = "SELECT priv_admin, active, name, email
      FROM sec_users
      WHERE login = $slogin
AND pswd = ".$spswd;

sc_lookup(rs, $sql);

if(count({rs}) == 0)
{
//sc_log_add('login Fail', {lang_login_fail} . $login); -> aqui não funciona a sc_log_add
//return "Usuário e/ou Senha incorreto(s)";
return "NM_ERROPWD_NM";
}
else if({rs[0][1]} == 'Y')
{
                //Criando variáveis de sessão a partir do resultado de rs que serão usadas para definir variáveis globais do scriptcase depois
$_SESSION['glo_usr_login'] = $login;
$_SESSION['glo_usr_priv_admin'] = {rs[0][0]};
$_SESSION['glo_usr_name'] = {rs[0][2]};
$_SESSION['glo_usr_email'] = {rs[0][3]};

return "NM_OK_NM";
}
else
{
//sc_error_message({lang_error_not_active});
//sc_error_exit();
//return "Usuário não está ativo!";
return "NM_ERROACT_NM";
}

Método validate_success() -> que está na blank de login.

Código: [Selecionar]
/*Início do método Validate_Success*/

$dir = opendir($this->Ini->path_aplicacao . "..");
while ($file = readdir($dir))
{
if ($file != '.' && $file != '..' && $file != '_lib')
{
      sc_apl_status($file, 'on');
}
}

closedir($dir);


sc_redir('menu_proponente');


/*Fim do método Validate_Success*/


A Blank que contém o código da tela de login com modal
Código do OnExecute da blank:
Código: [Selecionar]
start();

$str_error_msg = "";
if(isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['password']) && !empty($_POST['password'])) {
$str_output = validate($_POST['login'], $_POST['password']);
if($str_output != 'NM_OK_NM') {
switch ($str_output) {
case "NM_ERROPWD_NM":
sc_log_add('login Fail', {lang_login_fail} . $_POST['login']); //Aqui também não funcionou a sc_log_add
$str_error_msg = "Usuário e/ou Senha incorreto(s)!";
break;
case "NM_ERROACT_NM":
sc_log_add('login Fail', {lang_error_not_active} . $_POST['login']);  //Aqui também não funcionou a sc_log_add
$str_error_msg = "Usuário não está ativo!";
break;
}
?>
<div class="alert alert-danger alert-dismissible" style="z-index: 1; position: absolute; margin: 20vh 40vw 20vh 40vw">
    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
    <strong>Erro!</strong> <?php echo $str_error_msg?>
  </div>
<?php
}
else {
sc_log_add('login', {lang_login_ok});
validate_success();
}
}

?>

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

  <style>
  .Absolute-Center {
  margin: auto;
  position: absolute;
  top: 0; left: 0; bottom: 0; right: 0;
}

.Absolute-Center.is-Responsive {
  width: 50%;
  height: 50%;
  min-width: 300px;
  max-width: 500px;
  padding: 5px;
}
  </style>
</head>
<body>
<div class="container">

<div class="row">
<div class="Absolute-Center is-Responsive">
<div class="col-sm-12 col-md-10 col-md-offset-1 text-center">
<div class="panel panel-primary">
      <div class="panel-heading text-center">
      <h4>Acessar o Sistema</h4>
      </div>
      <div class="panel-body">
      <form method="post">
    <div class="form-group" >
      <label for="text">Usuario:</label>
      <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
      <input type="text" class="form-control" id="user" autocomplete="off" placeholder="Digite o usuario" name="login">
      </div>
    </div>
    <div class="form-group">
      <label for="pwd">Senha:</label>
      <div class="input-group">
      <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
      <input type="password" class="form-control" id="pwd" autocomplete="off" placeholder="Digite a senha" name="password">
      </div>
    </div>
        <button type="submit" class="btn btn-primary">Acessar</button>
  </form>
      </div>
    </div>
    </div>
</div>
</div>
</div>   

</body>
</html>
<?php

Na aplicação de menu coloquei em onApplicationInit o seguinte código:

Código: [Selecionar]
[usr_login] = $_SESSION['glo_usr_login'];
[usr_priv_admin]         = $_SESSION['glo_usr_priv_admin'];
[usr_name] = $_SESSION['glo_usr_name'];
[usr_email] = $_SESSION['glo_usr_email'];

Bem, talvez não seja a forma mais correta de se fazer. Mas, só consegui fazer as variáveis globais padrão do SC serem definidas.
Até agora não entendi porquê da forma tradicional de configurar variáveis globais não está funcionando na blank. De acordo com o vídeo tutorial no youtube, bastava copiar os eventos da aplicação padrão do scriptcase de login para métodos da blank. Porém, não funciona assim.

Ainda estou com problemas para registrar no log o login com sucesso e as falhas de login.


Alguém tem alguma ideia?

Agradeço pela atenção de todos.

Moacir de Oliveira

  • Novato
  • *
  • Mensagens: 41
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #5 Online: Janeiro 03, 2017, 05:42:40 pm »
Ola gutoribeiro

Testei aqui e foi normal. a unica coisa foi que não usei session nas variaveis global e setei somente como saida.

Caso precise; posso colocar os codigos aqui.


Atenciosamente

Moacir de Oliveira
Atenciosamente

Moacir de Oliveira

gutoribeiro

  • Intermediário
  • ***
  • Mensagens: 175
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #6 Online: Janeiro 04, 2017, 10:18:12 am »
Ola gutoribeiro

Testei aqui e foi normal. a unica coisa foi que não usei session nas variaveis global e setei somente como saida.

Caso precise; posso colocar os codigos aqui.


Atenciosamente

Moacir de Oliveira

No meu caso aqui não foi. Só foi com da forma que eu fiz por último ai e coloquei os códigos. Tive de utilizar $_SESSION mesmo.

Não sei o que está acontecendo, porque acredito que era pra funcionar da primeira forma. Outra coisa que está me intrigando é que sc_log_add() não tá registrando nada na tabela de log.

Eu até refiz tudo do zero achando que poderia ser algum bug na app, mas na nova app blank está com o mesmo problema. Estou usando SC8.1

Você fez igual o meu, da mesma maneira? Só colocou as variáveis globais como saída, marcando POST? Eu fiz isso também.

Posta ai o que você fez por favor para que comparar.

Grato.
« Última modificação: Janeiro 04, 2017, 10:24:17 am por gutoribeiro »

Moacir de Oliveira

  • Novato
  • *
  • Mensagens: 41
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #7 Online: Janeiro 04, 2017, 11:09:13 am »
Ola gutoribeiro
 Ai vai ;


no onexecute
Citar
start();


$str_error_msg = "";
if(isset($_POST['login']) && !empty($_POST['login']) && isset($_POST['password']) && !empty($_POST['password'])) {
   $str_output = validate($_POST['login'], $_POST['password']);
      if($str_output != 'NM_OK_NM') {
         $str_error_msg = $str_output;
         ?>
            <div class="alert alert-danger alert-dismissible" style="z-index: 1; position: absolute; margin: 20vh 30vw 20vh 30vw">
                <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
                <strong>Erro!</strong> Usuário/Senha inválidos ou Usuário não ativo. Dúvidas, contate o suporte.
              </div>
         <?php
      }
      else {
         
      //   echo "login " . [usr_login] ."<br>";
      //   echo "usuario Admin " . [usr_priv_admin] ."<br>";
      //   echo "Nome " . [usr_name] ."<br>";
      //   echo "Email " . [usr_email] ."<br>";
         sc_redir('blank_1');   //  criei uma aplicação blank chamada de blank_1
         

      }
   }
   
   
?>
<html>

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
  <link href="http://v4.pingendo.com/assets/bootstrap/themes/default.css" rel="stylesheet" type="text/css">
  <style>
/* Full-width input fields */
input[type=text], input[type=password] {
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    display: inline-block;
    border: 1px solid #ccc;
    box-sizing: border-box;
   border-radius: 10px;
}


/* Set a style for all buttons */
button {
    background-color: #264A7A;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
   border-radius: 10px;
}

/* Extra styles for the cancel button */
.cadastraruser {
    width: auto;
    padding: 10px 18px;
    background-color: #308d41;
}

/* Center the image and position the close button */
.imgcontainer {
    text-align: center;
    margin: 24px 0 12px 0;
    position: relative;
}

img.avatar {
    width: 40%;
    border-radius: 50%;
}

.container {
    padding: 16px;
}

span.psw {
    /*float: right;*/
    padding-top: 16px;
}

/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
    padding-top: 60px;
}

/* Modal Content/Box */
.modal-content {
    background-color: #fefefe;
    margin: 5% 10% 15% 10%; /* 5% from the top, 15% from the bottom and centered */
    border: 1px solid #888;
    width: 80%; /* Could be more or less, depending on screen size */
}

/* The Close Button (x) */
.close {
    position: absolute;
    right: 25px;
    top: 0;
    color: #000;
    font-size: 35px;
    font-weight: bold;
}

.close:hover,
.close:focus {
    color: red;
    cursor: pointer;
}

/* Add Zoom Animation */
.animate {
    -webkit-animation: animatezoom 0.6s;
    animation: animatezoom 0.6s
}

@-webkit-keyframes animatezoom {
    from {-webkit-transform: scale(0)}
    to {-webkit-transform: scale(1)}
}
   
@keyframes animatezoom {
    from {transform: scale(0)}
    to {transform: scale(1)}
}

/* Change styles for span and cancel button on extra small screens */ @media
screen and (max-width: 300px) {     span.psw {        display: block;
float: none;     }     .cadastraruser {        width: 100%;     } }
    
</style>
</head>

<body>
  <div class="section section-fill-height section-opaque-light text-xs-center">
    <div class="background-image" style="background-image: url(&quot;http://acaicomfarinha.com.br/fcplogo-cortada.png&quot;);"></div>
    <div class="container">
      
      <div class="row">
        <div class="col-md-12"><img class="center-block img-fluid img-rounded" src="../_lib/img/grp__NM__img__NM__logo-sgp-150x98.png">         </div>
      </div>
      <div class="row">
        <div class="col-md-12">

          <p class="lead pi-draggable pi-item">Sistema de Gestão de Projetos Culturais do Programa Semear</p>
         
          <button onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Acessar</button>
       
   <div class="row">
          <div class="col-md-12">
            
         <div class="row">
            <br>
            <div class="col-md-4">
               <img class="center-block img-fluid" src="../_lib/img/grp__NM__img__NM__FCP_Logo80x97.png">
            </div>
            <div class="col-md-4">
               <img class="center-block img-fluid" src="../_lib/img/grp__NM__img__NM__LogoSemear140x81.png" style="margin-top: 8px">
            </div>
            <div class="col-md-4">
               <img class="center-block img-fluid" src="../_lib/img/grp__NM__img__NM__Governo-do-Pará-Horizontal210x81.png" style="margin-top: 27px">
            </div>
         </div>
      </div>
      
    </div>

<div id="id01" class="modal">
 
  <form class="modal-content animate" method="post">
    <div class="imgcontainer">
      <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
    </div>

    <div class="container">
      <label><b>Usuário</b></label>
            <input type="text" placeholder="Digite o nome de usuário" name="login" required>
     <label><b>Senha</b></label>
      <input type="password" placeholder="Digite a senha" name="password" required>
      <button type="submit" title="Acessar o Sistema">Acessar</button>
    </div>

    <div class="container" style="background-color:#f1f1f1">
      <a href="../app_form_add_users/app_form_add_users.php"><button type="button" class="cadastraruser" title="Cadastrar um novo usuário no sistema">Cadastrar</button></a>
      <span class="psw">Esqueceu a <a href="../app_retrieve_pswd/app_retrieve_pswd.php">senha?</a></span>
    </div>
  </form>
</div>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js" type="text/javascript"></script>
  <script type="text/javascript" src="https://cdn.rawgit.com/twbs/bootstrap/v4-dev/dist/js/bootstrap.js"></script>

</body>

</html>
<?php

no metodo php start()

Citar
//Application Ini
sc_reset_apl_conf("app_form_add_users");
sc_reset_apl_conf("app_retrieve_pswd");

//Script Ini
sc_reset_apl_status();
sc_reset_global([usr_login], [usr_email], [usr_priv_admin]);


//OnLoad
sc_apl_conf('app_form_add_users', 'start', 'new');


no metodo validate($login, $password)

Citar
$slogin = sc_sql_injection($login);
$spswd = sc_sql_injection($password);


$sql = "SELECT
      priv_admin,
      active,
      name,
      email
         FROM sec_users
         WHERE login = $slogin
      AND pswd = ".$spswd;
   
sc_lookup(rs, $sql);
   
if(count({rs}) == 0)
{
   sc_log_add('login Fail', {lang_login_fail} . {login});
   ;
   sc_error_message("Usuario ou Senha Errados");
}
else if({rs[0][1]} == 'Y')
{
   [usr_login]         = {login};
   [usr_priv_admin]    = {rs[0][0]};
   [usr_name]         = {rs[0][2]};
   [usr_email]         = {rs[0][3]};
   
   validate_sucess();
   
   return "NM_OK_NM";
}
else
{
   sc_error_message("Usuario não Ativo");
   sc_error_exit();
   return "NM_ERROR_NM";
}

no metodo validate_sucess()
Citar
   $dir = opendir($this->Ini->path_aplicacao . "..");

   while ($file = readdir($dir))
   {
      if ($file != '.' && $file != '..' && $file != '_lib')
      {
            sc_apl_status($file, 'on');
      }      
   }
   
   closedir($dir);

   
      sc_log_add('login', {lang_login_ok});
      
   //   sc_redir('app_menu');   
   

criei uma blank_1
Citar
         echo "login " . [usr_login] ."<br>";
         echo "usuario Admin " . [usr_priv_admin] ."<br>";
         echo "Nome " . [usr_name] ."<br>";
         echo "Email " . [usr_email] ."<br>";

E nas variaveis globais setei todas como saida, post e get somente.
Funcionou normal, inclusive a gravação do log.

at.

Moacir de Oliveira

Atenciosamente

Moacir de Oliveira

gutoribeiro

  • Intermediário
  • ***
  • Mensagens: 175
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #8 Online: Janeiro 04, 2017, 12:11:04 pm »
Estranho funcionar com você e comigo não.

Até porque no seu método validade está setado o campo {login} ao invés do atributo $login. Por ser uma blank não tem campo.

$slogin = sc_sql_injection($login);
$spswd = sc_sql_injection($password);


$sql = "SELECT
      priv_admin,
      active,
      name,
      email
         FROM sec_users
         WHERE login = $slogin
      AND pswd = ".$spswd;
   
sc_lookup(rs, $sql);
   
if(count({rs}) == 0)
{
   sc_log_add('login Fail', {lang_login_fail} . {login}); -> campo ao invés de variável do atributo do método
   ;
   sc_error_message("Usuario ou Senha Errados");
}
else if({rs[0][1]} == 'Y')
{
   [usr_login]         = {login}; -> campo ao invés de variável do atributo do método
   [usr_priv_admin]    = {rs[0][0]};
   [usr_name]         = {rs[0][2]};
   [usr_email]         = {rs[0][3]};
   
   validate_sucess();
   
   return "NM_OK_NM";
}
else
{
   sc_error_message("Usuario não Ativo");
   sc_error_exit();
   return "NM_ERROR_NM";
}


Eu fiz dessa forma e não vai de jeito nenhum, trocando o {login} pela variável $login.

Está setando as variáveis globais através de $_SESSION mesmo. Porém, continuo com problema no sc_log_add().

Obrigado pela atenção

Moacir de Oliveira

  • Novato
  • *
  • Mensagens: 41
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #9 Online: Janeiro 04, 2017, 12:14:45 pm »
Ola

No onexecute experimente tirar as barras
Citar
     //   echo "login " . [usr_login] ."<br>";
      //   echo "usuario Admin " . [usr_priv_admin] ."<br>";
      //   echo "Nome " . [usr_name] ."<br>";
      //   echo "Email " . [usr_email] ."<br>";


E rode do mesmo jeito direcionando para o blank_1

at
Moacir
Atenciosamente

Moacir de Oliveira

Moacir de Oliveira

  • Novato
  • *
  • Mensagens: 41
    • Email
Re:Não Seta Variáveis Globais do Módulo de segurança
« Responder #10 Online: Janeiro 04, 2017, 12:26:17 pm »
Ola

Citar
Estranho funcionar com você e comigo não.

Até porque no seu método validade está setado o campo {login} ao invés do atributo $login. Por ser uma blank não tem campo.

 
if(count({rs}) == 0)
{
   sc_log_add('login Fail', {lang_login_fail} . {login}); -> campo ao invés de variável do atributo do método
   ;
   sc_error_message("Usuario ou Senha Errados");
}

Eu fiz dessa forma e não vai de jeito nenhum, trocando o {login} pela variável $login.

Está setando as variáveis globais através de $_SESSION mesmo. Porém, continuo com problema no sc_log_add().



Não detectei este erro do campo {login} no validate porque usei somente com usuario existente, e não entrou na exceção (if(count({rs}) == 0)), no entanto gravou no log  no validate_sucess (   sc_log_add('login', {lang_login_ok});).

O estranho é que aqui tambem não funcionou sem o echo no onexecute.
Citar
   echo "login " . [usr_login] ."<br>";
   echo "usuario Admin " . [usr_priv_admin] ."<br>";
   echo "Nome " . [usr_name] ."<br>";
   echo "Email " . [usr_email] ."<br>";
Atenciosamente

Moacir de Oliveira