Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
|
tutorial:server:php_querry_script [2012/01/24 19:05] HSFighter [Zusammenfassung der Klasse] |
tutorial:server:php_querry_script [2012/11/02 02:31] (aktuell) HSFighter [Funktion für die Auswertung] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== PHP Server-Query Script ====== | + | ====== PHP HL² Server-Query Script ====== |
| Das hier ist ein Tutorial für ein PHP Server-Query Script | Das hier ist ein Tutorial für ein PHP Server-Query Script | ||
| das Informationen von einem HL2/CS:S Server auslesen und anzeigen kann. | das Informationen von einem HL2/CS:S Server auslesen und anzeigen kann. | ||
| Zeile 18: | Zeile 18: | ||
| * Daten ins Array laden | * Daten ins Array laden | ||
| - | **Um Player vom Server ab zu fragen (z.B. Playername, Frags usw.), muss man eine Art "Ticket" anfordern. | + | **Um Player vom Server ab zu fragen (z.B. Playername, Frags usw.), |
| + | muss man eine Art "Ticket" anfordern. | ||
| Dieses Ticket ist # eine begrenzte Zeit gültig und ermöglicht es die Informationen zu bekommen.** | Dieses Ticket ist # eine begrenzte Zeit gültig und ermöglicht es die Informationen zu bekommen.** | ||
| - | Verbindung zum Server herstellen | + | * Verbindung zum Server herstellen |
| * Ein Ticket anfordern (//Challenge//) | * Ein Ticket anfordern (//Challenge//) | ||
| * Einen Wert zum Server schicken mit angehängten Ticket (//das was wir vorher abgefragt haben//) | * Einen Wert zum Server schicken mit angehängten Ticket (//das was wir vorher abgefragt haben//) | ||
| Zeile 48: | Zeile 49: | ||
| var $cvarlist; | var $cvarlist; | ||
| - | var $A2S_SERVERQUERY_GETCHALLENGE = "\x57"; // challenge | + | var $A2S_SERVERQUERY_GETCHALLENGE = "\x55\xFF\xFF\xFF\xFF"; // challenge |
| var $A2S_INFO = "TSource Engine Query\x00"; // info | var $A2S_INFO = "TSource Engine Query\x00"; // info | ||
| var $A2S_PLAYER = "\x55"; // player | var $A2S_PLAYER = "\x55"; // player | ||
| Zeile 77: | Zeile 78: | ||
| ==== Funktion für die Auswertung ==== | ==== Funktion für die Auswertung ==== | ||
| - | Jetzt brauchen wir Funktionen, die die Daten auswertet die uns der Server zurück schick.[/b] Man muss sich das folgendermaßen vorstellen:\\ | + | Jetzt brauchen wir Funktionen, die die Daten auswertet die uns der Server zurück schick. Man muss sich das folgendermaßen vorstellen:\\ |
| Der Server schickt uns eine Kette mit Informationen, die alle hintereinander kommen. Die müssen wir an bestimmten stellen trennen, damit wir die Informationen unterteilen können.\\ | Der Server schickt uns eine Kette mit Informationen, die alle hintereinander kommen. Die müssen wir an bestimmten stellen trennen, damit wir die Informationen unterteilen können.\\ | ||
| Zeile 96: | Zeile 97: | ||
| function get_int16() { | function get_int16() { | ||
| $unpacked = unpack('sint', fread($this->fp, 2)); | $unpacked = unpack('sint', fread($this->fp, 2)); | ||
| - | return $unpacked[int]; | + | return $unpacked["int"]; |
| } | } | ||
| Zeile 102: | Zeile 103: | ||
| function get_int32() { | function get_int32() { | ||
| $unpacked = unpack('iint', fread($this->fp, 4)); | $unpacked = unpack('iint', fread($this->fp, 4)); | ||
| - | return $unpacked[int]; | + | return $unpacked["int"]; |
| } | } | ||
| Zeile 108: | Zeile 109: | ||
| function get_float32() { | function get_float32() { | ||
| $unpacked = unpack('fint', fread($this->fp, 4)); | $unpacked = unpack('fint', fread($this->fp, 4)); | ||
| - | return $unpacked[int]; | + | return $unpacked["int"]; |
| } | } | ||
| // einen String vom Server holen | // einen String vom Server holen | ||
| function get_string() { | function get_string() { | ||
| + | $str = ''; | ||
| while(($char = fread($this->fp, 1)) != chr(0)) { | while(($char = fread($this->fp, 1)) != chr(0)) { | ||
| $str .= $char; | $str .= $char; | ||
| Zeile 133: | Zeile 135: | ||
| $this->get_byte(); | $this->get_byte(); | ||
| $challenge = $this->get_4(); | $challenge = $this->get_4(); | ||
| - | return $challenge; | ||
| fclose($this->fp); | fclose($this->fp); | ||
| + | return $challenge; | ||
| + | |||
| } </code> | } </code> | ||
| Wir benutzen unsere Verbindungsfunktionen und übergeben den Wert "//**W**//" (//**\x57**//) den wir vorher bei der Deklaration in die Variable "//**A2S_SERVERQUERY_GETCHALLENGE**//" geschrieben haben.\\ | Wir benutzen unsere Verbindungsfunktionen und übergeben den Wert "//**W**//" (//**\x57**//) den wir vorher bei der Deklaration in die Variable "//**A2S_SERVERQUERY_GETCHALLENGE**//" geschrieben haben.\\ | ||
| Zeile 215: | Zeile 218: | ||
| ===== Zusammenfassung der Klasse ===== | ===== Zusammenfassung der Klasse ===== | ||
| <code=php><?php | <code=php><?php | ||
| + | /** | ||
| + | * ============================================================================= | ||
| + | * This class will get infos from a HL2 server over php | ||
| + | * | ||
| + | * @author HSFighter | ||
| + | * @special thx to Chrisber | ||
| + | * @version 1.1.0 | ||
| + | * @package PHP Server-Query Script | ||
| + | * @link http://sourceserver.info | ||
| + | * | ||
| + | * @version 1.1.0: serverstatus.class.php by hsfighter $ | ||
| + | * ============================================================================= | ||
| + | */ | ||
| + | |||
| class HLServerAbfrage { | class HLServerAbfrage { | ||
| Zeile 263: | Zeile 280: | ||
| function get_int16() { | function get_int16() { | ||
| $unpacked = unpack('sint', fread($this->fp, 2)); | $unpacked = unpack('sint', fread($this->fp, 2)); | ||
| - | return $unpacked[int]; | + | return $unpacked["int"]; |
| } | } | ||
| Zeile 269: | Zeile 286: | ||
| function get_int32() { | function get_int32() { | ||
| $unpacked = unpack('iint', fread($this->fp, 4)); | $unpacked = unpack('iint', fread($this->fp, 4)); | ||
| - | return $unpacked[int]; | + | return $unpacked["int"]; |
| } | } | ||
| Zeile 275: | Zeile 292: | ||
| function get_float32() { | function get_float32() { | ||
| $unpacked = unpack('fint', fread($this->fp, 4)); | $unpacked = unpack('fint', fread($this->fp, 4)); | ||
| - | return $unpacked[int]; | + | return $unpacked["int"]; |
| } | } | ||
| // einen String vom Server holen | // einen String vom Server holen | ||
| function get_string() { | function get_string() { | ||
| + | $str = ''; | ||
| while(($char = fread($this->fp, 1)) != chr(0)) { | while(($char = fread($this->fp, 1)) != chr(0)) { | ||
| $str .= $char; | $str .= $char; | ||
| Zeile 373: | Zeile 391: | ||
| // Server Angaben | // Server Angaben | ||
| - | $ip = '85.131.170.95'; | + | $ip = '176.57.137.35'; |
| $port = '27015'; | $port = '27015'; | ||
| $mappic_path = 'http://meine-hp.de/mappics/css/'; | $mappic_path = 'http://meine-hp.de/mappics/css/'; | ||