![]() |
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
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 ;) |
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 |
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:
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:
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;
Delphi-Quellcode:
Hoffe ich konnte helfen!
{Edit: einfacher nur mit Get zu lösen, danke an JamesTKirk ;-)}
begin IdHTTP.Get(URL zur Datei und daran noch ?name=euerservername) end; |
Re: Eigene Online ServerListe mit PHP und Delphi
Hi!
Du könntest für's Hinzufügen von Servern auch einfach
Delphi-Quellcode:
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:
IdHTTP.Get(URL zur Datei und daran noch ?name=euerservername);
Bei Get werden die zu übertragenden Daten in der URL mitgeliefert (-> '?=blabla') und bei Post im HTTP-Header (oder so). |
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 17:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz