napisałem skrytp do zamieszczania ogłoszeń ,i jest w nim obsługa sesji gdzie dane są trzymane w SQL
i tak, na domowym serwerku (debian 5.0 , Apache2,php5) działa ok ,a na hostingu (suse) jest tak że rekord który trzeba ukatualnić o dane jest uaktualniony ale jednoczeście zostaje zdublowany tylko z innym numerem SID sesji ,sama obsługa w klasie wygląda tak :
$this->SID = $this->GetConfig('SID') ? $this->GetCookie('SID') : $this->GetNewSID(); $this->CheckSession($this->SID); FUNCTION CheckSession($sid) { $ValueSID = $this->SQL->fetch_assoc("SELECT sid,user,value,vdata FROM session WHERE sid=? AND (session_time > UNIX_TIMESTAMP(NOW())-?) LIMIT 1",array($sid,$this->Timeout)); IF($this->SQL->affected_rows == 1) { $this->vData = unserialize($ValueSID['vdata']); IF(($this->vData['USER_ADDR'] == $this->UserIp) && ($this->vData['USER_BROWSER'] == $this->Browser)) { $this->content = unserialize($ValueSID['value']); //$this->UserID = $ValueSID['user']; RETURN true ; } }else{ $this->RemoveSession($sid); $this->CreateSession(); } } FUNCTION CreateSession() { echo 'nowa' ; $this->SQL->query("INSERT INTO session (sid, session_time) VALUES (?,UNIX_TIMESTAMP(NOW())) ",array($this->SID)); $this->SetCookies('SID',$this->SID); } { $this->SQL->query("DELETE FROM session WHERE sid=? LIMIT 1",array($sid)); $this->DelCookie('SID'); $this->SID = $this->GetNewSID(); }
dla debugowania dodałem w create session echo 'nowa' i co jest najbardziej zaskakujące ,na chostingu oraz na serwerze w domku pokazuje się tylko raz (czyli tylko raz jest tworzony rekord w SQL ) to skąd mi sie dubluje w bazie ?
sprawdzałem na kilku przeglądarlach i to się dzieje tylko na operze (kilka wersji) ,nie mam już pomysłu
