ts3admin.class: online-Anzahl geht nicht

  • hallo, ich nutze seit monaten ts3admin.class (ts3admin.class) um auf meiner website anzuzeigen wie viele auf meinem server sind. jetzt ist mir aufgefallen dass das nicht mehr geht, erhalte mit folgendem code immer nur 1 :


    PHP
    1. <?php
    2. $ts3_ip='123.123.123.123';
    3. $ts3_queryport=10011;
    4. require_once("ts3admin.class.php");
    5. $tsAdmin=new ts3admin($ts3_ip, $ts3_queryport);
    6. if($tsAdmin->getElement('success', $tsAdmin->connect())){
    7. $tsAdmin->selectServer($ts3_port);
    8. $clients=$tsAdmin->clientList();
    9. if(isset($clients)){
    10. echo (count($clients['data']));


    doch was ist falsch ? habe nichts geändert, nur server neulich umgezogen aber auch IP da angepasst...

  • Hallo,
    nachdem du dich verbunden hast, musst du dich einloggen, also authentifizieren, sonst wirst du keine Informationen vom Server erhalten.


    Dir fehlt also zwischen der Zeile 6 und 7 der login():

    PHP
    1. <?php$ts3_user='serveradmin'$ts3_pass='passwort'...if($tsAdmin->getElement('success', $tsAdmin->connect())){$tsAdmin->login($ts3_user, $ts3_pass);$tsAdmin->selectServer($ts3_port);...


    Hier ein vollständiges Beispiel:

  • hm. erhalte immer


    Code
    1. X kann diese Anfrage momentan nicht verarbeiten.HTTP ERROR 500


    edit: ah du hast die ; vergessen... erhalte aber immer noch "1"... code :



    und wenn ich f5 drücke kommt wieder nichts, nach etwa 15 minuten kommt dann wieder die 1, da stimmt doch was nicht ?? wie wenn ich irgendwie gebannt bin...


  • Hier das funktioniert, habs getestet.

  • hab jetzt 1x die richtige anzahl erhalten, nach F5 dann wieder die 1 und nochmal F5 nichts... hää


    Ich denke mal, dass du auch wirklich meinen Code verwendet hast.
    Woran kann jetzt das Problem liegen?
    Ich denke mal, dass es ein Problem mit dem Server Query gibt, der eingetragen ist, ist dass ein Admin Server Query?
    Am besten versuchst du es mit dem Admin Server Query, wenn's da auch nicht geht, schauen wir mal weiter.

  • Ziemlich sicher wird deine Query wegen flooding gebannt


    Genau deshalb mag ich das TS3 PHP Framework von Planetteamspeak lieber als die ts3admin.class
    Während beim Framework die Fehler anständig über ne Exception geworfen werden, werden die bei der ts3admin.class nur in ein Array geschrieben


    PHP
    1. <?php
    2. require_once("libraries/TeamSpeak3/TeamSpeak3.php");
    3. try {
    4. $ts3 = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
    5. echo $ts3->clientCount() . " Users are online!";
    6. } catch(TeamSpeak3_Exception $e){
    7. echo "Error " . $e->getCode() . ": " . $e->getMessage();
    8. }
  • ah danke. da kommt jetzt (auch) nach F5 "flood ban"... muss ich den ts-server bearbeiten damit das nicht passiert oder wie ? bzw. habe ich die localhost-ip (server läuft auf selbem Server wie homepage) auf der whitelist, dann dürfte die doch gar nicht gebannt werden ?

  • 127.0.0.1 ist standardmäßig eingetragen, du musst die IP des WebServers in die query_ip_whitelist.txt eintragen (KEINE DOMAINS!!!)


    Dann startest du entweder deinen TeamSpeak Server neu oder wartest 10 Minuten, dann sollte TeamSpeak die query_ip_whitelist.txt sich automatisch neu geladen haben

  • Während beim Framework die Fehler anständig über ne Exception geworfen werden, werden die bei der ts3admin.class nur in ein Array geschrieben


    Die ts3admin.class kann auch Fehlermeldungen ausgeben:

    PHP
    1. <?php
    2. /**
    3. * This code retuns all errors from the debugLog
    4. */
    5. if(count($tsAdmin->getDebugLog()) > 0) {
    6. foreach($tsAdmin->getDebugLog() as $logEntry) {
    7. echo '<script>alert("'.$logEntry.'");</script>';
    8. }
    9. }
  • ich habe nie behauptet dass die es nicht kann^
    Habe ledeglich gesagt dass die Fehler in ein Array geschrieben werden, was hier auch passiert


    Ist halt auch nicht die optimal Lösung nach jeder Query eine Funktion aufzurufen die schaut ob etwas im Debug Log drinnen steht