2
I have a code for when a logout in the system, to be registered in a table of the database.
I call this file that logs out when I click the quit button and also when I close the window in the browser.
The problem is that sometimes insert records twice.
I don’t know if the problem is the problem. I’ve tried several ways to fix it, but all without success.
I’ll leave the code below:
//Código JavaScript para chamar o arquivo logout.php quando o navegador é fechado
window.onbeforeunload = function() {
$.get("../banco/validador-de-login/logout.php", function(data) {
return false;
});
}
<!-- Arquivo logout.php -->
<?php
require_once("../conexao/conexao-com-banco.php");
session_start(); //iniciamos a sessão que foi aberta
require_once("../login-logout/login.php");
$usuario = $_SESSION['usuario'];
//Esse IF verifica se a sessão está ativa. Só chama a função se a sessão está ativa.
if(session_status() == PHP_SESSION_ACTIVE)
{
pegarLogout($conecta, $usuario);
}
session_destroy(); //destruimos a sessão ;)
session_unset(); //limpamos as variaveis globais das sessões
/*aqui você pode redirecionar para uma determinada página*/
/*
echo "<script> document.location.href='../../index.php';</script>";
*/
header('location:../../index.php');
?>
<!-- Arquivo login.php -->
<!-- Arquivo que contém as funçõe que realizam o insert -->
<?php
/* Função para realizar o controle de login de usuários */
function pegarLogin($conexao, $user)
{
$query_login = "INSERT INTO log(tipo_reg,horario,usuario,data) VALUES('LOGIN',CURTIME(),'$user',CURDATE())";
$resultado_query_login = mysqli_query($conexao, $query_login);
if(!$resultado_query_login) /*Verifica se o resultado deu certo ou errado*/
{
/*Se deu erro, então exibe a mensagem do sql sobre o erro */
die("Falha no registro do login: " . mysqli_error($conexao));
}
//echo "<BR> Concluído a atualização das atividades com sucesso. <BR> Quantidade de atividades atualizadas: " . $contador;
}
/* Função para realizar o controle de login de usuários */
function pegarLogout($conexao_2, $user)
{
$query_login_2 = "INSERT INTO log(tipo_reg,horario,usuario,data) VALUES('LOGOUT',CURTIME(),'$user',CURDATE())";
$resultado_query_login_2 = mysqli_query($conexao_2, $query_login_2);
if(!$resultado_query_login_2) /*Verifica se o resultado deu certo ou errado*/
{
/*Se deu erro, então exibe a mensagem do sql sobre o erro */
die("Falha no registro do login: " . mysqli_error($conexao_2));
}
//echo "<BR> Concluído a atualização das atividades com sucesso. <BR> Quantidade de atividades atualizadas: " . $contador;
}
?>
<!-- Botão de deslogar que fica no menu da página HTML -->
<a class="text-light dropdown-item" href="../banco/validador-de-login/logout.php">Sair <i class="fas fa-sign-out-alt"></i></a>
Table image
Note that a second insertion is made with the column that keeps the user name blank.
I don’t know where I could be going wrong. If you could help me, I’d be grateful.
If the guy clicks the "exit" button and closes the window, it will not register 2x?
– Sam
I think not, because the script of this function is not called in the index.
– Gato de Schrödinger
@Sam, lie. I checked here and is running javascript also when I close the "Unzip" button. So it is running twice.
– Gato de Schrödinger