Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Skrypty... chyba, Gra
huor
post 1.09.2006, 08:26:42
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.09.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował huor 1.09.2006, 09:00:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
UDAT
post 1.09.2006, 08:39:15
Post #2





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

Ostrzeżenie: (0%)
-----


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.

Ten post edytował UDAT 1.09.2006, 08:40:19
Go to the top of the page
+Quote Post
huor
post 1.09.2006, 08:45:15
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.09.2006

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
UDAT
post 1.09.2006, 08:53:25
Post #4





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
huor
post 1.09.2006, 09:09:12
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.09.2006

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post
UDAT
post 1.09.2006, 09:22:12
Post #6





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
huor
post 1.09.2006, 09:25:37
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.09.2006

Ostrzeżenie: (0%)
-----


Hmm.. konfiguracja.. robiłem tak jak prowadziła mnie instrukcja ;/

Robię to narazie żeby edytować wersję gry, potem wrzucę to na wykupiony serwer.
Go to the top of the page
+Quote Post
Kayne
post 1.09.2006, 13:17:14
Post #8





Grupa: Zarejestrowani
Postów: 82
Pomógł: 0
Dołączył: 30.04.2006
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Kayne 1.09.2006, 13:18:27


--------------------
Chcesz szybko i łatwo wygrać 100 zł?
Go to the top of the page
+Quote Post
huor
post 1.09.2006, 15:09:57
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.09.2006

Ostrzeżenie: (0%)
-----


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.. ;'/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 04:01