Zarejestruj Zapomniałeś hasła?
Wyniki On-Line dla zielonych.
Dodany 10 kwietnia 2009, 09:43 Odsłon 4755
Edytory Ocena
 (18 głosów)
Kategoria Silnik Poziom (Dla n0... początkujących)
Witam.

W tym kursie dowiecie się jak w prosty sposób stworzyć własny system wyników OnLine!

Aby stworzyć taki system potrzebujemy serwer z obsługą PHP i MySQL. Gdy już takowy mamy, logujemy się na nim do 'phpmyadmin' i tam tworzymy bazę danych.



Jako nazwę podajemy 'wyniki'. Dalej tworzymy tabelę w naszej bazie o nazwie 'rekordy'



Dwa pola, na Nick i Wyniki.



Teraz zaczną się trochę schody, ponieważ zaczynamy pisać skrypt PHP. Logujemy się na nasz serwer poprzez klienta FTP, tworzymy plik wyniki.php - wrzucamy na serwer i zaczynamy edytować.

Zacznijmy od otworzenia tagów PHP, mianowicie :


<?

?>



Teraz będę starała się jak najjaśniej wytłumaczyć cały kod, który napiszemy (cobyście jakąś lekcję wyciągnęli z tego).

Podajemy dane niezbędne do połączenia się z naszą bazą MySQL:

mysql_connect("localhost", "LOGIN", "HASLO");
mysql_select_db("wyniki");


(w miejsce loginu podajemy login, a w miejscu hasla podajemy haslo - wiadomo.)

Teraz definiujemy zmienne, pierwsze 3 będą pobierać dane metodą GET z paska adresu, a czwarta będzie służyła do numeracji miejsc w tabeli.


$nick = $_GET['nick'];
$wynik = $_GET['wynik'];
$abcd = $_GET['abcd'];
$place = 1;



Jak to działa ? Wejdź na swoją stronę //adres/wyniki.php i do adresu dopisz ?nick=wow a w kodzie dodaj
echo $nick;
Wtedy skrypt pobierze zmienną nick z paska adresu i wyświetli ją na stronie.

Teraz dochodzi nam instrukcja warunkowa IF(...). Jeżeli zajdą podane warunki to wtedy uruchomi się skrypt:

if($nick !== "" && $wynik !== "" && $abcd == "systemantywlamaniowy"){

W tym wypadku warunki do spełnienia są takie, że zmienne $nick, $wynik nie mogą być puste, a zmienna $abcd musi być równa 'systemantywlamaniowy'.
Po co ta zmienna $abcd? Dla 'zwiększenia' bezpieczeństwa.

Teraz:


$query = 'INSERT INTO rekordy VALUES("'.$nick.'","'.$wynik.'")';
mysql_query($query);
}


Wysyłamy do bazy danych polecenie, 'Dodaj do rekordy Wartosci(...)". Czyli skrypt doda nasz wynik do tabeli w bazy danych.

Teraz PHP pomieszany z odrobinką HTML:

echo '<center><table border="1" width="500"><tr><td><center><h1>Wyniki onlajn by Taeguki</h></center></td></tr>';
$Q = mysql_QUERY("SELECT * FROM rekordy WHERE nick != 'NULL' ORDER BY wynik DESC");
while($X = mysql_fetch_array($Q)){

echo '<tr><td><center>'.$place.'. '.$X['nick'].' '.$X['wynik'].'</center></tr></td>';
$place++;

}
echo '</table></center>';


HTML pominę, wytłumaczę poszczególne elementy:
SELECT * FROM rekordy WHERE nick != 'NULL' ORDER BY wynik DESC =
Weź wszystkie z rekordy gdzie nick nie jest równy "" segreguj od największego do najmniejszego wyniku.

