Einzelnen Beitrag anzeigen

.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Eigene Online ServerListe mit PHP und Delphi

  Alt 18. Mai 2007, 00:48
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
  Mit Zitat antworten Zitat