Entwickler-Ecke

Internet / Netzwerk - Online Highscore erstellen


pupu - Di 03.10.06 14:20
Titel: Online Highscore erstellen
Hi...welcher PHP kundige hilft mir einen Online Highscore für mein Spiel zu erstellen? Ich müsste denn ja quasi meine Einsortieren routine in PHP umschreiben und was weiß ich...ich hab eber überhaupt keine ahnung wie ich das machen soll :-/ weil ich überhaupt keine ahnung von PHP hab

Das wär echt geil wenn sich jemand finden würde weil alle meiner freunde drängen mih dazu einen Online Highscore zu machen aber ich KANN sowas alleine nicht...

Bitte meldet euch hier per PN oder über icq 256-329-370 bei mir um weiteres zu besprechen

(mir reicht ein VÖLLIG SIMPLER highscore, der einfach nur online abrufbar ist und sowas...(ihr wisst schon was ich meine ;) ) ansOnsten fragt nach

Danke jetzt schonmal


Xion - Di 03.10.06 14:41

ich habe auch gar keine ahnung von PHP. Ich würds aber einfach so machen, dass ich ne Datei auf den Server leg, und jeder Client zieht sich die dann immer, oder schreibt was rein. Villeicht mit nem prog aufm Server der eingehende Highscores /Highscorenachfragen verwaltet


Spaceguide - Di 03.10.06 14:50

Am saubersten wäre es, wenn du ein PHP oder anderes Skript auf dem Server anstösst, welches die Score in eine Datenbank einpflegt und eventuell die niedrigsten Scores löscht, wenn eine gewisse Anzahl an Scores überschritten wird. Das Skript sollte als Parameter Name, Score und eine Checksumme als Parameter entgegennehmen, um Manipulationen zu erschweren. Die sortierte Highscore-Liste kannst du dann mit einem einfachen SQL-Befehl auslesen. Alternativ kannst du das auch händisch mit einer Datei auf dem Server machen, die der Skript modifiziert. Aber da auch billige Webspaces heute eine Datenbank bieten, finde ich die erste Lösung besser.


pupu - Di 03.10.06 15:43

Ok aber ich hab nach wie vor keine Ahnung von PHP und SQL und das alles ;) deshalb frag ich ja ob mir jemand solche ein script proggen kann... es werden auch nicht mehr Parameter als Name und Punkte übergeben...halt was mega simples...


Narses - Di 03.10.06 22:41

Moin!

Hast du DSL/Flatrate? Dann könntest du dir auch einen DNS-Alias zulegen (http://www.dyndns.org) und das ganze mit einem Delphi-Programm über deinen eigenen PC abwickeln. ;)

cu
Narses


pupu - Mi 04.10.06 15:12

Da bräuchte ich aber unterstüzung bei denk ich ma... wär nett wenn sich einer mit mir in verbindung setzen kann der sowas schonmal gemacht hat


Narses - Mi 04.10.06 15:24

Moin!

user profile iconpupu hat folgendes geschrieben:
Da bräuchte ich aber unterstüzung bei denk ich ma... wär nett wenn sich einer mit mir in verbindung setzen kann der sowas schonmal gemacht hat

Was denn? ;)

DNS-Alias anlegen oder eine Netzwerkanwendung schreiben? :D

cu
Narses


pupu - Mi 04.10.06 15:27

An eine Netzwerkanwendung hatte ich mich mithilfe deines Tutorials mal rangewagt (bin jetzt nur nich mehr drin weil ich das nicht zuende gemacht hab (warum auch immer ;) ))

Also ich hab da jetzt einen Account (Dynamic DNS)

Was jetzt?


Narses - Mi 04.10.06 15:33

Moin!

Hast du einen Router? Wenn ja, unterstützt der dynamische DNS-Dienste (z.B. Netgear)?

cu
Narses


pupu - Mi 04.10.06 16:07

Also ich hab unter "Internet" die Einstellungsmöglichkeit "Dynamic-DNS"...

Was muss ich da unter "domainnamen" eintragen? Was passiert genau wenn ich das einstell? Was für gefahren und was für Vorteile hab ich dadurch?

EDIT: hab "FritzBox FON WLAN" ;)


Horschdware - Mi 04.10.06 16:34

hmm... so schwierig ist das ganze in PHP nicht.
Gedankenspielerei:
Schnapp dir eine Textdatei, die du auf dem Server ablegst.
Darin speicherst du einzelne Zeilen wie z.b.

