Stworzyłem niedawno skrypt odpowiadający za rejestrowanie zdarzeń:
<?php
$log_saver = 'folder/'.$date.'.log';
$ip = $_SERVER['REMOTE_ADDR'];
// Jeśli dziennik nie został utworzony stwórz go
{
$create = fopen($log_saver, 'w'); fwrite($create, ''.$date.' '.$time.': Utworzenie dziennika logowania zdarzeń na dzień '.$date.';'.' ');
}
function log_page_loaded()
{
$host = gethostbyaddr($ip);
$file = fopen($log_saver, 'a'); fwrite($file, ''.$date.' '.$time.': Wejście na stronę z adresu IP "'.$ip.'" ('.$host.');'.' ');
}
function log_user_login()
{
$username = $_POST['username'];
$file = fopen($log_saver, 'a'); fwrite($file, ''.$date.' '.$time.': Użytkownik '.$username.' zalogował się pomyślnie z adresu IP "'.$ip.'";'.' ');
}
function log_user_logout()
{
$username = $_SESSION['login'];
$file = fopen($log_saver, 'a'); fwrite($file, ''.$date.' '.$time.': Użytkownik '.$username.' wylogował się;'.' ');
}
function log_user_not_login()
{
$username = $_POST['username'];
$file = fopen($log_saver, 'a'); fwrite($file, ''.$date.' '.$time.': Nieudana próba zalogowania się użytkownika '.$username.' z adresu IP "'.$ip.'";'.' ');
}
?>
Powyszy skrypt działa bez problemów, ale postanowiłem go trochę uprościć...
<?php
$log_saver = 'logs/'.$date.'.log';
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($ip);
$username = $_SESSION['login'];
{
$create = fopen($log_saver, 'w'); fwrite($create, ''.$date.' '.$time.': Utworzenie dziennika logowania zdarzeń na dzień '.$date.';normal;'.' ');
}
function add_log()
{
$file = fopen($log_saver, 'a'); fwrite($file, ''.$date.' '.$time.': '.$log_message.';'.$log_type.''.' ');
}
function log_page_loaded()
{
$log_type = 'normal';
$log_message = 'Wejście na stronę z adresu IP "'.$ip.'" ('.$host.')';
add_log();
}
function log_user_login()
{
$log_type = 'action';
$log_message = 'Użytkownik '.$username.' zalogował się pomyślnie z adresu IP "'.$ip.'"';
add_log();
}
function log_user_logout()
{
$log_type = 'action';
$log_message = 'Użytkownik '.$username.' wylogował się';
add_log();
}
function log_user_not_login()
{
$log_type = 'error';
$log_message = 'Nieudana próba zalogowania się użytkownika '.$username.' z adresu IP "'.$ip.'"';
add_log();
}
?>
...i przestal działać. Funkcja add_log(); wykonuje się poprawnie, ale nie zapisuje treści komunikatu. Czy da sie coś z tym zrobić, czy trzeba korzystać z I rozwiązania?
Pozdrawiam!