Przestałem używać swojej klasy do obsługi sesji kiedy użyłem poprostu session_start(); u klienta strona zaczeła działać poprawnie, co więcej sesje działaja u niego poprawnie jeśli nawet używam mojej klasy (ponieważ działał mu panel administracyjny) myśle, więc, że może mieć to jakiś związek z modrewrite na stronie adresy sa budowane tak domena.pl/produkt/produkt
Kopiuje moją klase do obsługi sesji, może ktoś wie co w niej jest nie tak zrobione?
<?php
class session
{
private $id;
private $ip;
private $time;
private $values;
//user
private $user_id;
private $browser;
function __construct()
{
$this -> ip = $db->escape($_SERVER['REMOTE_ADDR']);
$this -> browser = $db->escape($_SERVER['HTTP_USER_AGENT']);
//echo $_COOKIE[COOKIE_NAME];
if(!isset($_COOKIE[COOKIE_NAME
])) {
$_COOKIE[COOKIE_NAME] = '';
}
$db->query("SELECT * FROM sessions WHERE session_id = '".$_COOKIE[COOKIE_NAME]."' ");
if($db->num_rows() == 1)
{
$this -> restore();
}
else
{
$this -> create();
}
$this -> garbageCollector();
$this -> lastTime();
}
public function userId()
{
return $this->user_id;
}
public function setUserId($user_id, $autologin)
{
$this ->user_id = $user_id;
$db->query("UPDATE `sessions` SET `session_user_id` = '".$user_id."', `session_autologin` = '$autologin' WHERE`session_id` = '".$this->id."' ");
//$this ->newId();
}
private function create()
{
// utworz nowa anonimowa sesje. Wczesniej usun stare z bazy
//echo '<br />'.$this ->id.'-';
setcookie(COOKIE_NAME
, $this -> id
, time() + COOKIE_EXPIRE
, '/', '.'.SKLEP_DOMENA
); $db->query("DELETE FROM `sessions` WHERE `session_ip`= '".$this -> ip."'");
$db->query("INSERT INTO `sessions` ( `session_id` , `session_user_id` , `session_ip` , `session_browser` , `ses
sion_start` , `session_time` , `session_value` , `session_autologin` ) VALUES ('".$this -> id
."', '0', '".$this -> ip
."', '".$this -> browser
."', '".time()."' , '".time()."', NULL, 0 );"); } // end create();
private function restore()
{
$this->id = $_COOKIE[COOKIE_NAME];
$db->query("SELECT * FROM sessions WHERE session_id = '".$this -> id ."'");
$row = $db->fetch_row();
} // end restore();
private function lastTime()
{
setcookie(COOKIE_NAME
, $this -> id
, time() + COOKIE_EXPIRE
, '/', '.'.SKLEP_DOMENA
); $db->query("UPDATE `sessions` SET `session_time` = '".time()."' WHERE`session_id` = '".$this->id."' "); $db->query("UPDATE `users` SET `user_lastvisit` = '".time()."' WHERE `user_id` = '".$this->user_id."' ");
}
public function newId()
{
setcookie(COOKIE_NAME
, $new_id, time() + COOKIE_EXPIRE
, '/', '.'.SKLEP_DOMENA
);
$db->query("UPDATE `sessions` SET `session_id` = '".$new_id."' WHERE`session_id` = '".$this->id."' ");
$this->id = $new_id;
}
private function garbageCollector()
{
$db->query("UPDATE `users` SET `user_lastvisit` = NOW( ) WHERE `user_id` = '".$this->user_id."' ");
$db->query("UPDATE `sessions` SET session_user_id = 0 WHERE session_time < ".(time() - LOGIN_TIME
). " AND `session_autologin` = 0 "); $db->query("SELECT * FROM sessions WHERE session_id = '".$this->id."'");
$row = $db->fetch_row();
//echo "SELECT * FROM sessions WHERE session_id = '".$this->id."'";
$this->user_id = $row['session_user_id'];
$db->query("DELETE FROM sessions WHERE session_time < '".(time() - COOKIE_EXPIRE
). "'");
} // end garbageCollector();
}
?>