Menu
- Aktualności
- Mój startup Nowy odcinek
- Blogi ekspertów
- Projektowanie WWW
- Planowanie
- Hosting i domeny
- Organizacja i nawigacja
- Webdesign i grafika
- Warsztat - programy
- Tutoriale Photoshop
- Programowanie i tworzenie
- XHTML, HTML i CSS
- JavaScript, DOM i AJAX
- jQuery
- PHP i SQL
- Flash i ActionScript
- Dostępność i WAI
- Promowanie stron
- Pozycjonowanie
- Reklama i marketing
- Monitoring i statystyki
- Publicystyka
- Artykuły ogólne
- Społeczności
- Praca i zarabianie
- Wywiady
- Standardy sieciowe
- Zasoby
- Kursy
- Recenzje książek
- Linki
Dla webmastera
Sesje z pomocą ADOdb
Autor: Grzegorz Pacan, dodano: 10-07-2004
Kategoria: Programowanie i tworzenie
Jeszcze nie tak dawno opisywałem tworzenie własnych funkcji obsługi sesji z wykorzystaniem MySQL. Stanąłem jednak przed pewnym problemem. Mianowicie co zrobić, jeśli skrypt, który pisze, będzie musiał współpracować z różnymi bazami danych?
Na pomoc przyszła mi biblioteka ADOdb (Active Data Objects DataBase). Jest to świetny produkt na licencji lesser GPL (w praktyce dla laika oznacza to, iż można wykorzystywać ją w komercyjnych produktach bez ponoszenia jakichkolwiek kosztów z nią związanych).
Co takiego spowodowało, iż zwórciłem uwagę na ADOdb? Przede wszystkim mnogość funkcji, przenośność kodu i prostota stosowania. W chwili, kiedy piszę ten artykuł, z oficjalnej strony projektu można ściągnąć wersję 4.04. Obsługuje ona MySQL, PostgreSQL, Oracle, Interbase, Microsoft SQL Server, Access, FoxPro, Sybase, ODBC i ADO. Z jej pomocą możesz napisać aplikację współpracującą z tymi wszystkimi (a przynajmniej większością) baz danych na raz. Czyż to nie wspaniałe? Do tego ADOdb oferuje funkcje testowania wydajności bazy, cache'owania wyników czy też obsługi sesji. Właśnie tą ostatnią możliwością zajmę się w tym artykule.
Po więcej informacji na temat ADOdb zapraszam na oficjalną stronę projektu (http://php.weblogs.com/adodb).
Tymczasem przechodzimy do meritum...
Ściągamy z oficjalnej witryny projektu jego najnowszą wersję (w moim wypadku plik "ADOdb404.zip"). Rozpakowujemy go, zmieniamy nazwę nowopowstałego folderu na "ADOdb" i kopiujemy do głównego katalogu naszej witryny (w większości przypadków jest to folder "public_html" w naszym katalogu domowym). Po wykonaniu tych czynności stajemy się dumnymi posiadaczami ADOdb (4.04).
Teraz tworzymy tabelę w naszej bazie danych. Nazwijmy ją "sesje". Oto, jak powinien wyglądać jej kod (w wypadku bazy MySQL):
CREATE TABLE sesje ( sesskey CHAR(32) NOT NULL , expiry INT(11) UNSIGNED NOT NULL, expireref VARCHAR(64), data TEXT NOT NULL, primary key (sesskey) ) TYPE=MyISAM; |
Kiedy już nasza baza danych jest wyposażona w tabele możemy wziąć się za stworzenie pliku odpowiadającego za konfigurację obsługi sesji oraz jej start. Nazwijmy go "sesja.inc.php". Oto, jak powinien wyglądać:
<?php $ADODB_SESSION_DRIVER = "mysql"; $ADODB_SESSION_CONNECT = "localhost"; $ADODB_SESSION_USER = "root"; $ADODB_SESSION_PWD = ""; $ADODB_SESSION_DB = "test"; $ADODB_SESSION_TBL = "sesje"; if($_SERVER['DOCUMENT_ROOT']) { $_root .= $_SERVER['DOCUMENT_ROOT'] . str_replace(basename($_SERVER['PATH_INFO']), "", $_SERVER['PATH_INFO']); } require($_root . "adodb/adodb.inc.php"); require($_root . "adodb/adodb-cryptsession.php"); session_start(); ?> |
Powyższy skrypt łączy się z serwerem MySQL, który siedzi pod adresem "localhost". Uzyskuje do niego dostęp jako użytkownik "root". Autoryzacja nie jest wymagana, więc hasło nie zostało podane. Nazwa bazy, z którą się łączy, to "test". Tabela mająca na celu obsługę sesji zwie się "sesje".
NOTKA: Od wersji 4.1 skrypty obsługujące sesje znajdują się w katalogu "ścieżka/do/biblioteki/ADOdb/session". Poza tym dodano możliwość szyfrowania przy pomocy MCrypt i ogółem kod odpowiedzialny za obsługę sesji napisano od nowa (a dokładniej napisał go Ross Smith).
Teraz wystarczy na początku każdego pliku, który ma być brany pod uwagę przez sesję, dopisać linijkę "<?php require_once('sesja.inc.php'); ?>" (owy kod zadziała prawidłowo tylko przy odpowiednio zdefiniowanej zmiennej "include_path").
Zmienne rejestruje się standardowo - poprzez "session_register('nazwa zmiennej');". Jak je odczytywać? Równie prosto - "$_SESSIONS['nazwa zmiennej']".
Jak widzicie, korzystanie z sesji przy pomocy ADOdb nie jest wcale trudne. Prócz prostoty użytkowania oraz przenośności kodu otrzymujemy jeszcze jedną rzecz - bezpieczeństwo. Rekordy sesji są szyfrowane... jest to kolejny plus ADOdb. Naprawdę polecam korzystanie z tej biblioteki. Po więcej informacji i przykładów jej wykorzystania zapraszam na moją domową witrynę. W razie jakichkolwiek problemów - piszcie.
NOTKA: Kiedy będziecie chcieli korzystać z obsługi sesji PHP 4.3.* będą męczyły Was komunikaty ostrzegawcze. Jak nim zaradzić? Dodajcie do swoich "php.ini" poniższe dwie linijki.
session.bug_compat_42=off
session.bug_compat_warn=off
Nie wiem, czy przy korzystaniu z wbudowanych funkcji obsługi sesji (za pomocą plików) owe ostrzeżenia również się wyświetlają... zresztą - nieważne.
Najlepiej oceniane artykuły
Najnowsze wiadomości
- Programista (nadal) pilnie poszukiwany
- Już jest nowy Firefox i pierwsze komercyjne gry sieciowe
- Aplikacja SkyCash zyskuje na popularności
- Sprawdzony hosting i domena .eu
- Stwórz aplikację w 24h i poleć do Doliny Krzemowej
- Polacy wciąż łatwym celem dla cyberprzestępców
- Inspirujący Netcamp o e-biznesie
- Nowości Heliona: książki o e-biznesie i nie tylko