highscore.txt

Quelltext
1:
2:
3:
Mark, 210
Hans, 98
Jeanette, 332


Das ganze kannst du später wieder auslesen und die interessanten Werte anzeigen lassen.
Ist ein Spieler bereits in der Liste, so kann man ja "seine Zeile" heraussuchen und ihm eine
neue Punktezahl hinzuschreiben.

Wie das ganze gehen soll?
Übergib die Daten, die ins Log zu schreiben sind dem PHP Skript.
z.B. so:

Quelltext
1:
http://www.meinedomain.tld/highscores.php?user=Hans&score=98                    


dann müsste dein Script etwas in dieser Richtung tun:

highscore.php

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<?php
  $user = $HTTP_GET_VARS['user'];          
  $score = $HTTP_GET_VARS['score'];
  $highscore_file = 'highscores.txt';
  
  if (($user != "") & ($score != ""))
  {
    $highscores = file ('highscores.txt');
    $newhighscore  = $user . ' , ' . $score . "\r\n"
    
    $i = 0;
    $user_exists = false;
    
    while ((!$user_exists) && ($i <= count($highscores)))
    {                
      if (strpos($log_lines[$line_index],$nl_item) > 0)
        $user_exists = true;
      else
        $i += 1;            
    }
      
    if ($user_exists == true)
    {        
      $highscores[$i] = $newhighscore;        
    }
    else
    {
      $highscores .= $newhighscore;      
    } 

      $handle = fopen($logfile,"w");
      foreach ($highscores as $highscore)
        fwrite($handle, $highscore);
      fclose($handle);  
  }
  

?>


Keine Garantie auf Funktionalität oder Performance. Hab das schnell in Notepad dahergeschrieben.
Sollte so aber das Problem lösen können.

Jetzt muss das ganze nur noch mit entsprechenden Parametern durch das Programm aufgerufen werden um neue Highscores hinzuzufügen. Denkbar ist jetzt eine Schutzfunktion, die URL Manipulation verhindert (hash-wert aus user und score Wert), sowie eine Auswertung. Die könnte wahlweise wieder in PHP erfolgen oder in einem separaten Programm, das sich die highscore.txt vom Server lädt...


Narses - Mi 04.10.06 17:08

Moin!

user profile iconpupu hat folgendes geschrieben:
hab "FritzBox FON WLAN" ;)

Sorry, mit dem Router kenn ich mich nicht aus. :( (kann dir nur bei LANCOM helfen und evtl. noch bei Netgear)

Vielleicht hat aber jemand anders hier auch so ein Ding und betreibt einen dynamischen DNS-Alias. ;)

cu
Narses


freak4fun - Mi 04.10.06 17:11

Wenn du Datenbanken in Delphi kannst, gibts hier [http://db4free.org/index.php] eine Datenbank, die du per Delphi steuern kannst, ganz ohne php. ;)

MfG
freak


Narses - Mi 04.10.06 17:13

Moin!

@user profile iconfreak4fun: Was nutzt ihm denn eine Datenbank, wenn er die Daten noch nichtmal transportiert bekommt... :nixweiss: ;)
Für seine Zwecke reicht doch schon eine INI-Datei aus, aber das Rein und Raus ist das Problem. :D

cu
Narses


freak4fun - Mi 04.10.06 17:24

user profile iconNarses hat folgendes geschrieben:
Moin!

@user profile iconfreak4fun: Was nutzt ihm denn eine Datenbank, wenn er die Daten noch nichtmal transportiert bekommt... :nixweiss: ;)
Für seine Zwecke reicht doch schon eine INI-Datei aus, aber das Rein und Raus ist das Problem. :D

cu
Narses


Dann hab ich glaub ich das Problem nicht ganz verstanden. Ich dacht er kommt nicht an die Datenbank oder so ewas heran. Es reicht doch, wenn er sich die Daten vom Server abholt und im Programm selbst darstellt. Dann brauch er auch kein Webspace und sowas. Außerdem hat es den gleichen Effekt, alle können sehen wie gut alle sind. Vom Präsentieren auf seine Homepage war doch nicht die Rede, oder? Ich hab es so gesehen, das er sich überlegt hat wie er die Daten online speichern kann und kam dann auf php, meine Lösung würde halt nur noch früher ansetzen. Wenn ich das falsch verstanden hab korrigiert mich bitte.

MfG
freak


