Fala gente,
Um recurso muito bom de segurança é a criação de LOGs que são registro de atividades. Você pode criar registro de todos os tipo de atividades: visitas, cadastros, tentativas de acesso, erros do PHP e muito mais.
O que você vai precisar pra criar um sisteminha simples de LOGs pro seu site é de apenas uma tabela no banco de dados MySQL:
DROP TABLE IF EXISTS `logs`; CREATE TABLE IF NOT EXISTS `logs` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `hora` datetime NOT NULL, `ip` varchar(15) NOT NULL, `mensagem` text COLLATE latin1_general_ci NOT NULL, PRIMARY KEY (`id`), KEY `hora` (`hora`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Vale ressaltar que você não precisa gravar os LOGs especificamente no banco de dados, você pode criar arquivos e pastas pra isso também. Falarei sobre como criar arquivos e pastas dinamicamente (pelo PHP) em outro tópico.
Tendo a tabela já criada no seu banco de dados, você só precisa criar uma função para agilizar as coisas:
<?php
/**
* Função para salvar mensagens de LOG no MySQL
*
* @param string $mensagem - A mensagem a ser salva
*
* @return bool - Se a mensagem foi salva ou não (true/false)
*/
function salvaLog($mensagem) {
$ip = $_SERVER['REMOTE_ADDR']; // Salva o IP do visitante
$hora = date('Y-m-d H:i:s'); // Salva a data e hora atual (formato MySQL)
// Usamos o mysql_escape_string() para poder inserir a mensagem no banco
// sem ter problemas com aspas e outros caracteres
$mensagem = mysql_escape_string($mensagem);
// Monta a query para inserir o log no sistema
$sql = "INSERT INTO `logs` VALUES (NULL, '".$hora."', '".$ip."', '".$mensagem."')";
if (mysql_query($sql)) {
return true;
} else {
return false;
}
}
?>
Com essa função você pode registrar qualquer tipo de evento no seu MySQL e depois, organizando-os por data e/ou IP saber exatamente o que aconteceu no seu sistema, vindo de onde, e como aconteceu.
Para usar a função e salvar uma mensagem de LOG, é só fazer assim:
<?php $mensagem= "Nova visita no site"; salvaLog($mensagem); ?>
Vale lembrar que o script acima só vai funcionar se você abrir uma conexão com o MySQL e o banco de dados antes de tentar salvar uma mensagem de LOG.
A função criada também retorna true ou false (verdadeiro ou falso) para caso você precise fazer uma verificação se o LOG foi salvo com sucesso:
<?php
$mensagem = "Nova visita no site";
if (salvaLog($mensagem)) {
echo "O LOG foi salvo com sucesso!";
} else {
echo "Não foi possível salvar o LOG!";
}
?>
Sugiro que salvem LOGs – principalmente – de todas as tentativas de login. Salve LOGs também das alterações, cadastros e deleções de registros do sistema (produtos/categorias/lojas/notícias e etc.). Isso vai tornar a sua aplicação mais segura e quando algo der errado você vai poder encontrar “o pai da criança” com mais facilidade.
Se você já tiver feito um sistema de login no seu site (se não, veja aqui como fazer um), salve também o usuário atual, como por exemplo:
“[ Usuário: Fulano ] Cadastrou uma notícia“
Com isso, você tem o nome do usuário usado, o IP e a data e hora de onde/quando/como foi executada a ação de cadastro. Muito útil, não?
Até a próxima!
Documentação Oficial:
- Função date() » Função para formatar datas
- Função mysql_escape_string() » Prepara uma string para o MySQL
- Função mysql_query() » Executa uma query (consulta SQL)
Você também vai gostar de ler:
- Criando Sistemas Seguros – Parte 1
- Criando um sistema de login com PHP e MySQL
- Contador de visitantes online em PHP e MySQL
- Contador de visitas usando o MySQL
- Bloqueando visitantes pelo IP com MySQL e PHP
Postado em MySQL, PHP, Tutoriais
Com as tags Banco de Dados, Conexão, Datas, Documentação, Erros, Evento, Eventos, INSERT, Login, LOGs, MySQL, Pastas, PHP, Scripts, Segurança, Sistema, SQL, Visitas
Escrito por Thiago Belem
Gostou desse artigo?
Não se esqueça de assinar o RSS e divulgue-o para o mundo: