Sesje z pomocą ADOdb

Autor: Grzegorz Pacan, dodano: 10-07-2004
Kategoria: Programowanie i tworzenie

Wielu początkujących programistów PHP użera się z sesjami. Wiem to po sobie, bo jeszcze kilka miesięcy temu miałem nie-lada kłopot z zapisywaniem rekordów sesji w bazie MySQL. Jak zwykle pomógł mi serwis php.net.

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.

Ocena 2.55/5 (51.04%) (480 głosów)

Komentarze:

  • no Gośći?
    Dodał: stn data: 2010-01-11
    No i co dalej? Napisałeś dobry wstęp... jakieś przykłady jak to działa?

  • Dodał: Gość data: 2011-08-05
    No i co najważniejsze, dlaczego w ten sposób?


Dodaj komentarz:


Temat:
Twój nick:
Komentarz:
 

Prosimy o kulturę wypowiedzi. Komentarze zawierające niecenzuralne zwroty, bądź obrażające inne osoby będą usuwane. Kod HTML w wypowiedziach jest niedozwolony. Wydawca nie odpowiada za treść komentarzy.