Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Z serwera na strone
Forum PHP.pl > Forum > PHP
Suspended
Witam!

Jestem Administratorem serwera Lineage 2 i mam pewien problem, ponieważ nie za bardzo znam się na PHP i pochodnych.

Mam zainstalowane Apache na serwerze i mam stronę na darmowym hoście.
A teraz o co chodzi?
Chciałbym z serwera wyświetlać ze skryptu PHP na stronie na darmowym hoście informacje jak np. ilość online itd. czyli statystyki. Chodzi o to, aby na serwerze skrypt php "wyciągał" z bazy danych pewne informacje (mam już odpowiedni skrypt), a potem wyświetlał wynik działania skryptu na stronie. Słyszałem, że jest to możliwe przez apache, mam zainstalowane XAMPPa.

Co ma robić skrypt, który potrzebuję?

Ma wyświetlać na stronie, która jest na darmowym hoście, wynik skryptu z serwera co kilka minut.

Takie coś jest używane na innych serwerach jak np. www.graveland.pl, że skrypt wyświetla na stronie gotowy wynik i właśnie tego potrzebuję.

Dodatkowe dane:
System operacyjny serwera: Debian 5.0 Lenny 64 bit
Host strony: koon.pl
Adres strony: www.l2-berserk.pl

Póki co mam statystki robione ręcznie, ale nie jest to zbyt dobre winksmiley.jpg

Z góry dziękuje za pomoc, pozdrawiam Suspended.
Matte
Jeżeli chcesz aby statystyki nie były odświeżane za każdym razem tylko co parę minut. Najprościej będzie gdy po stronie serwera gry będziesz tworzyć plik o nazwie np. "status.txt" w którym dane będą miały format Coś 1|Coś 2|Coś 3 I tak dalej. Teraz po stronie strony potrzebujesz skrypt, który za pomocą funkcji np. file_get_contents pobierze plik z serwera gry. (Masz apache więc się da). A następnie jakąś funkcją typu explode podzielisz zawartość pliku na tablice, gdzie każda zmienna będzie osobno. Chyba wyjaśniłem dość prosto ;]
dr4ko
Krok po kroku:
Niech twój skrypt zapisuje w pliku txt ciąg znaków (funkcją fwrite()): data|licznik gdzie "data" to aktualna data z godziną i minutami a "licznik" to aktualna ilość graczy. Skrypt powinien się uruchamiać przy każdym wejściu użytkownika na stronę, pobierać tekst z pliku funkcją fopen() i na tekście z pliku używać funkcji explode() (zajrzyj do dokumentacji php). Do dalszej części musisz sobie poszukać gotowego skryptu php porównującego daty (znajdziesz w googlach).

Jeśli aktualna data jest większa od tej zapisanej w pliku o powiedzmy 5 minut to skrypt pobiera dane z bazy, zapisuje do pliku i wyświetla licznik. Jesli nie, to wyświetla licznik z pliku.

Jest to najprostszy sposób. Jeśli nic nie zrozumiałeś z tego co napisałem to nie umiem ci pomóc winksmiley.jpg

Tak w ogóle to ten temat powinien się znaleźć w przedszkolu.
Suspended
Zrobiłem wszystko jak trzeba długo mi to zajęło, ale musiałem się dużo nauczyć z php jak to robiłem bo prawie nic nie wiem o php, w każdym razie w końcu mi się udało i wszystko niby jest ok, odpalam skrypt php:

  1. <?php
  2. $f1 = file_get_contents('http://94.23.195.169/xampp/pvp.txt');
  3. $f2 = file_get_contents('http://94.23.195.169/xampp/pk.txt');
  4. $f3 = file_get_contents('http://94.23.195.169/xampp/namepvp.txt');
  5. $f4 = file_get_contents('http://94.23.195.169/xampp/namepk.txt');
  6. $pvp = explode("|", $f1);
  7. $pk = explode("|", $f2);
  8. $namepvp = explode("|", $f3);
  9. $namepk = explode("|", $f4);
  10. $toppvp = "<h2>It's just temporary</h2><h3>Top PvP</h3><table width=100% border=0>";
  11. $toppk = "<h3>Top PK</h3><table width=100% border=0>";
  12. $x = 0;
  13. $y = 0;
  14. $c = 1;
  15. $d = 1;
  16. while ($x < 20)
  17. {
  18. $toppvp .= '<tr><td>'.$c.' '.$namepvp[$x].'</td><td>'.$pvp[$x].'</td></tr>';
  19. $x++;
  20. $c++;
  21. }
  22. while ($y < 20)
  23. {
  24. $toppk .= '<tr><td>'.$d.' '.$namepk[$y].'</td><td>'.$pk[$y].'</td></tr>';
  25. $y++;
  26. $d++;
  27. }
  28. $toppvp .= '</table>';
  29. $toppk .= '</table>';
  30. echo $toppvp;
  31. echo $toppk;
  32. ?>


