SC Server Worker (PWA) - Problema com atualização (CACHE)

Olá pessoal, estou com um problema de iniciante com o server work. Tenho uma aplicação blank (porque o layout é responsivo) “boba” que é uma tela de cadastro com 4 informações. Nome, login, email e senha. Em uma condição normal, eu uso duas camadas a da apresentação que recebe as 4 informações (os INPUTs) e uma outra blank que eu faço a validação (se login e email já existe na base). Essa outra recebe as 4 informações por ajax (metodo POST). O problema, dai eu estou talvez atribuindo indevidamente ao server work, que quando eu rejeito uma inclusão porque um dos 4 dados já existe, retorno para o formulário. Quando o user redigita (por exemplo) o login, o dado é reenviado (da pra ver pelo inspecionar) porém a segunda camada esta com a informação antiga (da ultima digitação), e olha que é metodo POST. O dado esta indo com certeza. Então fica a pergunta, porque a segunda camada esta mantendo o dado antigo mesmo recebendo um POST novo?

A segunda camada inicia com

$vform1a = $_POST[“form1a”];
$vform1a2a = $_POST[“form1a2a”];
$vform1a3aa = $_POST[“form1a3aa”];
$vform3a = $_POST[“form3a”];
$vform3a1 = $_POST[“form3a1”];

$msg=0;

// valida se login ja existe na base
$sqlA = “SELECT login FROM sec_users WHERE login = '”.sc_sql_injection($vform1a2a )."’";
sc_lookup(rsA,$sqlA);

if($rsA[0][0]){
$msg=3; // login ja existe
}

e assim por diante até o
echo json_encode($msg);

Esse problema está exclusivamente relacionado a seu código. Não tem a ver diretamente com a ferramenta.

Eu sugiro a contratação de um profissional com nível avançado para esses casos.

3 Curtidas

Haroldo, agradeço pela sua orientação de desistir, mas prefiro não jogar a toalha. Se eu conseguir descobrir o que ocorre, compartilho com você aqui no forum, Ai você não precisará recorrer também no futuro. E vamos a luta! Obrigado pessoal.

@ledumelo, eu sou só um membro entre milhares, cada um com sua opinião, não sugeri desistir, sugeri contratar um profissional de nível avançado.

O tópico está aberto a outras opiniões, sugestões e até de ajuda específica.

Como tenho grande tempo de vivência nesse fórum, eu acho que tópicos assim raramente encontram ajuda efetiva.

Longe de mim criar qualquer desapontamento pessoal ou desestimular o membro a desistir de uma solução a seu problema.

Quando o problema não está diretamente ligado a ferramenta mas sim a um código customizado criado pelo próprio membro e o código exposto aqui não aparenta erro visível necessitando de investigação mais profunda e demorada, minha sugestão geralmente é a procura de um profissional avançado para que a solução venha mais rápido.

São poucos aqui quem mais contribuem com ajudas efetivas.

Quando a resposta não for a esperada, nunca leve para o lado pessoal.

3 Curtidas

Reset as variáveis antes de voltar.

Olá Alexandre, obrigado pelo seu retorno. Tenho buscado também em outros foruns e uma queixa recorrente é justamente em relação ao cache no caso do uso do service work. Desde meados de 2015 com a disseminação mais forte do sw e uso de aplicações em off-line, lidar com essa questão tem sido bastante discutida. Ainda estou tentando entender o workingbox. Como estou usando uma camada do SC para uma aplicação PWA, estou buscando apoio nesse forum especifico. No meu caso, resetar (usar o metodo reset()) os campos não seria uma opção muito interessante porque eu devolvo para camada de apresentação a critica de campo por campo, nesse caso eu resetaria todos os campos. Acredito que a vocação do SC será estar cada vez mais aderente ao PWA que seria um passo para mobile. De qualquer forma, agradeço novamente pela ajuda.

O Scriptcase conceitualmente hoje não atende PWA, para aderir a PWA teria que ser 100% reescrito. O que duvido que aconteça. Já foi discutido isso aqui inúmeras vezes.

Uma aplicação Blank é praticamente um script php puro, com a vantagem de a conexão com banco de dados ser intrínseca e a utilização das macros, nada mais do que isso.

$_POST é sempre recriado na chamada da aplicação (ou seja fica apenas disponível para aquele script php chamado cujo qual foram passado parâmetros via post, é uma superglobal mas não de sessão genérica), seja ela por ajax ou por form action post, então acredito que a questão é o código.

Eu utilizo os requisitos e não tenho problemas do tipo.

Resetar o $_POST após sua utilização não afetaria o funcionamento do código mas também não resolveria a questão, pois em uma nova chamada o $_POST é recriado com seus novos valores.

$vform1a = $_POST[“form1a”];
$vform1a2a = $_POST[“form1a2a”];
$vform1a3aa = $_POST[“form1a3aa”];
$vform3a = $_POST[“form3a”];
$vform3a1 = $_POST[“form3a1”];

unset($_POST);

appA chama appB por ajax.post com parâmetro: param=123
appC chama appD por ajax.post com parâmetro: param= 456

appB --> $_POST[‘param’] contém 123
appD --> $_POST[‘param’] contém 456

Apesar do mesmo índice, $_POST contém valores diferentes pois essa superglobal é de utilização exclusiva durante a execução de cada aplicação chamada.

O QUE NÃO PODE:

Carregar o mesmo sistema mais de uma vez em abas diferentes no mesmo navegador, pois vai conflitar a sessão do PHP, assunto que todos sabem e discutido cansativamente aqui no forum.

Haroldo, agradeço pelo seu retorno.

Estou utilizando o SC, porque o backoffice da ap esta em sc. Quero aproveitar do sc justamente o encapsulamento em macros para reduzir codigo (visivel) e produtividade. Tirando isso, realmente não seria interessante essa opção. Acompanho o sc desde a versao 4 e vi grandes evoluções e adequações. Concordo que para adequarem o sap para pwa foi preciso criar novas camadas, imagine o prejuizo de reconstrui-lo. Mas é tudo uma questão de tempo. O SC é uma boa ferramenta e pela globalização vai se adequar ao PWA, Ionic etc.

Do ponto de vista de reset em variaveis nas duas camadas realmente não resolve o problema. Eu teria que ficar versionando a camada de processo para que ela fosse substituida no cache o que é bem complicado.

Vou continuar na busca.

Como moderador experiente no sc, se considerar que o tópico não tem vocação para evoluir nesse forum, por gentileza, peço que o encerre. Assim que eu descobrir o motivo do issue eu retornaria com a solução em um novo tópico mais adequado. Muito obrigado

1 Curtida

Deixe o tópico aberto, para que outros interajam. É sempre bom ler outras opiniões.

E quando achar e resolver o problema, retorna aqui e altera o título incluindo a palavra RESOLVIDO.