pupu - Mi 04.10.06 18:30

ähm m prinzip wär beides möglich aber eigentlich wollte ich einmal einen persönlichen Highscore in das programm einbauen
und eine möglichkeit den Score an einen Highscore der im Internet liegt zu schicken, der vonn allen (auch den nicht-beteiligten) einsehbar ist...quasi eine seite im Internet auf der der Highscore angezeigt wird...

Im Prinzip ändert sich doch nicht viel ob ich das nu mit FritzBox oder mit einem anderen Router einstell... den "domainnamen" muss man doch bei jedem router einstellen denk ich ma...

aber das grundsätzliche was mir dieser Dynamische DNS bringt und was ich davon habe? das kann man doch auch beantworten wenn man nich die FritzBox hat oder? ;)

wie muss ich weiter vorgehen wenn ich alles in der FritzBox konfiguriert hab?


Narses - Mi 04.10.06 20:17

Moin!

user profile iconpupu hat folgendes geschrieben:
quasi eine seite im Internet auf der der Highscore angezeigt wird...

Dann brauchst du auch noch einen Webserver, der diese Seite hostet. Kannst du entweder auch auf deinem PC laufen lassen (siehe Suche bei Google XAMPP), oder du nimmst schon vorhandenen Webspace.

user profile iconpupu hat folgendes geschrieben:
Im Prinzip ändert sich doch nicht viel ob ich das nu mit FritzBox oder mit einem anderen Router einstell... den "domainnamen" muss man doch bei jedem router einstellen denk ich ma...

Ja, das ist richtig, die grundsätzliche Vorgehensweise ist die gleiche, nur die Art und Weise der Routerconfig unterscheidet sich. Du meinst übrigens einen DNS-Alias oder dynamischen Hostnamen, keinen Domänen-Namen. ;)

user profile iconpupu hat folgendes geschrieben:
aber das grundsätzliche was mir dieser Dynamische DNS bringt und was ich davon habe? das kann man doch auch beantworten wenn man nich die FritzBox hat oder? ;)

wie muss ich weiter vorgehen wenn ich alles in der FritzBox konfiguriert hab?

Aaalso: ;)
- dyndns-Account (hast du schon)
- unter MyServices einen dynamischen Host anlegen (besteht aus einem Namen [z.B. mydynhost] und einer Domain [z.B. dyndns.org], ist dann zusammen der DNS-Alias mydynhost.dyndns.org)
- wenn dein Router bei der Einwahl die aktuelle Adresse an einen dynamischen DNS-Dienst weiterleiten kann, dann mußt du in der Config irgendwo die Daten dazu hinterlegen (also konkret deine Accountdaten, damit klar ist, wer du bist, und deinen DNS-Alias, damit klar ist, was du aktualisieren willst)
- es fehlt noch ein Portforwarding [http://www.delphi-library.de/topic_Portforwarding++Eine+kleine+Einfuehrung_80904.html] (auch manchmal Virtual Server genannt) für die Ports, die von "aussen" (also aus dem Internet) durch den Router an deinem PC erreichbar sein sollen. Konkret: der Port, auf dem deine Anwendung kommunizieren soll (z.B. Port 12345 oder so, auf jeden Fall >1024) und wenn du einen Webservice anbieten willst, auch noch Port 80 (http)

Ab jetzt kann man deinen PC aus dem Internet über deinen Router erreichen, und zwar unter der Adresse mydynhost.dyndns.org (als Beispiel).

Es fehlt noch die Anwendung, die deine Highscores verwaltet: du könntest z.B. aufbauend auf meinen Chat-Tuts [http://www.delphi-library.de/topic_Minimaler+LANInternetChat+mit+TServerTClientSocket_60744.html] dein Spiel mit einem Client ausrüsten, der Kontakt zu einem Server auf deinem PC zuhause aufnimmt, wenn ein Highscore veröffentlicht werden soll (setzt natürlich voraus, dass du deinen PC 24/7 läufen lässt...). Diese Anwendung prüft den Score und trägt ihn ggfs. in eine entsprechende Liste ein. Geht theoretisch auch, dass du die ganze lokale Highscoreliste des Clients rüberschiebst und die "interessanten" übernimmst, also eine Art Abgleich.

Diese Liste kannst du dann im Webserver-Fall in eine HTML-Datei umwandeln und in das entsprechende Verzeichnis legen oder per FTP auf einen schon vorhandenen Webspace ablegen. Da die Anwendung, die die Daten auf deinen Webspace hochlädt komplett unter deiner Kontrolle ist, ist FTP kein Problem, denn es bekommt ja niemand dein Kennwort mit. ;)

OK, ich gebe zu, einiges an Aufwand - aber anschließend hast du auch eine Menge gelernt! :D

cu
Narses


Coder - Mi 04.10.06 21:22

So vergiss das mit den 5€.
Im Anhang ist das PHP-Highsore-Script.
Die beiden Dateien haust du auf deinen Webspace.
Dann lädst du mit deinem Prog die Datei runter mit Parametern

Quelltext
1:
http://www.deinwebspace.de/highscores.php?User=Hans&Score=98                    

Und so schickt du die anderen Highscores auch hin.
Dann brauchst du nur noch mit deinem Prog Highscore.txt runterladen, anzeigen und fertig is die Laube.

MfG


Narses - Mi 04.10.06 22:26

Moin!

user profile iconCoder hat folgendes geschrieben:
So vergiss das mit den 5€.

:gruebel: :nixweiss:

user profile iconCoder hat folgendes geschrieben:
Im Anhang ist das PHP-Highsore-Script.
Die beiden Dateien haust du auf deinen Webspace.

Was natürlich voraussetzt, dass er PHP-fähigen Webspace hat. ;)

