PERSISTÊNCIA UTILIZANDO SESSÕES

FALA GALERA SC, GOSTARIA DE SABER SE ALGUEM PODERIA COLOCAR MAIS EXEMPLOS DE PERSISTÊNCIA UTILIZANDO AS SESSÕES DO SCRIPTCASE, COMECEI A MEXER NO FRAMEWORK A POUCO TEMPO E ESTOU MUITO EMPOLGADO, ESTOU DESENVOLVENDO UM SISTEMA QUE POSSUI UMA AREA DE LOGIN, COM O OBJETIVO DE FILTRAR AS INFORMAÇÕES COM BASE NO ID DO USUÁRIO, GOSTRIA DE SABER COMO FAÇO PARA PERSISTIR O ID DO USUÁRIO UTILIZANDO SESSION, ENTRE AS TELAS PARA QUE EU POSSA UTILIZÁ-LO EM MINHAS CONSULTAS SQL, AFIM DE RESTRINGIR AS INFORMAÇÕES…

EXEMPLO.

USUÁRIO LOGA, CRIO UMA SESSAO CHAMADA [IDCLIENTE]

EM UMA CONSULTA SQL, EU FAÇO O SEGUINTE FILTRO:

SELECT *
FROM TB_OCORRENCIAS C
WHERE C.CLI_ID = [IDCLIENTE]

DESDE JÁ AGRADEÇO!

VALEW…

é exatamente como voce fez no seu exemplo.

Fala Diogo tranquilo? é o seguinte estava lendo no webHelp do ScriptCase, sobre o item, váriaveis Globais, mas não entendi muito como ele gerência os metodos ($_GET,$_POST e $_SESSION - Entrada e Saida), sempre que atribuo um valor a uma váriavel do tipo [var] = x; eu estou criando uma sessão? por que neste caso quando executa a aplicação aparece uma caixa de entrada para digitar um valor para a sessão, quando eu publicar minha aplicação isso vai aparecer???

Desde de já Agradeço…

[variavel] ja indica que esta usando variavel de sessão.
A caixa que aparece é apenas em desenvolvimento, pois se voce esta utilizando a variavel [variavel] da a entender que a aplicação precisa da variavel(caso nao esteja setada) para funcionar.
A exemplo se a varaivel estivesse no seu select principal como voce citou no exemplo.

Se a variavel eh de saida(esta sendo criada na aplicação atual e vai passar adiante), significa que a variavel nao eh necessaria para a execução da aplicação e a aplicação nao vai mais pedir um valor para essa variavel.

Essa tela de valor que aparece é apenas para voce informar um valor momentaneo para que sua aplicação rode para que voce teste se é isso mesmo. se outra aplicação vai passar essa variavel … a aplicação, tem tempo de desenvolvimento, nao vai exibir a tela.

Diogo não entendi a observação: “(caso nao esteja setada)”, você poderia explicar melhor por favor, é que estou tendo bastante problema com a utilização de váriaveis, por exemplo no evento onBeforeInsert estou criando uma váriavel que recebe um campo ex. [var] = {campo}, para regatá-la no evento onAfterInsert eu poderia utilizar $var = [var]; ???

Bom, acho que voce nao entendeu a utilização de variaveis globais.

Variavel local da aplicação {campo}, é visivel na aplicação.
Variavel global, é visivel em todo o sistema numa mesma sessão.

Se voce ja tem o campo {campo}, voce nao precisa no onBeforeInsert atribuir para [var], pois {campo} é visivel tambem no onAfterInsert.

Numa aplicação voce nao precisa usar variaveis globais, exceto se vai passar alguma variavel para uma proxima aplicação, ex: login levanta a variavel do codigo do usuario logado…

Ex:
voce tem turmas e dentro de turmas voce tem alunos.
No formulario de turmas, no onValidadeSuccess eu faço [var_turma] = {codigo_turma} e no afterinsert ou afterupdate ou uso sc_redir(cons_alunos);
Na cons_alunos eu faco o seguinte select: select * from alunos where codigo_turma = [var_turma]

deu pra entender?

Tah fogo utilizar váriaveis globais no scriptcase, Diogo mais uma vez preciso de sua ajuda…

Seguinte tenho uma área de login… que quando o usuário do sistema se autentica eu declaro uma variavel global chamada [usu_id] no OnValidade que deveria levar o Id do usuário através da sessão, utilizo ela em um campo escondido de um formulário na propriedade do campo valor incial, estou infomando que o valor incial do mesmo será definido e como valor coloco a váriavel GLOBAL [usu_id], quando executo a aplicação aparece uma caixa do input para entrar com o valor da variavél, até ai blz, tudo como vc explicou anteriormente, Obs:. na tela de login coloquei a váriavel [usu_id] como saida, já que não preciso da mesma naquele momento certo?, o problema é que quando passo pelo formulário de login e acesso a aplicação que possui a váriavel definida, o Scriptcase retorna a seguinte mensagem de erro: “Falta definição das seguintes variáveis de ambiente: usu_id;”

Segue o fonte, utilizado na autenticação:

