# Como corrigir quizzes que não salvam respostas no Tutor LMS

No Tutor LMS, o quiz não salvar respostas significa que o aluno envia mas a tentativa não aparece em Quiz Attempts ou vem com respostas em branco. Quase sempre vem de tabelas customizadas ausentes no banco, do limite max_input_vars estourado, ou do AJAX do Tutor bloqueado por segurança ou cache.

## O que é o quiz que não salva respostas no Tutor LMS?

O Tutor LMS grava cada tentativa de quiz em tabelas customizadas no banco (a tentativa em si e as respostas de cada pergunta), separadas das tabelas padrão do WordPress. Quando o aluno clica em enviar, o plugin dispara uma requisicao AJAX para o admin-ajax.php, calcula a nota e persiste a tentativa. O instrutor ve o resultado em Tutor LMS, Quiz Attempts. Quando algo nessa cadeia falha, o quiz parece funcionar para o aluno, mas a tentativa não e registrada ou chega ao painel com as respostas vazias e a nota zerada.

## Como identificar

- O aluno responde, clica em 'Submit Quiz' e a tela trava no botão de envio ou recarrega sem mostrar o resultado.
- A tentativa não aparece em Tutor LMS, Quiz Attempts, ou aparece na aba 'Pending' com as colunas de resposta em branco e nota zero.
- No console do navegador (F12, aba Rede) a chamada admin-ajax.php do Tutor retorna 400, 403 ou 500 ao enviar o quiz.
- No builder do curso, ao salvar uma pergunta com muitas opções, ela some ou volta sem as alternativas (o quiz não guarda a própria configuração).
- O log mostra 'Table tutor_quiz_attempts doesnt exist' ou erro de tabela ausente ao abrir a tela de tentativas.

**Antes de começar:** Faca backup do banco antes de importar SQL ou recriar tabelas pelo phpMyAdmin, e teste em staging quando o site estiver no ar. Nunca remova o nonce do envio do quiz para 'resolver' o AJAX: isso abre brecha de CSRF nas tentativas dos alunos.

## Como prevenir

- Após instalar ou migrar o Tutor LMS, confirme em phpMyAdmin que as tabelas wp_tutor_quiz_attempts e wp_tutor_quiz_attempt_answers existem.
- Mantenha o max_input_vars do PHP em 5000 ou mais em sites com muitos quizzes e perguntas longas.
- Mantenha o JavaScript do Tutor fora da minificacao e as páginas de quiz e licao fora do cache, e refaca uma tentativa de teste após cada atualização de plugin, tema ou regra de segurança.

Erros relacionados

