<?php /******************************** System obsługi sesji * Autor: Damned Land Team * Stworzono: 2007-03-13 19.05 * ********************************/ #Interfejs httpRequest interface _httpRequest { /*Konstruktor przpisze wartości*/ public function __construct(); /*Zwróć ip usera*/ public function turnIp(); /*Zwróć dane o systemach usera */ public function turnBrowser(); /*Test na bota*/ public function checkBot(); /*Destruktor klasy*/ public function __destruct(); } #Interfejs Session interface _Session { /*Konstruktor klasy [(bool)$status]-TRUE(nietwozyc sesji anonimowego usera)*/ public function __construct($status=false); /*Funkcja tworzy sesje*/ public function create(); /*Funkcja kończy sesje*/ public function finalSession(); /*Funkcja zwraca ID użytkownika sesji*/ public function turnUserId(); /*Sprawdza czy sesja jest aktywna i zwraca (bool)true lub (bool)false*/ public function checkActiv(); /*Zwraca id sesji*/ public function turnSessId(); /*Funkcja zrzucająca sesje do pliku Zapisuje w sposób **|**|**|**|** [(string)$dir]-katalog dostępu*/ public function dropToFile($toDir='./'); /*Uaktualnij ostatnią wizyte*/ public function sessionUpdate(); } #Klasa załaduje dane o użytkowniku Class httpRequest implements _httpReuest { #Wymagane zmienne #IP użytkownika private $ip; #Dane o przegląadarce i systemie private $browser; #test na bota private $scout; public function __construct() { $this -> ip = $_SERVER['REMOTE_ADDR']; $this -> browser = $_SERVER['HTTP_USER_AGENT']; $this -> scout = ''; } final public function turnIp() { return $this -> ip; } final public function turnBrowser() { return $this -> browser; } final public function checkBot() { $this -> scout = '/(googlebot|slurp@inktomi|ask jeeves|lycos|whatuseek|ia_archiver)/i'; } public function __destruct() { } } #Zdefiniuj stałe wartości #Nazwa SESJI #Klasa obsługi sesji Class Session implements _Session { public $request; private $test; public function __construct($status=true) { #Odwołaj sie do klasy httpRequest; $this->request = new httpRequest; $this->test = @mysql_fetch_assoc(mysql_query("SELECT sess_id, sess_time, sessuser_id FROM session WHERE sess_id='".$_SESSION[COOKIENAME]."'")); #Sprawdz czy ma towyrzyć sesje { $this->create(); } } public function create($user=0) { #AND jest wymagany bo gdy jest brak wpisu w bazie to $this->test zwraca 0=FALSE { return false; exit; } #Połącz czas oraz ip(można losowa liczba ale wtedy bedzie wieksza szansa na bug) $data = COOKIENAME.$this->request->turnIp(); #Utwórz i zakoduj unikalne id z danych powyżej #Utwórz sesje z uniqid $_SESSION[COOKIENAME]=$data; #Stwórz indeks sesji w bazie { VALUES ('".$data."', ".$user.", '".$this->request->turnBrowser()."', '".$this->request->turnIp()."', } } public function finalSession() { { return false; } else { } } public function turnUserId() { } public function turnSessId() { { return false; } else { return $this->test['sess_id']; } } public function checkActiv() { } public function dropToFile($toDir='./') { ID sesji|ID użytkownika|Dane o przeglądarce i systemie|IP użytkownika|Data utwor
zenia|Ostatnia wizyta '); { fwrite($file, ''.$query['sess_id'].'|'.$query['sessuser_id'].'|'.$query['sessuser_info'].'|'.$query['sessuser_ip'].'|'.$query['sess_time'].'|'.$query['sess_lastvisit'].' '); } } public function sessionUpdate() { mysql_query("UPDATE session SET sess_lastactiv=".time()." WHERE sess_id='".$this->test['sess_id']."'") } } ?>
OOP zajmuje się jakieś 3-4 tygodnie(Napisałem już trochę). Proszę o ocenę i pomoc co zmienić
Nie piszcie, że lepsze są ciasteczka, ponieważ to jest dla mnie lepsze.
Opisy funkcji macie w interfejsach oraz na stronie http://pastime.tivi.net.pl/team/php-files/...ead_id=246#2571