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
?>
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.