Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SESJA, WŁASNY MECHANIZM SESJI SESJA MYSQL
Forum PHP.pl > Forum > PHP
grzesio
Po zalogowaniu klienta do serwisu otrzymuję :

- login
- hasło
- id w bazie

teraz muszę stworzyć własne ciasteczko

w jaki sposób stworzyć identyfikator sesji ?

oczywiście za każdym razem będzie porównywany identyfikator w ciastku z identyfikatorem w bazie...

Pozdr.
G.


grzesio
co zapisać w ciastku ?

id klienta z bazy
login klienta ?
email klienta
hasło klienta ?
vokiel
ID sesji.
grzesio
jakie dane mogę pobrać od usera ?

  1. $sql_session="CREATE TABLE IF NOT EXISTS `".$prefix_table."_session` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `id_session` varchar(250) NOT NULL DEFAULT '',
  4. `time` DATETIME NOT NULL DEFAULT '',
  5. `ip` varchar(48) NOT NULL DEFAULT '',
  6. `guest` int(1) NOT NULL DEFAULT '0',
  7. `status` int(1) NOT NULL DEFAULT '0',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;";
  10.  
  11.  
  12.  
  13. $conn = mysqli_connect($db_host, $db_uname, $db_pass,$db_name);
  14.  
  15. $ip = $_SERVER['REMOTE_ADDR'];
  16.  
  17. $web_explorer=$_SERVER['HTTP_USER_AGENT'];
  18.  
  19. $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
  20.  
  21. $date_time_visit=date("Y-m-d H:i:s");
  22.  
  23. $ktory_plik= $_SERVER['PHP_SELF'];
  24.  
  25. $identyfikator_ciasteczka="$ip:$lang:$web_explorer";
  26.  
  27. $base64_new_cookies = base64_encode($identyfikator_ciasteczka);
  28.  
  29. $sql = "INSERT INTO ".$prefix_table."_session (`id`,`id_session`, `time`, `ip`, `guest`, `status`,`ktory_plik`,`lang`) VALUES ('','$base64_new_cookies', '$date_time_visit', '$ip', '0', '1','$ktory_plik','$lang');";
  30.  
  31. if (!mysqli_query($conn,$sql))
  32.  
  33. { echo ("Error code".mysqli_errno($con));
  34.  
  35. if (mysqli_errno($conn)==1044) { echo " NIE MASZ PRAW DOSTEPU ACCES DENIED wpisz GRANT ";}
  36.  
  37.  
  38. } else {
  39.  
  40. }
  41.  
  42.  
  43. mysqli_close ($conn);
gino
Danych jak najmniej. Nawet po dobrym zabezpieczeniu sesji (Session Fixation i Session Hijacking) logika nakazuje by nie trzyma tam danych, bo przecież można je w każdej chwili pobrać mając jakiś identyfikator który na to pozwoli (i bynajmniej nie jest to id users). Żadnych imion, nazwisk, loginów itp. mimo, że to wiele ułatwia.

gino
nospor
Troche nie na temat ale jak patrze na te INTY i brak wiedzy to nie moge przejsc obojetnie

`id` int(10) NOT NULL AUTO_INCREMENT,
`guest` int(1) NOT NULL DEFAULT '0',
`status` int(1) NOT NULL DEFAULT '0',

Nie zadne iNT(10) a poprostu INT
nie zadne INT(1) a TINYINT - liczba w nawiasie nie ogranicza zakresu/rozmiaru pola... ona sluzy tylko i wylacznie dla pol ZEROFILL ktorych na dobra sprawe pewnie w zyciu nie uzyjesz a juz na pewno nie uzywasz teraz
nie zadne default '0' tylko default 0 - odrozniaj teksty od liczb nawet jak baza poprawi automatycznie to za ciebie.
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.