- [Como corrigir o progresso do aluno que não atualiza no Tutor LMS](https://full.services/wp-fixer/corrigir-progresso-aluno-tutor-lms/)
- [Como corrigir o cache que quebra páginas de quiz entre Tutor LMS e WP Rocket](https://full.services/wp-fixer/corrigir-cache-quiz-tutor-lms-wp-rocket/)
- [Como corrigir upload de arquivos em tarefas no Tutor LMS](https://full.services/wp-fixer/corrigir-upload-assignment-tutor-lms/)

## Causa

- Tabelas customizadas do Tutor (wp_tutor_quiz_attempts e wp_tutor_quiz_attempt_answers) não foram criadas na ativacao, situacao documentada pela Themeum em hosts que pulam o processo de criação de tabelas.
- Limite max_input_vars do PHP no padrão 1000: quizzes com muitas perguntas e opções excedem esse número de campos no POST e o PHP trunca os dados, perdendo respostas e configurações do builder.
- Requisicoes AJAX do Tutor (acoes tutor_quiz_attempt_save e tutor_save_quiz no admin-ajax.php) bloqueadas por firewall, WAF ou plugin de segurança, retornando 403 antes de gravar a tentativa.
- Plugin de cache ou de otimização minificando o JavaScript do Tutor ou servindo um nonce expirado na página do quiz, fazendo o envio falhar com 'Invalid nonce' silencioso.
- Limite de execução do PHP (max_execution_time ou memory_limit) baixo, cortando o calculo da nota em quizzes longos antes da gravacao concluir.

## Como resolver

1. Confirme que as tabelas do Tutor existem: abra o phpMyAdmin do host e procure pelas tabelas de tentativa de quiz no banco. Se elas não existirem, e a causa documentada pela Themeum para hosts que pulam a criação na ativacao.

```
wp_tutor_quiz_attempts
wp_tutor_quiz_attempt_answers
```

2. Recrie as tabelas reativando o plugin: desative e reative o Tutor LMS para disparar o instalador, que tenta criar as tabelas ausentes. Em hosts onde isso falha, importe o SQL oficial das tabelas pelo phpMyAdmin conforme a doc de troubleshooting.

```
Plugins -> Tutor LMS -> Desativar -> Ativar
```

3. Aumente o max_input_vars do PHP: quizzes grandes enviam mais de 1000 campos por POST. Eleve o limite no php.ini ou no .htaccess e reinicie o PHP, depois salve o quiz de novo e refaca uma tentativa de teste.

```
max_input_vars = 5000
; em .htaccess: php_value max_input_vars 5000
```

4. Libere o AJAX do Tutor na segurança: no plugin de segurança ou no WAF do host, libere as chamadas ao admin-ajax.php usadas pelo Tutor para salvar tentativa. Abra um quiz, pressione F12, va na aba Rede e confirme que o envio retorna 200, não 403.

```
tutor_quiz_attempt_save
tutor_save_quiz
```

5. Tire o quiz do cache e da minificacao de JS: no plugin de cache, exclua as páginas de licao e quiz do cache e remova o JavaScript do Tutor da minificacao e combinacao. Isso evita nonce expirado e script quebrado no envio.

```
/wp-content/plugins/tutor/assets/js/
```

6. Suba os limites de execução do PHP: se a tentativa some so em quizzes longos, aumente o tempo e a memória do PHP para que o calculo da nota termine antes de gravar.

```
max_execution_time = 120
memory_limit = 256M
```


## Código

```apache
# .htaccess na raiz do WordPress — eleva os limites de POST que o Tutor LMS
# usa para salvar a tentativa de quiz (campos por requisicao, tempo e memoria).
# Use isto quando o host roda PHP como modulo Apache (mod_php).
php_value max_input_vars 5000
php_value max_input_time 120
php_value max_execution_time 120
php_value memory_limit 256M
php_value post_max_size 32M
```

## Perguntas frequentes

### Por que o Tutor LMS quiz não salva respostas mesmo com o aluno enviando?

Na maioria dos casos faltam as tabelas customizadas do Tutor no banco, o max_input_vars do PHP truncou o envio, ou a chamada AJAX para o admin-ajax.php foi bloqueada por segurança. Comece confirmando as tabelas no phpMyAdmin e olhando o retorno da requisicao no console.

### Onde vejo as tentativas de quiz dos alunos no Tutor LMS?

Em Tutor LMS, Quiz Attempts. La aparecem as abas All, Passed, Failed e Pending, com a nota e as respostas de cada aluno. Se a tentativa não aparece ou vem com respostas em branco, o problema esta na gravacao, não na exibicao.

### Como sei se faltam tabelas do Tutor no banco de dados?

Abra o phpMyAdmin e procure por wp_tutor_quiz_attempts e wp_tutor_quiz_attempt_answers. A Themeum documenta que alguns hosts pulam a criação dessas tabelas na ativacao, e sem elas o quiz não tem onde gravar a tentativa.

### O que o max_input_vars tem a ver com o quiz não salvar?

Cada pergunta e opção do quiz vira um campo no POST. No padrão de 1000, um quiz grande estoura esse limite e o PHP descarta os campos extras, perdendo respostas e configurações do builder. Subir o max_input_vars para 5000 resolve esse corte.

### Um plugin de segurança pode impedir o quiz de salvar?

Sim. Firewalls e WAFs costumam bloquear chamadas ao admin-ajax.php, inclusive as acoes tutor_quiz_attempt_save e tutor_save_quiz. Se o envio do quiz retorna 403 no console, libere essas rotas na regra de segurança.

### O cache pode fazer o aluno perder a tentativa de quiz?

Pode. Se o cache serve um nonce expirado ou a minificacao quebra o JavaScript do Tutor, o envio falha silenciosamente. Exclua as páginas de quiz do cache e tire o JS do Tutor da minificacao para evitar isso.

### Reativar o plugin recria as tabelas perdidas?

Em muitos hosts sim: desativar e reativar o Tutor dispara o instalador, que tenta criar as tabelas ausentes. Onde o host bloqueia a criação automática, e preciso importar o SQL oficial das tabelas pelo phpMyAdmin.

### Esse problema apaga as tentativas antigas dos alunos?

Recriar tabelas que nunca existiram não apaga dados, porque não havia o que perder. Mas qualquer operacao no banco pede backup antes, já que importar SQL ou recriar tabelas em um banco com dados pode sobrescrever registros existentes.

**Fonte:** [Tutor LMS — Can not create quiz options (Troubleshooting)](https://docs.themeum.com/tutor-lms/troubleshooting/can-not-create-quiz-options/)
