Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kontrola sesji
Forum PHP.pl > Forum > Przedszkole
castagir
Witam

Chciałbym się dowiedzieć w jaki sposób moge kontrolować sesję.
Napisałem dość prosty skrypt, który nadaje podstawowe informacje uwierzytelniające dla standardowego odwiedzającego witrynę. Ładnie mi się wszystko zapisuje raport, gdy ktoś wchodzi na moją stronę.

Sesję utworzyłem w oddzielnym pliku, a oto jego treść:
  1. <?php
  2.  
  3. $polaczenie_bd = mysqli_connect(NAZWA_SERWERA_BD, NAZWA_UZYT_BD, HASLO_UZYT_BD, NAZWA_BD);
  4.  
  5. // Utworzenie stałych podstawowych:
  6. $_SESSION['rozpoczeta'] = true;
  7. $_SESSION['inicjacja'] = 'n';
  8. $_SESSION['stopien'] = '1';
  9. $_SESSION['id'] = '1';
  10. $_SESSION['uzytkownik'] = 'gość';
  11.  
  12. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  13. $_SESSION['czas'] = date("H:i");
  14.  
  15.  
  16. // Wpisanie sesji do bazy danych
  17. $id = $_SESSION['id'];
  18. $ip = $_SESSION['ip'];
  19. $data = date("d.m.o");
  20. $start = $_SESSION['czas'];
  21. $pytanie = "INSERT INTO `".PRZED_TAB_BD."sesjeuzytkownikow` (id_uzytkownika, ip, data, start)
  22. values ('".$id."', '".$ip."', '".$data."', '".$start."')";
  23. mysqli_query($polaczenie_bd, $pytanie);
  24. ?>


Plik zostaje dopisany, gdy nie zostanie wykryta zmienna $_SESSION['rozpoczete'].
  1. if (!isset($_SESSION['rozpoczeta'])) {
  2. include('sesja.php');
  3. }


Problem polega na tym, że nie przekazuje tej zmiennej i za każdym razem rozpoczyna nową sesję. Wiem to dlatego, że za każdym razem tworzy mi nowy wpis do bazy danych.
Druga sprawa to jak zakończyć sesję? Chciałbym aby podczas kończenia sesji został dopisywany do bazy danych czas, kiedy następuje ostatnia aktualizacja $_SESSION['czas'].

Robię dopiero pierwszą stronę główną i właściwie nie przechodzę jeszcze na żadne inne, tylko sprawdzam efekty poprzez odświeżenie i z każdym zostaje dopisany nowy wpis do bd.

Może źle skonstruowałem kontrolę sesji i powinno się to robić inaczej. Dodam jeszcze, że wzorowałem się na przykładach z internetu.
Proszę o wszelkie propozycje.

Z góry dziękuję i pozdrawiam!
Wazniak96
session_start powinno znajdywać się na początku skryptu numer 1, dlatego też zawsze spełnia się warunek bo sesja nie jest rozpoczęta i nie istnieje.

Sesję kasuje się poprzez:
  1. unset($_SESSION);


PS: Po co dodajesz ip do sesji skoro zawsze masz do niej dostęp w tablicy $_SERVER ? smile.gif

EDIT: troszkę się zamotałem. Już poprawione smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.