Ir para conteúdo

Arquivado

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

André Maretti

Preciso desabilitar o Botão Voltar do Navegador

Recommended Posts

Pessoal...

 

Vou tentar explicar em detalhes o meu problema pra ver se alguém pode me ajudar.. pq a coisa está feia... rsrs

 

Estou desenvolvendo um sistema de perguntas... resumindo são 10 perguntas onde o usuário tem 90 segundos para responder cada uma... caso ele não responda em 90s o sistema considera errado e passa para a próxima questão.

 

O sistema todo está funcionando corretamente... exceto por uma exigencia:

O usuário não pode pular (avançar) nenhuma questão sem responder... e tb não pode Voltar nenhuma questão.

 

Aí está o problema... Impedir que ele avance foi fácil... hehehe.. mas impedir q ele volte é q está complicado...

 

Pesquisei muito na internet e principalmente aqui no forum e cheguei a conclusão de que não há nenhum comando JavaScript milagroso que desabilite o botão Voltar do navegador.

 

Então... criei uma lógica onde pudesse controlar em que pergunta o usuário está para que, caso ele volte, o sistema dê uma mensagem avisando que é proibido e redirecione ele para a pergunta em q estava.

 

A idéia é a seguinte:

No meu banco de dados..;. tenho uma tabela chamada "dados_participantes"... com os seguintes campos:

codigo, nome, cpf, qtd_vezes, pergunta_atual

 

Quando o usuário entra na primeira pergunta o sistema coloca o campo "pergunta_atual" dele como 1.

Quando ele entrar na segunda pergunta o sistema coloca o campo "pergunta_atual" dele como 2.

Na terceira pergunta pergunta_atual = 3... e assim por diante.

 

No arquivo php da pergunta1... eu faço uma verificação para ver se o "pergunta_atual" daquele usuário é maior q 1... se for, significa que ele já passou para a pergunta 2, então dou um aviso pra ele... e redireciono ele para a pergunta em q ele estava. Com isso eu evito q ele volte nas perguntas.

 

Na teoria... parece lindo.. hehehe... mas na prática está acontecendo o seguinte.

1)O usuário entra na pergunta 1 pela primeira vez...

2)O sistema coloca no registro dele o campo "pergunta_atual" = 1.

3)Quando o usuário avança para o arquivo da pergunta2.php.... esse arquivo escreve na tabela "pergunta_atual"=2.

4)Se o usuário clicar no Voltar no navegador... ele voltará para o arquivo pergunta1.php, onde há um script em PHP q lê o conteúdo do campo "pergunta_atual" pra ver se ele é maior q 1... no caso... deveria ser... rs.. já q já foi aberto o pergunta2.php... E ele é igual a 2 mesmo... pq eu abri o banco de dados e olhei a tabela e realmente estava com o número 2 lá. MAS.... quando o script do arquivo pergunta1.php faz a leitura na tabela... vem, estranhamente, o valor 1... ou seja.. vem o valor errado... já q nesse momento na tabela está o valor 2.

 

Não sei se consegui ser claro na explicação... mas o problema é q quando o usuário volta para a pergunta1.php ele lê o valor incorreto na tabela... ele lê o valor 1.. sendo q tem o valor 2 no campo "pergunta_atual".

 

Alguém tem alguma idéia porque isso acontece?

 

Fiz um exemplo simples pra exemplificar o problema....

Pergunta1_teste.php

<?

//acessa do banco de dados
include("acesso_bd.php");

$sql = mysql_query("SELECT * FROM dados_participantes WHERE cpf = '31747619809'");

$valor = mysql_fetch_array($sql);

if($valor[pergunta_atual] > 0){
	echo("Você não pode voltar nas perguntas!");
}
?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<a href="pergunta2_teste.php"> pergunta 2 </a>

</body>
</html>

Pergunta2_teste_php

<?

//acessa do banco de dados
include("acesso_bd.php");

$sql = mysql_query("UPDATE dados_participantes SET pergunta_atual = '2' WHERE cpf = '31747619809'");

?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

Você está na Pergunta 2.

</body>
</html>

Se puderem dar uma olhada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

São 10 perguntas?

Então de um numero para elas, tipo.

 

Pergunta 1

Pergunta 2

Pergunta 3

.....

 

Aí tu vai salvando em uma SESSION em qual pergunta ele esta.

 

Se ele volta, voce faz uma verificação, mais ou menos assim.

 

if ( $_SESSION['pergunta'] > $perguntaAtual ) {

echo 'Voce não pode voltar';
exit();

}

Mais ou menos isso :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de usar apenas sessions no caso dele, é que ai o usuário poderia apagar isso, e burlar todo o sistema.

E mesmo que usasse Javascript, você poderia jogar num popup, e desativar as teclas perigosas como ALT( ALT + seta esquerda, volta uma página), mas o usuário pode desativar o Javascript, e isso vai por água abaixo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu tive uma idéia... mas seria interessante a opinião de todos.

 

Você faz todas a atualizações usando AJAX. Ou seja, ele vai ficar sempre na mesma página, por exemplo respostas.php. Daí se ele clicar em voltar, vai sair das respostas...

 

Para ir para as próximas respostas, você faz também com ajax. Daí se o cara desabilitar o Javascript, não vai pra próxima pergunta... E ele fica preso...

 

Não consegui ter nenhuma outra idéia... Espero que seja útil.

 

Carlos Eduardo

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.