Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

fkrauthan

Supermoderator

  • »fkrauthan« ist der Autor dieses Themas

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

1

18.05.2008, 17:35

Online Highscore mit c++ und php

Wichtig
Der Artikel wurde im Magazin nun komplett veröffentlicht.
Der Link: http://sppro.fkrauthan.de/2009/12/09/online-highscore-mit-c-und-php/
Wichtig
Homepage: fkrauthan.de | Browser-game: flowergame.net

Anonymous

unregistriert

2

18.05.2008, 21:47

Kleiner Tipp am Rande: Es immer so einfach wie möglich machen und es nie verkomplizieren.

PHP bietet folgende Funktionen um so unschöne Dinge wie fopen und co. zu umgehen - Vorallem da du strings benutzt, kannst du die beiden Methoden doch recht gut benutzen:

PHP.net Manual: file
- oder -
PHP.net Manual: file_get_contents
PHP.net Manual: explode

Der Code ist doch etwas übersichtlicher und schlanker ;)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
<?
    if (($lines = file_get_contents ('highscore.txt')) === false)
        die;
    
    foreach (explode ("\r\n", $lines) as $line)
    {
        echo "[DATABLOCK]\n";
        echo trim ($line)."\n";
        echo "[/DATABLOCK]\n";
    }
?> 


so long,
unsigned long :)

fkrauthan

Supermoderator

  • »fkrauthan« ist der Autor dieses Themas

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

3

19.05.2008, 00:51

fopen usw ist uebersichtlicher. Und warum sollte ich fopen vermeiden es tut seine sachen so gut wie es soll. und das mit den zusaetlichen new lines is nicht noetig wieso unoetige daten mitschicken. Ausserdem Code ich immo nur ausm gedaechnis da ich im Urlaub bin.

Und ich weiss was diese Funktionen machen nicht ohne so ein wissen habe ich bereits ein CMS gecodet und ein Browsergame.

Und zu deiner Exploder methode. \r\n ist nur Windows. Linux hat nur \n also is deine Methode sry fuer das wort im ARRSCH wenn es unter Linux und Windows Servern laufen soll.

Noch dazu sollte deine loesung langsamer sein als meine also Klappe bitte inzukunft.
Homepage: fkrauthan.de | Browser-game: flowergame.net

Sicaine

unregistriert

4

19.05.2008, 01:13

Zitat von »"fkrauthan"«

fopen usw ist uebersichtlicher. Und warum sollte ich fopen vermeiden es tut seine sachen so gut wie es soll. und das mit den zusaetlichen new lines is nicht noetig wieso unoetige daten mitschicken. Ausserdem Code ich immo nur ausm gedaechnis da ich im Urlaub bin.

Und ich weiss was diese Funktionen machen nicht ohne so ein wissen habe ich bereits ein CMS gecodet und ein Browsergame.

Und zu deiner Exploder methode. \r\n ist nur Windows. Linux hat nur \n also is deine Methode sry fuer das wort im ***** wenn es unter Linux und Windoof Servern laufen soll.


Nur weil du spezielle Dinge schon programmiert hast, sagt das noch lange nichts darueber aus wie gut du bist.

In diesem speziellen Fall wuerde ich auch file verwenden weil es in einer _quick & dirty_ sprache wie PHP, schlicht schneller geschrieben ist und ich mich nicht um das Closen des streams kuemmern muss.

Zudem wuerde ich(jemand der PHP jetzt auch schon 5 Jahre progt) ' " vorziehen.

Ich weis nicht was du spaeter auf C++ Seite zum Auslesen nutzen wirst, ein einfaches csv sollte hier aber voellig ausreichen und nicht soviel overhead erzeugen. Die Verarbeitung dessen ist zudem wesentlich einfacher und ohne jedliche externe Lib moeglich.

Kurz vorm Schluss: In diesem Fall ist es nicht abhaengig vom Betriebsystem ob du \n oder \r\n verwenden must sondern abhaengig von der function dies am Ende ausliest. In deinem Fall wahrscheinlich getline?

Desweiteren heist das Windows und nicht Windoof. Ich benutze neben Linux aufm Laptop und Rootserver Windows auf meinem Hauptsystem und fuehle mich persoenlich angegriffen, wenn du das Betriebssystem meiner Wahl beleidigst.

fkrauthan

Supermoderator

  • »fkrauthan« ist der Autor dieses Themas

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

5

19.05.2008, 01:33

Linux nutze ich als Desktop UND als Server. Windows macht immer nur aerger. Aber habs geaendert. Im uebrigen beindrucken mich deine 5 Jahre erfahrung nicht, da ich selber seit 5 Jahren PHP Progge. Und es ist egal ob " oder ' aber da es ein C++ Totrial ist und die meisten leser C++ proggen ist es fuer diese leichter da in C++ ja "" Strings und '' Chars sind und da ich ja Strings sende. aber Windoof werde ich natuerlich noch in Windows abaendern. wie gesagt das Tutorial ist noch im aufbau.

Des weiteren ist es ja bei seiner Methode schon von belangen da er nach der New Line Zeichenfolge fuer Windows sucht. Das hat dan nichts mit einlesen zutun.
Homepage: fkrauthan.de | Browser-game: flowergame.net

Sicaine

unregistriert

6

19.05.2008, 02:49

Zitat von »"fkrauthan"«