sc_lookup(sql_verifica, "
SELECT u.usu_id,
u.usu_login,
lower(f.fnc_descricao),
u.usu_nome,
u.usu_email
FROM usuarios u,
grupos g,
grupo_funcoes gf,
funcoes f
WHERE u.gru_id = g.gru_id
AND g.gru_id = gf.gru_id
AND f.fnc_id = gf.fnc_id
AND u.usu_login = ‘{txtLogin}’
AND u.usu_senha = ‘{txtSenha}’ ");

/* Erro no lookup /
if (FALSE === {sql_verifica}) {
sc_error_message(“Ocorreu um erro no acesso ao banco de dados.
”);
}
elseif (empty({sql_verifica})) { /
EOF */
sc_error_message(“Usuário ou senha inválida.
”);
}
else {
[usu_id] = {sql_verifica[0][0]};

 sc_lookup(sql_funcao, "
 SELECT lower(f.fnc_descricao)
 FROM   funcoes  f 
 WHERE  f.fnc_ativo = 1");

 /*Desabilita todas as funções do sistema*/	
 foreach({sql_funcao} as $funcao)
   {
 		sc_apl_status($funcao[0],'off');
   };

 
 /*Habilita todas as funções ou telas do sistema, com base nas permissões do grupo da pessoa que está logando*/	
 foreach({sql_verifica} as $verifica)
   {
 		sc_apl_status($verifica[2],'on');
   };


 /* Redireciona para o menu principal do sistema */
 sc_redir('menu_principal');

}

Será que tem alguma coisa errada ae???
mais uma vez muito obrigado!!!

execute a macro sc_set_global em [user_id].

Eu particularmente não crio variáveis em sessão (que deve ser utilizada por outras aplicações) dentro de condições(if´s, else´s).

Valew mesmo vou tentar fazer isso para ver se da certo…

Parabéns Diogo, funcionou valew mesmo…

Parabéns Harold vc quis dizer…

Pegando o gancho

Há modos de enviar dados via $_POST ???

Tenho um link externo que so aceita dados via $_POST. Como eu faço no ON VALIDATE do meu CONTROLE ???

Tentei no meu CONTROLE / ON VALIDATE da seguinte forma:

[identificacao] = {identificacao};
sc_set_global([identificacao]);

E no VARIAVEIS GLOBAIS, marquei como POST e SESSION, mais ele nao está passando os dados para o mesmo. Vejo os dados corretamente no EXIBIR DADOS EM SESSÃO, mais esses dados nao estão chegando ao link externo.

Qual a forma correta de enviar dados via $_POST no SC ???

Um abraço a todos e aguardo retorno …

sc_set_global([identificacao]) -> está criando em sessão.

[variavel] -> aqui vc pode passar por post configurando em aplicações/variáveis globais.

Boa tarde Mano

Na verdade, esse foi o primeiro modo que testei, mais nao funcionou. Coloquei no meu ONVALIDATE do meu controle da seguinte forma:

[identificacao] = {identificação};

No aplicações/variáveis globais coloquei como POST de SAIDA.

Ai coloquei o sc_redir para o link externo, mais essa variável não está sendo enviada para esse link externo. Onde e como eu poderia testar ?

Fiz de uma seguinte forma para testar. Fiz um formulario que passasse esses dados via GET, com os seguintes parametros:

<?php $identificacao = $_GET['identificacao'] ; session_start(); $_SESSION["VALOR_SESSAO"]=$valor; ?>
<!-- Parametros obrigatorios -->

Ai foi CORRETAMENTE.

Mais eu queria que do SC, nao passasse por esse formulario e sim para o https://linkexterno.cliente.com.br/comercio.comp direto, entende ?

Edu.
Crie um campo manualmente com o nome que a app que vai ser chamada já esteja usando para pegar o valor.
Acredito que ao submeter o formulário esses campos vão ser passados via post.

Haroldão

Os campos que criei no CONTROLE são exatamente iguais ao nome da app que está sendo redirecionada. Tinha pensado nisso anteriormente, justamente porque no submit do PHP (o formulario que está recebendo os dados via GET e enviando via POST) que está enviando, estava OK… Segui a mesma logica, fiz os campos manualmente igual ao do app chamado. Mesmo antes de criar o [identificacao] = {identificacao}; e dar POST de SAIDA nas aplicações / variaveis globais

E não está funcionando?

já tentou via Jquery? utilize $.post do jquery.

http://clares.wordpress.com/2011/01/05/utilizando-metodo-post-do-jquery-php/

Tentei também fazer um evento JAVASCRIPT do seguinte modo:

FORM / SUBMIT

$.post(‘https://comercio.locaweb.com.br/comercio.comp’,{identificacao: ‘123456’, modulo: ‘REDECARD’},function(data))

Depois chamei esse metodo no evento VALIDATE

sc_form_onsubmit()

Mais deu erro

USEI O EXEMPLO DESTA PAGINA: $.post(“test.php”, { name: “John”, time: “2pm” } );

http://api.jquery.com/jQuery.post/

TENTEI USAR VIA AJAX TB, mais dá o mesmo erro: conforme essa pagina http://forum.imasters.com.br/topic/429171-passar-array-via-post-jquery/

$.ajax({
type: “POST”,
url: “https://comercio.locaweb.com.br/comercio.comp”,
data: “identificacao[]=123456&modulo[]=REDECARD”
});

a url chamada, tem que ser aberta em uma nova pagina? ou pode ser chamada via ajax?