Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Eigene Online ServerListe mit PHP und Delphi (https://www.delphipraxis.net/92333-eigene-online-serverliste-mit-php-und-delphi.html)

.chicken 18. Mai 2007 00:48


Eigene Online ServerListe mit PHP und Delphi
 
Also, ich hoffe ich kann hiermit vielleicht wem helfen, deswegen hab ich einfach mal gedacht ich poste es hier, denn nachdem ich hier im Forum immer soviel Hilfe bekomme würd ich gerne auch ein bisschen davon zurückgeben (solange meine Fähigkeiten das zulassen).

Also der folgende Code basiert hauptsächlich auf PHP, allerdings ist es damit relativ leicht möglich sich seine eigene Online-ServerListe zu erstellen.

Folgender Code wird in eine PHP-Datei hochgeladen. Er fügt einer Textdatei die entsprechenden ServerEinträge mit IP hinzu.
Dazu sollte eine entsprechende Textdatei (hier: ServerListe.txt) im selbigen Verzeichnis liegen.
Code:
<?php
  $dateiarray = file("ServerListe.txt");      //Die Datei ServerListe.txt wird als Array eingelesen
  $datei = fopen("ServerListe.txt", "w+");    //Dann wird die Datei noch zum schreiben geöffnet
  $name= str_replace(";", "", $_GET["name"]); //Der Name der in der URL als Variable übergeben wurde wird abgefragt (dabei wird ';' entfernt weil es später als Trennzeichen dient)
  $ip = $_SERVER['REMOTE_ADDR'];              //IP wird abgefragt
  $timestamp = time();                        //zuletzt werden noch die Sekunden seit 1970 (oder so? is ja auch egal) abgefragt (um später zu wissen, wann der Server sich das letzte mal beim Script gemeldet hat)
  foreach ($dateiarray as $line) {             //so hier in der Schleife wird das Array durchgegangen und jede Zeile wieder in die Datei geschrieben (außer die Zeile enthält den gleichen Namen und die gleiche IP die übermittelt wurden)
    $text = explode(';', $line);
    if ($text[0] != $name or $text[1] != $ip) {
    if ($text[2] > $timestamp - 30) {
      fwrite($datei, $line);
    }
    }
  }
  fwrite($datei, $name.';'.$ip.';'.$timestamp.";\n"); //zu guter letzt wird noch der neue Eintrag mit IP Name und den Sekunden hinzugefügt! (mit dem Trennzeichen ';' dazwischen)
  fclose($datei);                              //und die Datei geschlossen!
?>

So das ist das Script zum hinzufügen von Servern.

Nun zum abfragen selbiger.

Code:
<?php
  $dateiarray = file("ServerListe.txt");        //Ddas hier dürfte sich erstmal alles selbst erklären
  $datei = fopen("ServerListe.txt", "w+");    
  $timestamp = time();                        
  foreach($dateiarray as $line) {                //so in dieser Schleife wird zuerst für jede Zeile geprüft ob die Einträge noch aktuell sind (hier: nicht älter als 30Sekunden), wenn das der Fall ist, werden sie wieder zur Datei hinzugefügt (damit sie immer aktuell bleibt) und dann wird sie per echo-Befehl ausgegeben
    $buffer = explode(';', $line);
    if ($buffer[2] > $timestamp - 30) {
      fwrite($datei, $line);
      echo $line;
    }
  }
  fclose($datei);
?>

So, wenn man diese beiden Scripte auf einen Webserver hochläd, dann kann man zB per Indy-Komponenten (so hab ichs zumindest gemacht (IdHttp)) auf sie zugreifen.
Mit IdHttp.Post(zum hinzufügen von Servern) und IdHttp.Get(Zum Abrufen der Server), zB.
Man muss die Daten dann richtig splitten, um Name und IP zu trennen (die Sekunden dürften dann auch ziemlich unwichtig sein und können verworfen werden) und dann kann man sie zB in eine StringList eintragen. Schon hat man ne ServerListe :)

Naja ich hoffe ich kann damit vielleicht irgendjemand helfen. Zum Schluss sei noch zu sagen, dass ich bei diesem Script auch ein bisschen Hilfe hier im Forum erhalten habe ;-)

DP-Maintenance 20. Mai 2007 00:21

DP-Maintenance
 
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Programmieren allgemein" verschoben.
Die Codelib ist eher für Delphi- / .Net-Codeschnipsel gedacht ;)

ghost007 20. Mai 2007 00:35

Re: Eigene Online ServerListe mit PHP und Delphi
 
hey, hast du für die idhttp post/get ein beispiel? also welche sachen man da nacheinander angeben muss?

MfG - Ghost007

.chicken 20. Mai 2007 11:30

Re: Eigene Online ServerListe mit PHP und Delphi
 
Ja, allerdings muss ich zugeben dass ichs auch nicht so ganz geschickt gelöst habe.
Also das IdHTTP.Get ist ganz einfach:
Delphi-Quellcode:
var
  Buffer: String;
begin
  Buffer := IdHTTP.Get(URL zur Datei);
  {Jetzt kann man nacheinander den String splitten (Trennzeichen ist ';')
   wobei die Infos immer in folgender Reihenfolge stehen:
   Name;IP;Sekunden
   und die Sekunden wohl ziemlich unwichtig sein dürften!}
end;
So und das mit dem Post habe ich wie gesagt etwas "unsauber" gelöst, weil bei mir das mit den Parametern der Post-Funktion nicht geklappt hat:
Delphi-Quellcode:
{Edit: einfacher nur mit Get zu lösen, danke an JamesTKirk ;-)}
begin
  IdHTTP.Get(URL zur Datei und daran noch ?name=euerservername)
end;
Hoffe ich konnte helfen!

JamesTKirk 20. Mai 2007 11:47

Re: Eigene Online ServerListe mit PHP und Delphi
 
Hi!

Du könntest für's Hinzufügen von Servern auch einfach

Delphi-Quellcode:
IdHTTP.Get(URL zur Datei und daran noch ?name=euerservername);
verwenden, da Post und Get einfach nur die Art der Übertragung von Daten zum Server bezeichnet. Es heißt also nicht, dass Get "empfängt" und Post "sendet". Es "senden" und "empfangen" nämlich beide. :zwinker:
Bei Get werden die zu übertragenden Daten in der URL mitgeliefert (-> '?=blabla') und bei Post im HTTP-Header (oder so).

.chicken 20. Mai 2007 11:56

Re: Eigene Online ServerListe mit PHP und Delphi
 
Asoo ;-)
Super danke, dann hab ich auch noch was dabei gelernt ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz