Ustawienie tabeli 'sessions' w bazie 'sesje_testy'
$addtable = mysqli_query($conn, "CREATE TABLE sessions(id varchar(32) COLLATE utf8_unicode_ci NOT NULL, access int(10) unsigned, data text COLLATE utf8_unicode_ci, PRIMARY KEY (id))");
Skrypt 'handler.inc'
<?php '_close', '_read', '_write', '_destroy', '_clean'); function _open() { $conn = mysqli_connect('localhost', 'root@localhost', 'pwd'); if($conn) { return mysqli_select_db($conn, "sesje_testy"); } return FALSE; } function _read($id) { $id = mysqli_real_escape_string($conn, $id); $sql = "SELECT data FROM sessions WHERE id = '$id'"; if($result = mysqli_query($conn, $sql)) { if(mysqli_num_rows($result) > 0) { $ro = mysqli_fetch_assoc($result); return $ro['data']; } } return ''; } function _write($id, $data) { $id = mysqli_real_escape_string($conn, $id); $access = mysqli_real_escape_string($conn, $access); $data = mysqli_real_escape_string($conn, $data); $sql = "REPLACE INTO sessions VALUES ('$id', '$access', '$data')"; return mysqli_query($conn, $sql); } function _clean($max) { $old = mysqli_real_escape_string($conn, $old); $sql = "DELETE FROM sesions WHERE access < '$old'"; return mysqli_query($conn, $sql); } function _destroy($id) { $id = mysqli_real_escape_string($conn, $id); $sql = "DELETE FROM sesions WHERE id = '$id'"; return mysqli_query($conn, $sql); } function _close() { return mysqli_close($conn); } ?>
Plik 'set.php' do ustawienia sesji.
<?php include('handler.inc'); $_SESSION['test'] = '5555'; ?>
Plik wywolujacy sesje.
<?php include('session_save_handler.inc'); ?>
Są tam zmienne: $id, $access i $data
I teraz zaczynają się schody bo...
nie wiem jak mam usunac:
1. sesje poprzez te funkcje _destroy(). Ta funkcja ma argument $id ale jak wpisuje (zamiast tego $id) session_id() czyli _destroy(session_id()) to nic sie nie dzieje.
W bazie jest przechowywane ID sesji, TIMESTAMP i dane sesji (nazwa i wartosc)
2. Nie wiem tez jak usunac sesje jesli minie czas: funkcja _clean($max) i czym jest teraz $max

W tym momencie sa w jednym pliku wszystkie funkcje ale czy tak to ma byc ? bo troche bez sensu jest skoro f. _write() ciagle mi nadpisuje TIMESTAMPA i jak ma sie wtedy wykonac f. _clean()

Chyba ze to mam porozdzielac na rozne pliki czy gdzie chce to poprostu pisze taka funkcje. Juz sam nie wiem