Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Non-object fatal error
Forum PHP.pl > Forum > Przedszkole
lukasamd
Witam,
używam klasy do obsługi aksimeta w celu filtrowania spamu:

http://www.achingbrain.net/stuff/php/akismet

Samo sprawdzenie wiadomości przebiega bezproblemowo.
Gdy natomiast chcę w administracji oznaczyć komentarz jako prawidłowy / spam to wywala mi:

Kod
Fatal error: Call to a member function submitHam() on a non-object in...


Jeżeli w administracji podam kod taki sam jak w sprawdzaniu komentarzy, również się wysypuje, jakby nie widziało obiektu.
Kod nie jest w żadnej funkcji itp., więc nie muszę używać global.

Sprawdziłem i wiem że:
- obiekt jest tworzony - jeżeli nie podam argumentów, to wywala odpowiednie błędy, poza tym print_r rozpisuje mi odpowiednie dane
- obiekt na 100% nie jest tworzony wcześniej
- odpowiednie wartości są poprawnie do niego zapisywane

Tak więc... co tu może być źle?
JarCzeS
zamiana danej metody na public moze pomoze?
darko
Wywołujesz tę metodę kontekstowo:
$akismet->submitHam();
czy statycznie:
Akismet::submitHam();
?

Kolejna sprawa to czy masz poprawne dane w tych zmiennych:
$WordPressAPIKey
$MyBlogURL

?
lukasamd
@JarCzeS:
Ona jest publiczna.


@darko:
Kontekstowo, tak samo jak isCommentSpam(), gdy sprawdzam komentarz podczas jego dodawania przez usera.
Dane są poprawne - po ustawieniu wartości wywołałem print_r no i wszystko jest odpowiednio dodane.
seth-kk
blad mowi ze to na czym wywolujesz metode nie jest obiektem (moze byc tablica zmienna skalarna lub null'em) - uzyj var_dump() tuz przed wywolanaiem metody - to powinno dac obraz czym jest twoj twor
lukasamd
Wywołane podczas dodawania komentarza i sprawdzania go: object(Akismet)#1 + wszystkie dane.
W administracji w sumie to samo:

Kod
object(Akismet)#1 (8) {
  ["version:private"]=>
  string(3) "0.4"
  ["wordPressAPIKey:private"]=>
  string(12) "moj-klucz-api"
  ["blogURL:private"]=>
  string(26) "adres-strony"
  ["comment:private"]=>
  array(8) {
    ["blog"]=>
    string(26) "adres-strony"
    ["user_agent"]=>
    string(81) "Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2) Gecko/20100115 Firefox/3.6"
    ["referrer"]=>
    string(55) "adres-referrer-z-administracji"
    ["user_ip"]=>
    string(11) "83.4.69.254"
    ["comment_author"]=>
    string(8) "Testowy"
    ["comment_author_email"]=>
    string(18) "testowy@test.com"
    ["comment_author_url"]=>
    string(0) ""
    ["comment_content"]=>
    string(46) "To jest testowy komentarz"
  }
  ["apiPort:private"]=>
  int(80)
  ["akismetServer:private"]=>
  string(16) "rest.akismet.com"
  ["akismetVersion:private"]=>
  string(3) "1.1"
  ["ignore:private"]=>
  array(12) {
    [0]=>
    string(11) "HTTP_COOKIE"
    [1]=>
    string(20) "HTTP_X_FORWARDED_FOR"
    [2]=>
    string(21) "HTTP_X_FORWARDED_HOST"
    [3]=>
    string(17) "HTTP_MAX_FORWARDS"
    [4]=>
    string(23) "HTTP_X_FORWARDED_SERVER"
    [5]=>
    string(15) "REDIRECT_STATUS"
    [6]=>
    string(11) "SERVER_PORT"
    [7]=>
    string(4) "PATH"
    [8]=>
    string(13) "DOCUMENT_ROOT"
    [9]=>
    string(12) "SERVER_ADMIN"
    [10]=>
    string(12) "QUERY_STRING"
    [11]=>
    string(8) "PHP_SELF"
  }
}


Czyli niby wszystko ok, a niżej nadal fatal error...
Burned
literowka?
lukasamd
Też nie, sprawdzałem juz chyba z 10 razy :/

EDIT
Ma ktoś jakiś pomysł może na to?
Nie żeby było mi jakoś niesamowicie potrzebne, bo same sprawdzanie komentarzy idzie ok, tylko nie mogę oznaczać błędnie przefiltrowanych, no ale dobrze byłoby na przyszłość wiedzieć, co może powodować taki problem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.