i taki mały kodzik w kontrolerze
public function sid() { } public function checkSid($id){ $rows = $this->select()->from($this->_name)->where('id = ?', $id)->limit('1')->query(zend_db::FETCH_OBJ)->fetchAll(); $object = $rows[0]; return $object->idSesji; } public function getVar($name){ if($_SESSION[$name]){ return $_SESSION[$name]; } return false; } public function checkSession(){ if($_GET['sid'] == $this->sid() && $this->getVar('zalogowany') == true && $this->checkSid($this->getVar('id')) == $_GET['sid']){ return true; } return false; }
if(!$sessions->checkSession()){ $this->_redirect('/'); }
Problem polega na tym, że gdy URL wygląda mniej więcej tak:
Kod
/kontroler/akcja/?sid=...
to wszystko normalnie działa, warunek w kontrolerze zwraca false, ale gdy URL wygląda tak: Kod
/kontroler/akcja/parametr1/wartosc1/parametr2/wartosc2/?sid=...
to za pierwszym wczytaniem strony działa, a za niszczy sesje i przenosi do strony głównej. Zakomentowałem ten warunek i wyświetliłem wszystkie sprawdzane zmienne w funkcji checkSession() i wszystko się zgadza. Kompletnie nie wiem dlaczego przy parametrach w URL funkcja zwraca false mimo tego, że zmienne wszystkie się zgadzają. Proszę o pomoc 