Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sesja i ciasteczka
Forum PHP.pl > Forum > Przedszkole
k0b3
Witam

mam taką klase, którą wziąłem manuala php.net
  1. <?php
  2. class SessionDB {
  3. private $data=null;
  4. private $session_id=null;
  5. private $minutes_to_expire=3600; // TIME TO MAINTAIN DATA ON DB
  6.  
  7. public function __construct(){
  8. global $SESSION;
  9.  
  10. if (isset($_COOKIE['session_id'])){
  11. $this->session_id = $_COOKIE['session_id'];
  12. } else {
  13.  
  14. $this->session_id = md5(microtime().rand(1,9999999999999999999999999)); // GENERATE A RANDOM ID
  15.  
  16. setcookie('session_id',$this->session_id);
  17. $sql = "INSERT INTO `session_db` (`session_id`, `updated_on`) VALUES ('{$this->session_id}', NOW())";
  18. mysql_query($sql);
  19. $sql = "UPDATE `site` SET result=result+1 WHERE query='visits'";
  20. mysql_query($sql);
  21.  
  22. }
  23.  
  24. $sql = "SELECT `value` FROM `session_db` WHERE `session_id`='{$this->session_id}'";
  25. $query = mysql_query($sql);
  26.  
  27. $this->data = unserialize(mysql_result($query, 0, 'value'));
  28. $SESSION = $this->data;
  29. }
  30.  
  31. private function expire(){
  32. $date_to_delete = date("Y-m-d H:i:s", time()-60*$this->minutes_to_expire);
  33. $sql = "DELETE FROM `session_db` WHERE `updated_on` <= '$date_to_delete'";
  34. mysql_query($sql);
  35. }
  36.  
  37. public function __destruct(){
  38. global $SESSION;
  39.  
  40. $this->data = serialize($SESSION);
  41.  
  42. $sql = "UPDATE `session_db` SET `value`='{$this->data}', `updated_on`=NOW() WHERE `session_id`='{$this->session_id}'";
  43. mysql_query($sql);
  44.  
  45. $this->expire();
  46. }
  47. }
  48. ?>


na localhoscie wszystko działa. Na serwerze jest problem, bo nie tworzy mi ciasteczek, przez co przy kazdym odświerzeniu strony dodaje mi do tablicy nową sesje.

Czy to moze byc spowodowane nie aktualna wersja php? Na localhoscie mam 5.3.0, a na serwerze 5.2.13?
gothye
yyy nie patrzę już na wersje php ale zastanawia mnie :
ale klasa jest nijak ,zmieniłbym global $SESSION na private $ValueSession i do niej przekazywał sesje z SQL , może COOKIE PATCH masz inny ?

sposóbuj utworzyć pusty plik index.php ,zapisz jakieś ciasteczko i spróbuj je odczytać ....
k0b3
no bardzo dziwna rzecz wyszła. W klasie setcookie tak jakby nie działa, a w normalnym pliku tworzy ciasteczko.
WTF? smile.gif

problem nadal istnieje... help
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.