while($X = mysql_fetch_array($Q)){

Podczas gdy wykonuje zapytanie do tablic, reszta kodu wyświetla wyniki w tabelce.

$place++; - zwiększa wartość zmiennej o 1.

No i to już by było na tyle naszego kodu, w całości wygląda on tak:


<?
mysql_connect("localhost", "LOGIN", "HASLO");
mysql_select_db("wyniki");

$nick = $_GET['nick'];
$wynik = $_GET['wynik'];
$abcd = $_GET['abcd'];
$place = 1;

if($nick !== "" && $wynik !== "" && $abcd == "systemantywlamaniowy"){
$query = 'INSERT INTO rekordy VALUES("'.$nick.'","'.$wynik.'")';
mysql_query($query);
}
echo '<center><table border="1" width="500"><tr><td><center><h1>Wyniki onlajn by Taeguki</h></center></td></tr>';
$Q = mysql_QUERY("SELECT * FROM rekordy WHERE nick != 'NULL' ORDER BY wynik DESC");
while($X = mysql_fetch_array($Q)){

echo '<tr><td><center>'.$place.'. '.$X['nick'].' '.$X['wynik'].'</center></tr></td>';
$place++;

}
echo '</table></center>';
?>




Teraz przechodzimy do edytora, wstawiamy obiekt ActiveX poza widoczny ekran gry, wybieramy z niego Microsoft Web Browser. Następnie wstawiamy EditBox - Nick, Counter - Wynik, Button - Dodaj.

Dla testu wklepałam sobie takie zdarzenia:

Wyniki
1
• Start of Frame
Set Counter(wynik) random(100)
2
• Button "Dodaj" clicked
Navigate -> "http://adresstrony/wyniki.php?nick="+Edittext$( "nick" )+"&wynik="+Str$(value( "wynik" ))+"&abcd=systemantywlamaniowy"
3
• ProgressChange(Progress="100",ProgressMax="100)
End of Application


P.S Kody PHP są na czerwono, ponieważ coś funkcja KOD nie działa.
Ostatnio edytowane 10 kwietnia 2009, 09:44 przez taeguki
Komentarze
Piter @ 21 grudnia 2009, 15:23
Wyskakuje mi błąd w 16 linii.
Cytat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/a6256170/public_html/wyniki.php on line 16
Może ktoś wie jak to naprawić?
Ostatnio edytowane 21 grudnia 2009, 18:11 przez Piter
taeguki @ 23 maja 2009, 17:51
Jedyna rzecz jaka przychodzi mi teraz do głowy, to walnięcie obiektu ActiveX na ekranie widzianym i ustawić navigate na link do wyników.
venom @ 23 maja 2009, 11:33
Tutek dopracowany:)... Ale teraz jak użyć tego pluga do tego by lista się ładowała do gry z neta:)
drc @ 28 kwietnia 2009, 18:43
no niestety nie działa, już wcześniej sprawdzałem tą tyldę .... kombinowałem też z wrzuceniem tego na yoyo.pl i nic. Jakieś inne sugestie
taeguki @ 28 kwietnia 2009, 16:40
Ano, bo jak korzystasz z krasnala to po localhost/~ zawsze jest tylda (no, przed nazwą folderu w którym jest strona). Czyli w tym wypadku http://localhost/~wyniki/...
Ostatnio edytowane 28 kwietnia 2009, 16:41 przez taeguki
drc @ 27 kwietnia 2009, 22:32
nie znam właściwie tej wtyczki ale pracuje właśnie nad wynikami i coś mi nie działa... wydaje mi się że mam wszystko okej zrobione ale nie dodaje wyników. KODZIO: [size=7][code]<?php mysql_connect("localhost", "root", "krasnal"); mysql_select_db("wyniki"); $nick = $_GET['nick']; $wynik = $_GET['wynik']; $abcd = $_GET['abcd']; $place = 1; if($nick !== "" && $wynik !== "" && $abcd == "systemantywlamaniowy"){ $query = 'INSERT INTO rekordy VALUES("'.$nick.'","'.$wynik.'")'; mysql_query($query); } echo '<center><table border="1" width="500"><tr><td><center><h1>Wyniki onlajn by Taeguki</h></center></td></tr>'; $Q = mysql_QUERY("SELECT * FROM rekordy WHERE nick != 'NULL' ORDER BY wynik DESC"); while($X = mysql_fetch_array($Q)){ echo '<tr><td><center>'.$place.'. '.$X['nick'].' '.$X['wynik'].'</center></tr></td>'; $place++; } echo '</table></center>'; php?>[/code][/size] i zrzut ewentów: [IMG]http://images48.fotosik.pl/113/d4e2321aa06bafd9m.gif[/IMG]
szymat @ 25 kwietnia 2009, 15:08
System może prosty, ale kod PHP przeraża. 6/7
Tymon @ 11 kwietnia 2009, 21:13
O ile się nie mylę to komponent używa po prostu Tridenta ( silnik IE ) i tyle. Windows domyślnie ma jego bibliotekę zawsze przy sobie więc to nie jest specjalnie problemem. EDIT Ani widu ani słychu.
Ostatnio edytowane 19 kwietnia 2009, 17:05 przez Tymon
Kamil @ 11 kwietnia 2009, 21:08
Właśnie, to nie jest przypadkiem tak, że nie będzie działać u tego kto nie ma zainstalowanego IE?
Tymon @ 11 kwietnia 2009, 20:32
Dobra, kilka moich uwag. - Nie wszystkie serwery mają włączoną obsługę short tagów dla php, dlatego bezpieczniej użyć <?php ... ?>. - Jak lamberski zauważył, trochę niebezpiecznie pozostawiać dane przesyłane GETem o tak o. - Brak jakiejkolwiek kontroli nad błędami, np. gry serwer MySQLa odmówi posłuszeństwa. I stąd kolejna uwaga: mogło by się obyć bez MySQLa. - "systemantywlamaniowy" za łatwo przechytrzyć. Wychwycenie zapytania HTTP wychodzącego z komputera to pikuś. - No i akurat komponent Web Browsera używa w pewien sposób Internet Explorera. - Kod trochę nieelegancko poukładany.:)
Ostatnio edytowane 11 kwietnia 2009, 20:34 przez Tymon
Pomian @ 11 kwietnia 2009, 00:00
Dzięki za poradę:) Mam nadzieję, że uda mi się rozgryźć tę wtyczkę.
mikpol0 @ 10 kwietnia 2009, 17:14
Zupełnie jak technologia AJAX. Nevermind. Kurs zwięzły, wszystko zrozumiałem ( pomijając fakt, że umiem to robić:) ) .
taeguki @ 10 kwietnia 2009, 12:43
Nie otwiera okienka przeglądarki. Dlatego ten plugin jest schowany poza oknem gry żeby nie było widoczne jaka strona jest otwierana, zresztą paska adresu i tak nie zobaczysz wtedy, więc za bardzo nie będziesz wiedział jakie zmienne są przesyłane. Innymi słowy, to jest otwierane jakby w oknie gry, tylko że tego nie widać bo jest poza jego polem xD Nie otwiera Ci strony w jakimś Internet Explorer czy coś.
Ostatnio edytowane 10 kwietnia 2009, 12:44 przez taeguki
KnE @ 10 kwietnia 2009, 11:40
Co do TGFa i wyników online, używamy pluginu NobuHTTP.
Kamil @ 10 kwietnia 2009, 11:33
To działa tak, że otwiera okienko przeglądarki? Jeśli tak to chyba każdy może dodać jeden wynik, zobaczyć jaki jest ten ciąg antywłamaniowy i potem fałszować wyniki do woli. ;p Sławowe onlinesy też tak działają?
Fanotherpg @ 10 kwietnia 2009, 11:31
Możliwe że przy użyciu rozszerzeń MOO bądź Nobu HTTP. Ale musiałbyś w tej kwestii chociażby do Pozika zagadać.
lamberski @ 10 kwietnia 2009, 11:24
No i fajny kurs ^^ Proponowałbym jeszcze zabezpieczyć dane, zamiast: [c]$nick = $_GET['nick']; $wynik = $_GET['wynik']; $abcd = $_GET['abcd']; $place = 1;[/c] dać [c]$nick = mysql_real_escape_string($_GET['nick']); $wynik = intval($_GET['wynik']); $abcd = $_GET['abcd']; $place = 1;[/c] A temu [code] się jeszcze przyjrzę...
Ostatnio edytowane 10 kwietnia 2009, 15:23 przez lamberski
Pomian @ 10 kwietnia 2009, 11:10
Czy istnieje jakakolwiek możliwość zrobienia tabeli wyników online w TGF1 ?
Dodaj komentarz
Kolor:   Rozmiar:

Dodał taeguki
Profil PW
Twoja ocena
Inne tego autora
b/d
^ Do góry
© 2009 - 2012 Fabryka Gier. Publikowanie materiałów tylko za zgodą autorów.
Realizacja: Maciej Lamberski *-: