Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Skrypty... chyba
Forum PHP.pl > Forum > Przedszkole
huor
Ehh.. kolejny temat na kolejnej stronie... ale może ktoś tutaj mi pomoże.

Otóż zakładam grę online. Takie coś jak "Ogame". Może ktoś zna. Jest on
zbudowana na podstaiwe Vallheru (inna gra tego typu). Zainstalowałem ją na swoim
serwerze (Webserv) no i strona główna działa.. ale tylko ta strona. Logując się
na swoją postać, widzę menu po lewej, u góry tekst powitalny.. a na dole O.o...
takie coś :

Kod
Notice: Trying to get property of non-object in C:\Dark
Academy\WebServ\httpd\includes\head.php on line 139

Notice: Trying to get property of non-object in C:\Dark
Academy\WebServ\httpd\includes\head.php on line 141

Fatal error: Call to a member function MoveNext() on a non-object in C:\Dark
Academy\WebServ\httpd\includes\head.php on line 159

No nie wiem. Z tego co pamiętam w grze po prawej stronie powinny pokazywać się
osoby online.. tego nie ma.. może to właśnie ten błąd. No ale nic. Włączam plik
"head.php"* Wyszukuję linijki i widzę:

  1. <?php
  2. $test = $db -> Execute("SELECT * FROM bugtrack");
  3.  while (!$test -> EOF)  141
  4.  {
  5.  if ($test -> fields['file'] == $file[$numfile])  143
  6.  {
  7.  if ($test -> fields['line'] == $errorline)
  8.  {
  9.  if ($test -> fields['info'] == $errorinfo)
  10.  {
  11.  if ($test -> fields['type'] == $errortype)
  12.  {
  13.  if ($test -> fields['referer'] == $referer[$numrefer])
  14.  {
  15.  $db -> Execute("UPDATE bugtrack SET amount=amount+1
  16. WHERE id=".$test -> fields['id']);
  17.  $reported = 1;
  18.  break;
  19.  }
  20.  }
  21.  }
  22.  }
  23.  }
  24.  $test -> MoveNext(); 159
  25.  }
  26.  $test -> Close();
  27. ?>



Co do cyfer nie jestem pewien, ale raczej tak. Proszę. Jeżeli rozumiecie o co
chodzi to powiedzcie.


2 sprawa. Gdy klikam "zarejestruj nowego użytkownika" pozornie przechodzę
poprawnie do forumlarza rejestracyjnego. Jednak po uzupełnienu pól i wpisaniu
jakiegokolwiek emaila otrzymuję wiadomość "Jesteś już zarejestrowany, sprawdź
swoją skrzyknę"


3 spraawa... i chyba najgorsza... uznałem że sprawdzę resztę opcij w grze,
klikam dowolny odnośnik w menu (już po zalogowaniu)

Na przykład
- Statystyki
- Bogactwa
- Ekwipunek
- Księga Czarów
- Dziennik [0]
- Notatnik

I otrzymuję wiadomośc... "Taki gracz nie istnieje"
Szukałem we wszystkich plikach takiej wiadomości i po jakimś czasie znalazłem w
polskeiej wersji head:

  1. <?php
  2. }
  3.  
  4. define("E_SESSIONS", "Sesja zakończona. <a href="index.php">Wróć</a> do strony
  5. głównej.");
  6. define("E_PLAYER", "Nie ma takiego gracza.");
  7. define("REASON", "Przyczyna wyłączenia gry:");
  8.  
  9. ?>


E_PLAYER... coś mi się wyadje że to nie ma wspólnego nic aż tak bardzo...

To wszystko z tego co mogłem sprawdzić. Bardzo, ale to bardzo proszę was o
pomoc. Zapewne znacie się na php, więc pomóżcie mi trochę w tym....
i sorry jeżeli złamałem regulamin. blinksmiley.gif
UDAT
1. Używaj BBCode
2. Temat


3. Czytaj exclamation.gif!
  1. <?php
  2. while (!$test -> EOF) 141
  3. ?>


Kod
Notice: Trying to get property of non-object in C:\Dark
Academy\WebServ\httpd\includes\head.php on line 141

Napisane jest że $test nie jest obiektem a ty próbujesz pobrać jego właściwość


  1. <?php
  2. $test -> MoveNext(); 159
  3. ?>

To samo tylko metoda

4. Sprawdź jak sprawdza obecność w gracza w bazie.
5. Patrz wyżej.
huor
  1. <?php
  2. /**
  3. * Check mail adress in database
  4. */  
  5. $strEmail = $db -> qstr($_POST['email'], get_magic_quotes_gpc());
  6. $query = $db -> Execute("SELECT id FROM players WHERE email=".$strEmail);
  7. $dupe2 = $query -> RecordCount();
  8. $query -> Close();
  9. if ($dupe2 > 0) 
  10. {
  11. $smarty -> assign ("Error", EMAIL_HAVE);
  12. $smarty -> display ('error.tpl');
  13. }
  14. ?>




Wydaje mi się że to to.
Wiesz.. taki problem.. ja na php... się prawie w ogóle nie znam.
Znam html itp.. ale z php gorzej trochę.

No sorry.. (muszę zapytać tongue.gif) Co powiniennem robić, jeżeli $test nie jest obiektem? Usunąć go... czy stworzyć obiekt test.

Nie niecierpliw się odrazu proszę tylko. Bo gdybym chciał czytać niecierpliwienia się inych to wszedłbym na inną stronę. To jest strona o php więc tutaj szukam pomocy xP
UDAT
Cytat(huor @ 1.09.2006, 09:45:15 ) *
No sorry.. (muszę zapytać tongue.gif) Co powiniennem robić, jeżeli $test nie jest obiektem? Usunąć go... czy stworzyć obiekt test.


Nie wiem tongue.gif
Nie używałem tego systemu, nie wiem za co odpowiada ten obiekt i próbuje pomóc od strony php'a

Prawdopodobnie to pomoże, ale nie gwarantuje:
  1. <?php
  2. $test = $db -> Execute("SELECT * FROM bugtrack");
  3. if ( is_object ( $test ) ) {
  4. while (!$test -> EOF) 141
  5. {
  6. if ($test -> fields['file'] == $file[$numfile]) 143
  7. {
  8. if ($test -> fields['line'] == $errorline)
  9. {
  10. if ($test -> fields['info'] == $errorinfo)
  11. {
  12. if ($test -> fields['type'] == $errortype)
  13. {
  14. if ($test -> fields['referer'] == $referer[$numrefer])
  15. {
  16. $db -> Execute("UPDATE bugtrack SET amount=amount+1
  17. WHERE id=".$test -> fields['id']);
  18. $reported = 1;
  19. break;
  20. }
  21. }
  22. }
  23. }
  24. }
  25. $test -> MoveNext(); 159
  26. }
  27. $test -> Close();
  28. }
  29. ?>


Błędów nie będzie wywalało jednak nie wiem czy to nie popsuje logiki gry.
Poza tym pokaż linię 139.

  1. "SELECT id FROM players WHERE email=".$strEmail

Sprawdź czy w tabeli players jest twój mail


Popraw BBCode w pierszym poście
huor
  1. <?php
  2. while (!$test -> EOF)
  3. ?>


To jest linijka 139, lekko się pomyliłem.. teraz mam pajączka i to jest napewno 139.

@up
Słuchaj, może masz gg byłoby łatwiej.
UDAT
Cytat(huor @ 1.09.2006, 09:26:42 ) *
Zainstalowałem ją na swoim
serwerze (Webserv) no i strona główna działa.. ale tylko ta strona. Logując się
na swoją postać, widzę menu po lewej, u góry tekst powitalny.. a na dole O.o...
takie coś :


A skonfigurowałeś (tzn. baza danych itepe), bo to zainstalowałem na serwerze brzmi jak rozpakowałem w htdocs
huor
Hmm.. konfiguracja.. robiłem tak jak prowadziła mnie instrukcja ;/

Robię to narazie żeby edytować wersję gry, potem wrzucę to na wykupiony serwer.
Kayne
Już doszliście do wniosku, że $test nie jest obiektem, dobrze, ale teraz dlaczego nie jest?

Bo poprzez zapytanie do ADOdb -> Baza danych, baza nie zwraca z powrotem danych Baza danych -> ADOdb -> Vallheru, albo zwraca z błędem i wtedy $text nie jest obiektem ADOdb.

Reasumując: $text nie jest obiektem, gdyż zapytanie się nie powiodło.

Proponuję:

  1. <?php
  2. $test = $db -> Execute('SELECT * FROM bugtrack') or die($db -> ErrorMsg());
  3. ?>


Co to da? Jak zapytanie się nie powiedzie, wyświetli błąd. Teraz wklej ten kod i wykonaj. Będziesz wiedział co jest nie tak. smile.gif

btw. używaj ' zamiast ", apostrof jest szybszy, bo parser php nie sprawdza stringu w poszukiwaniu zmiennych.

EDIT:
To jest już po zalogowaniu, więc baza danych dobrze działa. Bugtruck w Vallheru jest używany po zalogowaniu, ogólnie plik includes/head.php jest wykorzystywany po zalogowaniu.
huor
O, dzięki bardzo ;] zadziałało. Pozostaje jednak jeszcze jeden problem.. jak narazie..

klikając w odnośnik w menu widzę "taki gracz nie istnieje"... żaden odnośnik nie działa.. ;'/
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.