Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Kontrola sesji
castagir
post 8.12.2014, 17:03:23
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

Ostrzeżenie: (10%)
X----


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!
Go to the top of the page
+Quote Post
Wazniak96
post 8.12.2014, 17:29:06
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

Ostrzeżenie: (0%)
-----


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

Ten post edytował Wazniak96 8.12.2014, 17:34:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 11:54