Autor Tópico: Login por Controle, com uma tabela para conferir usuário e senha e passar param  (Lida 919 vezes)

ramosinfo

  • Intermediário
  • ***
  • Mensagens: 149
Quero fazer login a partir de uma tabela minha, e passando o código do fornecedor como variável global.

Fiz um Controle com os campos Email e Senha, e no evento onValidate inseri o código:

$nome = {Email};
$pass = {Senha};

$sql = "SELECT email, senha, cod_fornecedor
FROM fornecedores
WHERE (Email = '".$nome."') AND (Senha = '".$pass."')";

sc_lookup(ds, $sql);

if (isset({ds[0][0]}))
   {
      [global_fornecedor] = {cod_fornecedor};
      sc_redir(menu.php);
   }
else
   {
      echo "Usuário não existe";
   }

Mas mesmo existindo o e-mail e senha cadastrados, dá mensagem de usuário não existe. O que posso estar fazendo de errado?
« Última modificação: Janeiro 20, 2016, 09:02:07 pm por ramosinfo »

Kleyber

  • Expert
  • *****
  • Mensagens: 2235
    • Email
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #1 Online: Janeiro 20, 2016, 09:34:10 pm »
A senha é criptografada? Qual o banco de dados?
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

ramosinfo

  • Intermediário
  • ***
  • Mensagens: 149
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #2 Online: Janeiro 20, 2016, 09:36:23 pm »
Não é criptografada e o banco é mysql.

Kleyber

  • Expert
  • *****
  • Mensagens: 2235
    • Email
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #3 Online: Janeiro 21, 2016, 07:24:33 am »
Ok, então mude o teu select assim:

$sql = "SELECT email, senha, cod_fornecedor
FROM fornecedores
WHERE email = '".$nome."' AND senha = '".$pass."'";

E veja se funciona pra ti.
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

ramosinfo

  • Intermediário
  • ***
  • Mensagens: 149
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #4 Online: Janeiro 21, 2016, 08:24:55 am »
Não funcionou...

Tava pensando aqui em usar o módulo segurança, mas os videos que assisti são só de personalização de layout. Onde encontro mais detalhes sobre ele? Só que não queria ter que selecionar o usuário de uma lista, queria que identificasse e a condição WHERE de todos os formulários permitisse somente o usuário logado.

Kleyber

  • Expert
  • *****
  • Mensagens: 2235
    • Email
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #5 Online: Janeiro 21, 2016, 09:23:22 am »
Ramosinfo,

Tem este video aqui (https://www.youtube.com/watch?v=rECFwsN-H0k) que fala sobre segurança de acordo com o usuário logado. E tem vários outros falando sobre o mesmo tema.

Quanto ao teu SQL, se tu executares diretamente no MySQL ele traz o resultado esperado?
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

Jailton

  • Expert
  • *****
  • Mensagens: 2030
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #6 Online: Janeiro 21, 2016, 10:00:37 am »
Observar os pequenos detalhes fazem a diferença....

O MySQL é case sensitive, diferencia Maiúscula de Minúsculas,

Observando o SQL ele pega ‘email’, ‘senha’ em Minúsculo, mas no WHERE ele já tenta
comparar com Maiúsculo no Início de cada palavra: ‘Email’ And ‘Senha’


Código: [Selecionar]
$nome = {Email};
$pass = {Senha};

/* Macro sc_lookup */

sc_lookup(val_senha, "
SELECT
    email,
    senha,
    cod_fornecedor
FROM
    fornecedores
WHERE
    email = '$nome' AND senha = '$pass'
");

/* Erro no lookup */
if (FALSE === {val_senha}) {
sc_error_message("Ocorreu um erro no acesso ao banco de dados.<BR>");
}
elseif (empty({val_senha})) { /* EOF */

sc_error_message("Usuário ou senha não cadastrado!<BR>");
}
else {

/* Inclua aqui sua rotina de processamento */

       [global_fornecedor] = {cod_fornecedor};
       sc_redir(menu.php);

}
« Última modificação: Janeiro 24, 2016, 04:55:04 pm por Jailton »
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

ramosinfo

  • Intermediário
  • ***
  • Mensagens: 149
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #7 Online: Janeiro 24, 2016, 02:19:59 pm »
Deu erro:

Parse error: syntax error, unexpected '=', expecting '}' in C:\Program Files (x86)\NetMake\v81\wwwroot\scriptcase\app\Cheap\control\control_apl.php on line 1420

Tentei mudar que tinha 3 === mas não adiantou...

Jailton

  • Expert
  • *****
  • Mensagens: 2030
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #8 Online: Janeiro 24, 2016, 04:55:41 pm »
Deu erro:

Parse error: syntax error, unexpected '=', expecting '}' in C:\Program Files (x86)\NetMake\v81\wwwroot\scriptcase\app\Cheap\control\control_apl.php on line 1420

Tentei mudar que tinha 3 === mas não adiantou...

Faltou ; o no final aqui:
sc_lookup(val_senha, "
SELECT
    email,
    senha,
    cod_fornecedor
FROM
    fornecedores
WHERE
    email = '$nome' AND senha = '$pass'
");   // << Aqui..


O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

ramosinfo

  • Intermediário
  • ***
  • Mensagens: 149
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #9 Online: Janeiro 24, 2016, 06:25:28 pm »
É, deu certo.

Bom, acho estranho, que tá funcionando tudo ok, mas antes de entrar no menu, dá a mensagem bem rápida de:

Undefinied variable: cod_fornecedor

Mas tá pegando a váriável global com o cod_fornecedor.

Jailton

  • Expert
  • *****
  • Mensagens: 2030
Re:Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #10 Online: Janeiro 24, 2016, 07:52:10 pm »
É, deu certo.

Bom, acho estranho, que tá funcionando tudo ok, mas antes de entrar no menu, dá a mensagem bem rápida de:

Undefinied variable: cod_fornecedor

Mas tá pegando a váriável global com o cod_fornecedor.

Para pegar o código do Fornecedor direto do SQL da tabela mude esta parte do código para:
}
else {

   /* Inclua aqui sua rotina de processamento */

       [global_fornecedor] = {val_senha[0][2]};     // <-- Aqui ele pega da tabela via SQL.
       sc_redir(menu.php);
   
}
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

ramosinfo

  • Intermediário
  • ***
  • Mensagens: 149
Login por Controle, com uma tabela para conferir usuário e senha e passar param
« Responder #11 Online: Janeiro 25, 2016, 08:59:44 am »
Deu certo. Obrigado!  :)