ďťż

[PHP] Skrypt greetCast . Wyskakuje błąd: "Fatal error: Call to a member"

       

Podstrony


telcocafe

Witam
Mam problem... Zainstalowałem sobie skrypt greetCast (do pozdrowień). Wszystko poszło bez problemów, jednak przy panelu admina oraz przy pozdrowieniach na dole wyskakuje błąd:
Fatal error: Call to a member function query() on a non-object in /pozdrowienia/includes/session.php on line 33
Szukałem trochę i podobno mam starszą wersje php. Oto kodzik pliku session.php:
<?php ##################################################### # greetCast # # © 2006 Adrian Konera # # All rights reserved. # ##################################################### function session_open($path, $name) { return true; } function session_close() { return true; } function session_read($id) { global $db; $db->query("SELECT data FROM ".TBL_SESSION." WHERE session_id = '".$id."'"); if($db->rows() == 0) { return ""; } $sess_row = $db->fetch(); return $sess_row['data']; } function session_write($id, $data) { global $db; $db->query("REPLACE INTO ".TBL_SESSION."(session_id, data, modtime) VALUES('".$id."', '".$data."', null)"); return true; } function session_remove($id) { global $db; $db->query("DELETE ".TBL_SESSION." WHERE session_id = '".$id."'"); return true; } function session_gc($life) { global $db; $old = time() - $life; $db->query("DELETE FROM ".TBL_SESSION." WHERE UNIX_TIMESTAMP(modtime) < ".$old); return true; } ?>
Co mogę zmienić, aby mi to działało? Bardzo proszę o pomoc...
Z góry Wielkie dzięki!
Użytkownik sauron edytował ten post 31 grudzień 2007, 13:54
Powód edycji: poprawa nazwy tematu + bbcode


Na moje to albo coś z bazą dancyh nie tak albo nie masz CHMODU 777 na folderze/pliku do zapisywanie sesji.

Jakiego php używasz?

Błąd oznacza że próbujesz sie odwołać do metody z obiektu $db który aktualnie nie jest obiektem. Prawdopodobnie błąd ten występuje przy końcu pliku kiedy to wszystkie egzemplarze obiektu są usuwane a skrypt chce zapisać dane sesyjne za pomocą obiektu egzemplarza obiektu $db. Sprawdź czy w całym skrypcie swojej strony nie używasz zmiennej o nazwie $db. Jeżeli tak i nie chce ci się tego zmieniać to do klasy bazy danych dopisz wzorzec singletona dla twojego php gdzie nazwę Singleton zamień na nazwę klasy do obsługi bazy danych.

php5
static private $instance = false; static function instance() { if(!Singleton::$instance) { Singleton::$instance = new Singleton(); } return Singleton::$instance; }

php4
function instance() { static $instance; if(!isset($instance)) { $instance =& new Singleton; } return $instance; }

i teraz w pliku swojego skryptu który nam podałeś zamiast global $db
wpisz $db->db::instance();
Gdzie db to nazwa klasy do obsługi twojej bazy danych.

Jeżeli jednak zamieniłeś używana przez ciebie nazwę zmiennej $db na inną i nadal nie działa to musisz wykonać te kroki co ci podałem.
Użytkownik polasek edytował ten post 02 styczeń 2008, 22:47
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.