Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zagnieżdżanie jednej funkcji w drugiej
ddzkm
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Stworzyłem niedawno skrypt odpowiadający za rejestrowanie zdarzeń:

  1. <?php
  2. $date = date('d-m-Y');
  3. $time = date('H:i:s');
  4. $log_saver = 'folder/'.$date.'.log';
  5. $ip = $_SERVER['REMOTE_ADDR'];
  6.  
  7. // Jeśli dziennik nie został utworzony stwórz go
  8.  
  9. if (!file_exists($log_saver))
  10. {
  11. $create = fopen($log_saver, 'w');
  12. fwrite($create, ''.$date.' '.$time.': Utworzenie dziennika logowania zdarzeń na dzień '.$date.';'.'
  13. ');
  14. fclose($create);
  15. }
  16.  
  17. function log_page_loaded()
  18. {
  19. global $ip;
  20. global $log_saver;
  21. global $date;
  22. global $time;
  23. $host = gethostbyaddr($ip);
  24. $file = fopen($log_saver, 'a');
  25. fwrite($file, ''.$date.' '.$time.': Wejście na stronę z adresu IP "'.$ip.'" ('.$host.');'.'
  26. ');
  27. fclose($file);
  28. }
  29.  
  30. function log_user_login()
  31. {
  32. $username = $_POST['username'];
  33. global $ip;
  34. global $log_saver;
  35. global $date;
  36. global $time;
  37.  
  38. $file = fopen($log_saver, 'a');
  39. fwrite($file, ''.$date.' '.$time.': Użytkownik '.$username.' zalogował się pomyślnie z adresu IP "'.$ip.'";'.'
  40. ');
  41. fclose($file);
  42. }
  43.  
  44. function log_user_logout()
  45. {
  46. $username = $_SESSION['login'];
  47. global $ip;
  48. global $log_saver;
  49. global $date;
  50. global $time;
  51. $file = fopen($log_saver, 'a');
  52. fwrite($file, ''.$date.' '.$time.': Użytkownik '.$username.' wylogował się;'.'
  53. ');
  54. fclose($file);
  55. }
  56.  
  57. function log_user_not_login()
  58. {
  59. $username = $_POST['username'];
  60. global $ip;
  61. global $log_saver;
  62. global $date;
  63. global $time;
  64. $file = fopen($log_saver, 'a');
  65. fwrite($file, ''.$date.' '.$time.': Nieudana próba zalogowania się użytkownika '.$username.' z adresu IP "'.$ip.'";'.'
  66. ');
  67. fclose($file);
  68. }
  69.  
  70. ?>


Powyszy skrypt działa bez problemów, ale postanowiłem go trochę uprościć...

  1. <?php
  2. $date = date('d-m-Y');
  3. $time = date('H:i:s');
  4. $log_saver = 'logs/'.$date.'.log';
  5. $ip = $_SERVER['REMOTE_ADDR'];
  6. $host = gethostbyaddr($ip);
  7. $username = $_SESSION['login'];
  8.  
  9. if (!file_exists($log_saver))
  10. {
  11. $create = fopen($log_saver, 'w');
  12. fwrite($create, ''.$date.' '.$time.': Utworzenie dziennika logowania zdarzeń na dzień '.$date.';normal;'.'
  13. ');
  14. fclose($create);
  15. }
  16.  
  17. function add_log()
  18. {
  19. global $date;
  20. global $time;
  21. global $log_saver;
  22. global $ip;
  23. global $host;
  24. global $username;
  25. global $log_message;
  26. global $log_type;
  27.  
  28. $file = fopen($log_saver, 'a');
  29. fwrite($file, ''.$date.' '.$time.': '.$log_message.';'.$log_type.''.'
  30. ');
  31. fclose($file);
  32. }
  33.  
  34. function log_page_loaded()
  35. {
  36. $log_type = 'normal';
  37. $log_message = 'Wejście na stronę z adresu IP "'.$ip.'" ('.$host.')';
  38. add_log();
  39. }
  40.  
  41. function log_user_login()
  42. {
  43. $log_type = 'action';
  44. $log_message = 'Użytkownik '.$username.' zalogował się pomyślnie z adresu IP "'.$ip.'"';
  45. add_log();
  46. }
  47.  
  48. function log_user_logout()
  49. {
  50. $log_type = 'action';
  51. $log_message = 'Użytkownik '.$username.' wylogował się';
  52. add_log();
  53. }
  54.  
  55. function log_user_not_login()
  56. {
  57. $log_type = 'error';
  58. $log_message = 'Nieudana próba zalogowania się użytkownika '.$username.' z adresu IP "'.$ip.'"';
  59. add_log();
  60. }
  61.  
  62. ?>


...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!
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. function add_log($log_message)


i wywolujesz poprzez
  1. add_log($log_message)


Usuwasz też
  1. global $log_message;


Ten post edytował wookieb 8.08.2009, 09:12:18


--------------------
Go to the top of the page
+Quote Post
pyro
post
Post #3





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


a najprościej rzecz biorąc byłoby to zrobić obiektowo (klasę)


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
ddzkm
post
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Dopiero się uczę PHP, na razie wymyśliłem to co widać powyżej snitch.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 06:29