Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alberto Beagá

Há como bloquear o cadastro duplicado?

Recommended Posts

Criei um sistema de vendas online onde estou tendo problemas às vezes pois quando um internauta realiza um pedido, acaba este pedindo repetindo diversas vezes e assim congestionando todo o sistema ...

 

Não sei se é porque ele fica com a página aberta ... porque ele clica em voltar ... algo do tipo... só não descobri o motivo.

 

 

Há como enviar uma só vez?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa fazer a verificação antes do insert. Faça um select buscando o registro que está sendo inserido, se encontrar, você emite o aviso de registro já inserido. Do contrário, você cadastra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

Qual banco você usa? Se for Mysql, você pode fazer o bloqueio através do uso de chaves únicas. Armazene a data e a hora que o usuário comprou, caso o id do usuário e a hora de compra forem muito próximas, você não finaliza o pedido.

Para este método ser eficaz, aconselho que você bloqueie através dos minutos.

Por exemplo, se um cara comprou o produto "X" às 12:00 do dia 25/03/2015, e tentar comprar esse mesmo produto no mesmo dia às 12:05, você bloqueia.

Para mais informações sobre chave única http://forum.imasters.com.br/topic/198896-primary-key-x-index-x-unique-diferencas/

Abraços, Diogo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa fazer a verificação antes do insert. Faça um select buscando o registro que está sendo inserido, se encontrar, você emite o aviso de registro já inserido. Do contrário, você cadastra.

 

Alaerte, acho que este método não seria eficiente, pois como ele reconheceria que o pedido atualmente feito coincide com um já registrado no banco?

Compartilhar este post


Link para o post
Compartilhar em outros sites
um internauta realiza um pedido, acaba este pedindo repetindo diversas vezes e assim congestionando todo o sistema

 

 

Acho que deve tratar a causa do erro e não o efeito

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Acho que deve tratar a causa do erro e não o efeito

Concordo... o que o cara quer é fazer uma gambiarra para esconder o problema do sistema, que na realidade ele aparentemente não sabe qual é, ou seja, que indica que a fase de arquitetura e testes foi totalmente ignorada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é porque ele fica com a página aberta ... porque ele clica em voltar ... algo do tipo... só não descobri o motivo.

Primeiro encontre o motivo. Depois corrija o erro na causa do problema.

 

Você pode rastrear a execução criando Logs. Assim você vê o que e onde está ocorrendo cada coisa.

 

É bem provável que o usuário esteja recarregando a página que faz o cadastro. Uma forma extremamente simples e funcional de evitar isso é, no final do cadastro, redirecionar para uma página de sucesso. Assim, se ele atualizar a página, apenas verá a mensagem de novo, sem criar nenhum novo registro no banco de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Alaerte, acho que este método não seria eficiente, pois como ele reconheceria que o pedido atualmente feito coincide com um já registrado no banco?

 

Controlado pelo ID da sessão. Se fosse o caso. :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro encontre o motivo. Depois corrija o erro na causa do problema.

 

Você pode rastrear a execução criando Logs. Assim você vê o que e onde está ocorrendo cada coisa.

 

É bem provável que o usuário esteja recarregando a página que faz o cadastro. Uma forma extremamente simples e funcional de evitar isso é, no final do cadastro, redirecionar para uma página de sucesso. Assim, se ele atualizar a página, apenas verá a mensagem de novo, sem criar nenhum novo registro no banco de dados

 

 

Mas Beraldo, veja só:

Já fiz isto, redirecionei para uma página assim que fosse realizado o cadastro... no caso a página inicial do site, porém não sei por qual motivo ocorre inúmeros cadastros idênticos sequenciais ...

Ontem por exemplo, um cadastro foi repetido com ID diferentes 6 vezes, sendo tudo em um prazo de aproximadamente 3 minutos. Outros casos ocorrem com uma faixa de tempo maior, como por exemplo, 20 minutos ou mais.

 

Quanto ao LOG que você diz, como eu crio ele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas Beraldo, veja só:

Já fiz isto, redirecionei para uma página assim que fosse realizado o cadastro... no caso a página inicial do site, porém não sei por qual motivo ocorre inúmeros cadastros idênticos sequenciais ...

Ontem por exemplo, um cadastro foi repetido com ID diferentes 6 vezes, sendo tudo em um prazo de aproximadamente 3 minutos. Outros casos ocorrem com uma faixa de tempo maior, como por exemplo, 20 minutos ou mais.

Exatamente por isso que insisto que você deve procurar a causa do problema.

Senão vai ficar igual àquela piada do cara que flagra a mulher o traindo com outro no sofá... então ele resolve vender o sofá...

 

Quanto ao LOG que você diz, como eu crio ele?

Viu o link que mandei?

A ideia está toda descrita lá

Você cria mensagens de logs nos pontos dos scripts onde quer fazer um debug

Compartilhar este post


Link para o post
Compartilhar em outros sites

SImples, estava com esse problema e fiz o seguinte.

 

No arquivo de cadastro, você só vai inserir se $_SESSION['check'] = " " caso esteja vazio, você realiza o cadastro e confere, se o cadastro ocorreu certo, ai vc preenche $_SESSION['check'] = "tudo ok" assim, se a pessoa atualizar a página, não vai fazer o cadastro, pois você já preencheu a sessão. Ah.. mas lembre-se de na tela do cadasto, vc esvaziar isso logo no inicio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo... o que o cara quer é fazer uma gambiarra para esconder o problema do sistema, que na realidade ele aparentemente não sabe qual é, ou seja, que indica que a fase de arquitetura e testes foi totalmente ignorada.

 

Então, estive analisando de perto alguns erros e percebi que na maioria das vezes o cadastro em duplicidade ou até mais é devido ao usuário clicar em voltar no navegador...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.