Trebuie sa faci un script special pentru management-ul sesiunilor de logare.
1. In primul rand, la fiecare logare preiei si inregistrezi intr-un tabel din baza de date id-ul sesiunii ( session_id() ) asociat la id-ul acelui user.
- Tabel: loged_session
Cod: Selectaţi tot
id_user | id_session | time_reg
// id_user: INT PRIMARY_KEY UNIQUE
// id_session: VARCHAR(255)
// time_reg: INT
- In php:
Cod: Selectaţi tot
//cand formularul cu date pt. logare e trimis
//se verifica daca datele trimise (email, parola) sunt corecte.
//daca sunt corecte, se inregistreaza session_id()
$id_session = session_id();
$time = time();
$sql ="INSERT INTO loged_session (id_user, id_session, time_reg) VALUES ($id_user, '$id_session', $time)
ON DUPLICATE KEY UPDATE id_session='$id_session', time_reg=$time";
//executa $sql
2. La fiecare accesare de pagina, inainte de alte prelucrari, se verifica daca session_id() al utilizatorului corespunde cu valoarea din baza de date.
Cod: Selectaţi tot
$id_session = session_id();
$sql ="SELECT id_user, time_reg FROM loged_session WHERE id_session='$id_session' LIMIT 1";
//executa $sql, verifica daca a selectat un rand
- Daca a selectat, definesti sesiune cu id-ul utilizatorului, in $_SESSION.
- Daca nu a selectat, stergi sesiunea cu id-ul lui, din $_SESSION..
3. Apoi iti faci un script prin care sa citesti/afisezi randurile cu id-urile din tabelul cu id_session (loged_session); si prin care sa poti sterge ce vrei. Sau folosesti PhpMyAdmin.
- Odata ce un id_session e sters din tabel, cand un utilizatorul acceseaza o pagina, scriptul care verifica daca session_id() e in baza de date va returna ca nu e, si ii va sterge cu unset() sesiunile lui de logare.