O objetivo:
Você quer que, ao carregar a página, o sistema cheque no banco de dados se o usuário precisa fazer alguma ação (como alterar a senha). Se sim, exibe um modal Bootstrap automaticamente. Se não, vida que segue.
Estrutura do banco (resumo rápido)
Suponha uma tabela de usuários assim:
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
senha VARCHAR(100),
alterar TINYINT(1) DEFAULT 0
);
Se alterar = 1
, o sistema vai mostrar o modal.
Código PHP completo (sem PDO, direto com mysqli
)
<?php
// Conexão com o banco
$conn = mysqli_connect("localhost", "usuario", "senha", "devdata");
if (!$conn) {
die("Erro de conexão: " . mysqli_connect_error());
}
// ID do usuário atual (exemplo fixo, mas na prática vem da sessão)
$usuario_id = 123;
// Consulta a flag
$sql = "SELECT alterar FROM usuarios WHERE id = $usuario_id LIMIT 1";
$result = mysqli_query($conn, $sql);
$dados = mysqli_fetch_assoc($result);
// Define se o modal deve ser exibido
$mostrar_modal = ($dados && $dados['alterar'] == 1);
// Opcional: reseta a flag após mostrar o modal
if ($mostrar_modal) {
mysqli_query($conn, "UPDATE usuarios SET alterar = 0 WHERE id = $usuario_id");
}
?>
HTML do Modal
<div class="modal fade" id="senhaModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Alterar Senha</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fechar"></button>
</div>
<div class="modal-body">
Sua senha precisa ser alterada. Clique abaixo para continuar.
<br><br>
<a href="/alterar-senha.php" class="btn btn-primary">Alterar agora</a>
</div>
</div>
</div>
</div>
Script que mostra o modal automaticamente
Coloque antes do fechamento do </body>
:
<?php if ($mostrar_modal): ?>
<script>
window.onload = function () {
var modal = new bootstrap.Modal(document.getElementById('senhaModal'));
modal.show();
};
</script>
<?php endif; ?>
Resultado final
- Se
usuarios.alterar = 1
, o modal aparece automaticamente. - Depois de exibir, o valor é zerado.
- Tudo feito sem PDO, sem jQuery, sem ícones, sem plugins externos.
- Puro Bootstrap + PHP raiz + MySQL.