![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Edytowanie2: Problem już rozwiązany, brakowało: else $koszyk = $_SESSION['koszyk'];
Edytowane: Warto dodać, że ten błąd występuje dopiero za drugim razem ( czyli pierwsza inicializacja jest ok.. ) dopiero jak strona jest przeładowana to się wywala. Witam, mam nastepujący problem: napisałem aplikację, która korzysta z klasy koszyk. w środowisku testowym działa poprawnie (na php 5.x ) natomiast na serwerze na którym ma stać domyślnie ( serwer stoi na php 4.3.7) wywala się z błędem: Fatal error: Call to a member function on a non-object in blabla/costam.php on line 75 w tej linijce jest coś takiego:
natomiast definicja klasy to:
jaka może być przyczyna? Ten post edytował liechmaster 5.01.2007, 11:43:29 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Krakół Ostrzeżenie: (0%) ![]() ![]() |
Nie powinno być problemu, wydebuguj sobie czy przekazuje Ci $koszyk, bo z tego co widzę to nie, dojdź do tego w którym miejscu Ci gubi, conajmniej dziwne jest to, że działa to na php5.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Moze chodzi bardziej o session_start? Moze nie inicjalizujesz sesji i wtedy nie masz dostepu do danych sesyjnych. Jeden serwer moze miec autostart sesji w php.ini drugi nie.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 5 Dołączył: 8.11.2004 Skąd: trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
może zamiast
daj
wogole dziwne że błędu składni tobie nie pokazło, poza tym dlaczego klasa koszyk nie ma konstruktora? Ten post edytował php programmer 4.01.2007, 12:49:24 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Problemem jest to, że nie tworzy Ci instancji klasy Koszyk. W Twoim przypadku zmienna $_SESSION['koszyk'] jest ustawiona i dlatego nie tworzy obiektu.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
@php programmer: można pisać new COS; i new COS(); poza tym od kiedy klasa musi miec zdefiniowany konstruktor? nie siej herezji tylko sprawdź (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
@Ace sesję ładuję na samym początku, nie wspominałem o tym bo wydawało mi się to oczywiste : ) (session_start() ).
najdziwniejsze jest to że to kurde działa mi na dwóch różnych serwerach (oba na php 5.x) tylko wywalia się na tym 4.7. w tej chwili nie mogę sprawdzić ale jak spojrzałem w phpinfo() to jest tam coś takiego jak dissable_classes i może właśnie na tamtym serverze jest to "on"? póki co mam na wszelki wypadek niekoszerną wersję zastępczą na czystych funkcjach i tablicy $koszyk , która jest przekazywana przez referencję i na końcu zapisywana w sesji - tylko to nijak się ma do oop ; ) @sf o ile mi wiadomo to każdy tworzony obiekt wywołuje konstruktor klasy ; ) ( inna bajka czy jest on jawny czy też nie ;p) tak mnie coś jeszcze tknęło.. żeby może jawnie odwołać się do zmiennej $koszyk, czyli dodać elsa w tym ifie:
Ten post edytował liechmaster 4.01.2007, 14:46:46 |
|
|
![]()
Post
#8
|
|
Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
pamiętaj o tym, że w przypadku register globals = off (zalecane ustawienie) $_SESSION['koszyk'] nie równa się $koszyk
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
no to jak korzystać z sesji dla register_globals= off?
i ewentualnie jak zapisać i odtworzyć obiekt z sesji? bo nie bardzo rozumiem czemu $koszyk nie jest $_SESSION['koszyk']; a raczej , czy nie mogę napisać $koszyk=$_SESSION['koszyk']? Ten post edytował liechmaster 4.01.2007, 15:28:43 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
LOL (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Sprwadź po prostu czy w $_SESSION['koszyk'] jest na pewno ten obiekt, swoją drogą ja bym użył serialize gdyby wsadzał obiekt do sesji, ale może nie jest to konieczne... po prostu sprawdź co tam siedzi
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 4.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
problem rozwiązany,
tak jak pisałem, musiałem dodać elsa do tego ifa z koszyk$=$_SESSION['koszyk'] i wszystko już działa |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 9.09.2002 Skąd: Pszczyna Ostrzeżenie: (0%) ![]() ![]() |
przed wystartowanie m sesji session_start() musisz załadować definicję klasy Koszyk aby manager sesji wiedział jak utworzyć instancję klasy Koszyk
pozdro |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 01:32 |