cu
Narses


Coder - Mi 04.10.06 22:36

Da der kostenlose Webspace bei Arcor kein php unterstützt
empfehl ich dir einen Zweitwebspace auf http://www.funpic.de zu machen.
Die haben zwar Werbeeinblendungen aber im Prog merkt man das eh nicht.

MfG


alias5000 - Mi 04.10.06 22:37

user profile iconNarses hat folgendes geschrieben:
Moin!

user profile iconpupu hat folgendes geschrieben:
quasi eine seite im Internet auf der der Highscore angezeigt wird...

Dann brauchst du auch noch einen Webserver, der diese Seite hostet. Kannst du entweder auch auf deinem PC laufen lassen (siehe Suche bei Google XAMPP), oder du nimmst schon vorhandenen Webspace.


Kleine Anmerkung: laut XAMPP-Readme soll man XAMPP nur für lokale Zwecke einsetzen. Wenn man ins Inet will, sollte man lieber ein eigenes Apache o.ä. aufsetzen.
Aber inwieweit das hier der Fall ist, naja, ich denke mal, dass es für sowas schon reichen würde. Er müsste halt sein XAMPP mit htaccess und root-Passwort und so ein wenig abschotten.

Gruß alias5000


Horschdware - Fr 06.10.06 08:55

user profile iconCoder hat folgendes geschrieben:
So vergiss das mit den 5€.
Im Anhang ist das PHP-Highsore-Script.
Die beiden Dateien haust du auf deinen Webspace.
Dann lädst du mit deinem Prog die Datei runter mit Parametern

Quelltext
1:
http://www.deinwebspace.de/highscores.php?User=Hans&Score=98                    

Und so schickt du die anderen Highscores auch hin.
Dann brauchst du nur noch mit deinem Prog Highscore.txt runterladen, anzeigen und fertig is die Laube.

MfG

... Anhang: phphighscore.zip


Entschuldigung, aber das ist GENAU der Script den ich geschrieben habe und ein paar Beiträge vorher gepostet hatte.
Es ist ja ok, wenn du meinen Script weiterempfiehlst, aber bitte verweise dann doch auf den Autor des Ganzen.
Danke.


Coder - Fr 06.10.06 13:35

Sorry, natürlich ist das dein Script. :)
Ich hab nur Zeile 16, 28 und 31 korrigiert,
da er das alleine nicht geschafft hätte. :wink:

MfG


pupu - Fr 06.10.06 14:05

ok hab schon einen Account bei funpic.de...
Ich werd mich da bei gelegenheit mal ransetzen...aber macht euch auf Fragen gefasst ;)


jaenicke - Fr 06.10.06 14:09

Damit das funktioniert muss die Textdatei auch die entsprechenden Rechte haben. Am besten gibts du einfach 777.
(Im FileZilla FTP-Client beispielsweise im Kontextmenü der Datei auf dem Server unter Attribute)


Horschdware - Fr 06.10.06 15:03

@coder
alles klar!
(ich sehs grade selber: hätte so natürlich nicht funktioniert. thx fürs korrigieren)