Benutzer-Werkzeuge

Webseiten-Werkzeuge


tutorial:server:php_querry_script

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

tutorial:server:php_querry_script [2009/11/13 16:44]
HSFighter
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 8: Zeile 8:
 Ein Script, was nur halb funktionierte und kaum eine Funktionierende Funktion hatte. Ein Script, was nur halb funktionierte und kaum eine Funktionierende Funktion hatte.
 Nach und nach haben wir beide noch Funktionen hinzugefügt, geändert und verbessert.\\ \\  Nach und nach haben wir beide noch Funktionen hinzugefügt, geändert und verbessert.\\ \\ 
- 
-Da Ich nicht mehr weiß wo ich das Original Tutorial gefunden habe, 
-bevor wir es geändert haben, 
-bitte ich den Autor der Das Grundgerüst geschrieben hat sich mal hier zu melden 
-oder mir eine PM zu schrieben wenn er das hier liest! 
  
 Hier mal ein Beispiel wie das Ergebnis ausschaut: [[http://www.server.hsfighter.net]] Hier mal ein Beispiel wie das Ergebnis ausschaut: [[http://www.server.hsfighter.net]]
Zeile 23: 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. Dieses Ticket ist # eine begrenzte Zeit gültig und ermöglicht es die Informationen zu bekommen.**  +**Um Player vom Server ab zu fragen (z.B. Playername, Frags usw.),  
-Verbindung zum Server herstellen +muss man eine Art "Ticket" anfordern.  
 +Dieses Ticket ist # eine begrenzte Zeit gültig und ermöglicht es die Informationen zu bekommen.**  
 +  * 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 40: Zeile 37:
  
 }       </code> }       </code>
 +
 ==== Variablen deklarieren ==== ==== Variablen deklarieren ====
 Jetzt werden wir erst mal unsere wichtigsten Variablen deklarieren und einige schon mit Werten füllen da wir diese Werte dann nachher zu unserem Gameserver Senden: Jetzt werden wir erst mal unsere wichtigsten Variablen deklarieren und einige schon mit Werten füllen da wir diese Werte dann nachher zu unserem Gameserver Senden:
Zeile 51: 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 68: Zeile 66:
   }   }
 }      </code> }      </code>
-Damit stellen wir eine und Verbindung zu unserem Server her und speichern sie in der Variablen "[b][i]$this->fp[/i][/b]". +Damit stellen wir eine und Verbindung zu unserem Server her und speichern sie in der Variablen "//**$this->fp**//". 
 Die Funktion ''fsockopen'' brauch dazu die beiden Variablen mit der IP und dem PORT.\\ \\   Die Funktion ''fsockopen'' brauch dazu die beiden Variablen mit der IP und dem PORT.\\ \\  
  
Zeile 80: 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 99: 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 105: 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 111: 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 136: 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 218: 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 230: Zeile 244:
  
  
-      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 266: 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 272: 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 278: 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 302: Zeile 317:
         $this->get_byte();         $this->get_byte();
         $challenge = $this->get_4();         $challenge = $this->get_4();
-        return $challenge; 
         fclose($this->fp);         fclose($this->fp);
 +        return $challenge;
 +        
       }       }
  
Zeile 375: 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/';
Zeile 461: Zeile 477:
 Auf dieses Tutorial darf frei Verlinkt werden.\\  Auf dieses Tutorial darf frei Verlinkt werden.\\ 
 So lange es hier im Wiki auf sourceserver.info verbleibt.\\  So lange es hier im Wiki auf sourceserver.info verbleibt.\\ 
-Wenn ihr das Tutorial oder Teile davon wo anders verwenden möchtet, bitte eine PM an [[http://sourceserver.info/memberlist.php?mode=viewprofile&u=57|HSFighter]]!+Wenn ihr das Tutorial oder Teile davon wo anders verwenden möchtet, bitte eine PM an [[http://sourceserver.info/user/57-hsfighter|HSFighter]]!
tutorial/server/php_querry_script.1258127047.txt.bz2 · Zuletzt geändert: 2009/11/13 16:44 von HSFighter