estou com uma dúvida que talvez não seja algo fora do normal, enfim eu tenho um site onde o usuário faz um login e senha e é armazenado isto em variáveis da sessão, porém tenho dois problemas, esse site tem um chat onde o usuário fica online toda vez que ele se loga, ao ele digitar login e senha e ir para uma página de validação, nesta mesma página tem uma query que pelo nome de usuário faz uma update na tabela do chat e troca o campo status de off para on. e uma página logout.php que faz o inverso ao ele sair ele faz um update de on para off. Mas quase todo mundo esquece de clicar me sair no site. A maioria apenas fecha o navegador. Eu preciso de duas coisas, uma é como eu faço o logout do cara por tempo de inatividade e fazendo o update na tabela chat de on para off, e como faço esse mesmo logout e update na tabela chat quando fechar o browser ao invés de clicar em sair.
Abaixo segue os codigos:
seguranca.php
<?php
// Configurações do Script
// ==============================
$_SG['conectaServidor'] = true; // Abre uma conexão com o servidor MySQL?
$_SG['abreSessao'] = true; // Inicia a sessão com um session_start()?
$_SG['caseSensitive'] = false; // Usar case-sensitive? Onde 'thiago' é diferente de 'THIAGO'
$_SG['validaSempre'] = true; // Deseja validar o usuário e a senha a cada carregamento de página?
// Evita que, ao mudar os dados do usuário no banco de dado o mesmo contiue logado.
$_SG['servidor'] = 'localhost'; // Servidor MySQL
$_SG['usuario'] = '.....'; // Usuário MySQL
$_SG['senha'] = '......'; // Senha MySQL
$_SG['banco'] = '......'; // Banco de dados MySQL
$_SG['paginaLogin'] = 'index2'; // Página de login
$_SG['tabela'] = 'usuarios'; // Nome da tabela onde os usuários são salvos
// ==============================
// ======================================
// ~ Não edite a partir deste ponto ~
// ======================================
// Verifica se precisa fazer a conexão com o MySQL
if ($_SG['conectaServidor'] == true) {
$_SG['link'] = mysql_connect($_SG['servidor'], $_SG['usuario'], $_SG['senha']) or die("MySQL: Não foi possível conectar-se ao servidor [".$_SG['servidor']."].");
mysql_select_db($_SG['banco'], $_SG['link']) or die("MySQL: Não foi possível conectar-se ao banco de dados [".$_SG['banco']."].");
}
if ($_SG['abreSessao'] == true) {
session_start(); //inicia a sessão
$temposessao = 60; //em segundos
session_start();
if ($_SESSION["sessiontime"]) {
if ($_SESSION["sessiontime"] < (time() - $temposessao)) {
session_unset();
header("Location: ".$_SG['paginaLogin']);
}
}
}
function validaUsuario($usuario, $senha) {
global $_SG;
$cS = ($_SG['caseSensitive']) ? 'BINARY' : '';
// Usa a função addslashes para escapar as aspas
$nusuario = addslashes($usuario);
$nsenha = addslashes($senha);
// Monta uma consulta SQL (query) para procurar um usuário
$sql = "SELECT `id`, `nome` FROM `".$_SG['tabela']."` WHERE ".$cS." `usuario` = '".$nusuario."' AND ".$cS." `senha` = '".$nsenha."' LIMIT 1";
$query = mysql_query($sql);
$resultado = mysql_fetch_assoc($query);
// Verifica se encontrou algum registro
if (empty($resultado)) {
// Nenhum registro foi encontrado => o usuário é inválido
return false;
} else {
// O registro foi encontrado => o usuário é valido
// Definimos dois valores na sessão com os dados do usuário
$_SESSION['usuarioID'] = $resultado['id']; // Pega o valor da coluna 'id do registro encontrado no MySQL
$_SESSION['usuarioNome'] = $resultado['nome'];
$nomes = explode(" ", $resultado['nome']);
$geral = $nomes[0].'-'.$nomes[1];
$_SESSION['usuarioChat'] = $geral;
// Pega o valor da coluna 'nome' do registro encontrado no MySQL
// Verifica a opção se sempre validar o login
if ($_SG['validaSempre'] == true) {
// Definimos dois valores na sessão com os dados do login
$_SESSION['usuarioLogin'] = $usuario;
$_SESSION['usuarioSenha'] = $senha;
}
return true;
}
}
/**
* Função que protege uma página
*/
function protegePagina() {
global $_SG;
if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
// Não há usuário logado, manda pra página de login
expulsaVisitante();
} else if (!isset($_SESSION['usuarioID']) OR !isset($_SESSION['usuarioNome'])) {
// Há usuário logado, verifica se precisa validar o login novamente
if ($_SG['validaSempre'] == true) {
// Verifica se os dados salvos na sessão batem com os dados do banco de dados
if (!validaUsuario($_SESSION['usuarioLogin'], $_SESSION['usuarioSenha'])) {
// Os dados não batem, manda pra tela de login
expulsaVisitante();
}
}
}
}/**
* Função para expulsar um visitante
*/
function expulsaVisitante() {
global $_SG;
// Remove as variáveis da sessão (caso elas existam)
unset($_SESSION['usuarioID'], $_SESSION['usuarioNome'], $_SESSION['usuarioLogin'], $_SESSION['usuarioSenha']);
// Manda pra tela de login
header("Location: ".$_SG['paginaLogin']);
}
?>
valida.php
<?php
include("seguranca.php");
// Verifica se um formulário foi enviado
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Salva duas variáveis com o que foi digitado no formulário
// Detalhe: faz uma verificação com isset() pra saber se o campo foi preenchido
$usuario = (isset($_POST['usuario'])) ? $_POST['usuario'] : '';
$senha = (isset($_POST['senha2'])) ? $_POST['senha2'] : '';
// Utiliza uma função criada no seguranca.php pra validar os dados digitados
if (validaUsuario($usuario, $senha) == true) {
// O usuário e a senha digitados foram validados, manda pra página interna
include('conexao.php');
$conexao = mysql_connect($server, $user, $pass) or die ("Erro na conexao com DB!");
mysql_select_db($db, $conexao) or die ("DB inexistente");
$sql005 = mysql_query("SELECT id FROM usuarios WHERE usuario='$usuario'");
$row = mysql_fetch_assoc($sql005);
$user_id = $row['id'];
$sql009 = mysql_query("UPDATE amigos SET status='on' WHERE id_amigo='$user_id'");
header("Location: points");
} else {
// O usuário e/ou a senha são inválidos, manda de volta pro form de login
// Para alterar o endereço da página de login, verifique o arquivo seguranca.php
echo "<script>
$('#confirm').jqm({
overlay: 60,
overlayClass: 'overlay',
modal: true,
trigger: false
});
confirm('Usuário e senha inválidos! Cadastre-se!', 'index2');
</script>";
}
}
?>
e em todas as páginas coloco este código que é a verificação de segurança:
<?php
include("seguranca.php"); // Inclui o arquivo com o sistema de segurança
protegePagina(); // Chama a função que protege a página
?>
Utilizamos cookies e tecnologias semelhantes de acordo com a nossa Política de Privacidade, e ao continuar navegando, você concorda com estas condições.
Pergunta
Diogo Rebello
Bom dia pessoal,
estou com uma dúvida que talvez não seja algo fora do normal, enfim eu tenho um site onde o usuário faz um login e senha e é armazenado isto em variáveis da sessão, porém tenho dois problemas, esse site tem um chat onde o usuário fica online toda vez que ele se loga, ao ele digitar login e senha e ir para uma página de validação, nesta mesma página tem uma query que pelo nome de usuário faz uma update na tabela do chat e troca o campo status de off para on. e uma página logout.php que faz o inverso ao ele sair ele faz um update de on para off. Mas quase todo mundo esquece de clicar me sair no site. A maioria apenas fecha o navegador. Eu preciso de duas coisas, uma é como eu faço o logout do cara por tempo de inatividade e fazendo o update na tabela chat de on para off, e como faço esse mesmo logout e update na tabela chat quando fechar o browser ao invés de clicar em sair.
Abaixo segue os codigos:
seguranca.php
valida.php e em todas as páginas coloco este código que é a verificação de segurança:Dese já obrigado a quem puder me ajudar pessoal!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.