I teraz występuje problem, na serwerze skrypt działa i robi co trzeba, a na stronie wyświetla się tylko coś takiego:
http://l2-berserk.pl/pl/lol.php
Powinno być tak jak na serwerze (identyczny skrypt):
http://94.23.195.169/xampp/lol.php

Teraz tak, do plików ".txt" są ustawione prawa "644" i wczytują się każdemu ukazując swoją zawartość, więc wątpię, czy to ma jakiś wpływ na wynik. Więc może mi ktoś powiedzieć czemu ten skrypt nie działa na stronie (host obsługuje php)
R4D3K
Witam, sądząc po odpowiedzi:
Cytat
(...) nie za bardzo znam się na PHP i pochodnych.

liczysz na konkretnego gotowca ;D
Skrypt, który wyciąga dane z bazy widać jest OK, twój też, zwykłe czytanie danych z pliku tekstowego, btw. Upewnij się czy zawsze jest ranking 20 najlepszych osób bo więcej skrypt nie przeczyta ;D
Co do tego skryptu rozumiem, że nie umiesz go "podpiąć" do strony internetowej, więc z racji tego że nie umieściłeś kodu index.php, gdzie pewnie masz jakiegoś diva z ramką statystyki czy coś podobnego. Wystarczy, że tam gdzie chcesz korzystać z rankingu dasz funkcję include('lol.php') . Wtedy zostaną wszystkie dane wyświetlone.
Jak Ci się nie uda wklej kod to Ci pomogę.
Suspended
Nie rozumiesz o co mi chodzi... Chodzi mi o to, że skrypt działa na serwerze, a nie działa na stronie. Mimo, że jest indentyczny.

Cytat("R4D3K")
Upewnij się czy zawsze jest ranking 20 najlepszych osób bo więcej skrypt nie przeczyta ;D


Skrypt, który wyciąga dane z bazy sam napisałem i zapisuje on je do dwóch plików txt, a odpala się w cronie co 10 minut i wszystko jest ok. Tylko mam ten problem, że na stronie skrypt nie działa.
R4D3K
Cytat
Nie rozumiesz o co mi chodzi... Chodzi mi o to, że skrypt działa na serwerze, a nie działa na stronie. Mimo, że jest indentyczny.

Mniej więcej rozumiem, masz skrypt, który pobiera dane z bazy i zapisuje do pliku tekstowego, a ten skrypt który wkleiłeś wczytuje te dane i wyświetla je na stronie.
Teraz takie pytanie czy serwer Apache ma prawa odczytu takiego pliku na serwerze z grą ?
Sprawdzisz to w następujący sposób:
  1. if (empty($f1)) {
  2. echo 'Nic nie przeczytałem =(';
  3. }
  4. else {
  5. echo 'Wczytano plik';
  6. }


Bo z tego co widzę pliki tekstowe znajdują się na serwerze apache i tylko twoim zadaniem jest podanie prawidłowej ścieżki dostępu (a nie odwoływać się przez URL)
Suspended
Omg może przeczytasz to co napisałem, piszę wyraźnie, że na serwerze skrypt działa, ale jak go przeniosłem na host (który nie jest na serwerze) to nie działa, skrypt na hoście i na serwerze był taki sam, więc tu pojawia się pytanie czemu na hoście skrypt nie działa? Mimo, że każdy ma prawo do czytania plików .txt ...
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.