Linux nutze ich als Desktop UND als Server.

Dito. _Desktop_ xmonad unter Gentoo halt aufm Laptop.

Zitat von »"fkrauthan"«

Windows macht immer nur aerger. Aber habs geaendert.

Find ich gut dass du das geaendert hast! Trotzdem verallgemeinerst du in diesem Satz schon wieder. Bei mir macht Windows keinen aerger. Weder XP noch Vista.

Zitat von »"fkrauthan"«

Im uebrigen beindrucken mich deine 5 Jahre erfahrung nicht, da ich selber seit 5 Jahren PHP Progge. Und es ist egal ob " oder ' aber da es ein C++ Totrial ist und die meisten leser C++ proggen ist es fuer diese leichter da in C++ ja "" Strings und '' Chars sind und da ich ja Strings sende.

Mh naja ich hab nach der relativ langen Zeit einfach ein spezielles Gefuehl fuer die Syntax/den Style der Sprache entwickelt was fuer mich einfach heist ' zu verwenden wenn ich in einem String nichts von PHP parsen lasse. Da lass ich fuer mich zumindest auch nicht das Argument _fuer Anfaengertut_ durchgehen. Immerhin wuerd ich einem Anfaenger nicht solche Details vorenthalten bzw. sie ganz ignorieren lassen. Die 5 Jahre hab ich quasi arroganter weise erwaehnt weil ich von mir aus davon ausgehe, dass jeder diese Einstellung irgenwann haben wird.


Zitat von »"fkrauthan"«

Des weiteren ist es ja bei seiner Methode schon von belangen da er nach der New Line Zeichenfolge fuer Windows sucht. Das hat dan nichts mit einlesen zutun.
Das hat immer noch nichts mit dem Betriebssystem zu tun sondern wie er etwas abspeichert und welche Methoden er verwendet.

Und weil gerade noch eine Erweiterung kam deines Tuts: Fuer die Pruefsumme,verwende doch einfach md5()?

fkrauthan

Supermoderator

  • »fkrauthan« ist der Autor dieses Themas

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

7

19.05.2008, 03:25

einfach md5 ist zu einfach zu knacken. Und nunja ich hab schon begruendet wieso ich " verwende. Hab mir deine Projekte mal angeschaut und ich finde sie gut und moechte keines falls streit mit dir haben.

Immerhin soll das Tut jeder einsetzen. Sollten nun alle md5 Pruefsumme verwenden duerfte deren Highscore sehr schnell gehackt sein.
Homepage: fkrauthan.de | Browser-game: flowergame.net

8

19.05.2008, 11:20

Ich wollte nur mal kurz etwas anmerken:
da du es später mit c++ parsen willst, sollte der ausgegebene Text ja sicher die Grundform

Quellcode

1
2
3
4
[HIGHSCOREDATA]
[DATABLOCK]xyz[/DATABLOCK]
[DATABLOCK]zyx[/DATABLOCK]
[/HIGHSCOREDATA]

haben.
Wenn er bei einem Script einen Fehler feststellt, rufst du die(); auf. Dadurch wird die Scriptausführung abgebrochen, deshalb wird bei einem Fehler nie das letzte [/HIGHSCOREDATA] ausgegeben. Wenn das kein gewolltes Verhalten ist, würde ich

Quellcode

1
die("[/HIGHSCOREDATA]");

benutzen.

MfG Steef

Anonymous

unregistriert

9

19.05.2008, 11:52

Zitat von »"fkrauthan"«

fopen usw ist uebersichtlicher. Und warum sollte ich fopen vermeiden es tut seine sachen so gut wie es soll. und das mit den zusaetlichen new lines is nicht noetig wieso unoetige daten mitschicken. Ausserdem Code ich immo nur ausm gedaechnis da ich im Urlaub bin.

Und ich weiss was diese Funktionen machen nicht ohne so ein wissen habe ich bereits ein CMS gecodet und ein Browsergame.

Und zu deiner Exploder methode. \r\n ist nur Windows. Linux hat nur \n also is deine Methode sry fuer das wort im ARRSCH wenn es unter Linux und Windows Servern laufen soll.

Noch dazu sollte deine loesung langsamer sein als meine also Klappe bitte inzukunft.
Sag mal, bist du immer so unfreundlich wenn man dir konstruktive Kritik gibt oder ist das nur ein Nebenprodukt durch irgendwelche Komplexe?

Dazu halte ich es für unwahrscheinlich, das fopen Memorymapping benutzt im Gegensatz zu get_file_contents - Aber da ich gerade keinen PHP-Quelltext vor der Nase habe, kann ichs leider nur nachprüfen.

Was du gecodet hast und was nicht interessiert eigentlich keinen im Großen und Ganzen, nur eines möchte ich dir nahe legen, da ich es aus Erfahrung kenne: Mit deiner "leck mich am Arsch haltung", unfreundlichkeit und vorsätzlichen "Du bist ein Idot, Ich hab das und das gecodet, also Klappe" wirst du es nicht weit bringen.

Denk mal drüber nach, bevor du dich so aufplusterst. Solche regelrechte Anmachen werfen kein gutes Licht auf dich und dein Tutorial.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

10

19.05.2008, 13:17

Geschmeidig bleiben Freunde 8)
fkrauthan deine erste Reaktion war wirklich etwas übertrieben.

Werbeanzeige