[How to][PHP] TS3 Framework

  • Hallo liebe Community,
    da ich öfters gesehen habe, dass einige User hier Probleme mit dem TS3 Framework haben
    möchte ich euch zeigen, wie ihr mit dem TS3 Framework und PHP arbeiten könnt.


    Als aller erstes müsst ihr euch dieses Framework runterladen:
    Download


    Wir fangen mit einem neuen Dokument an und includieren das Framework

    PHP
    <?php		require_once('libraries/TeamSpeak3/TeamSpeak3.php');?>


    Der nächste Schritt ist, das bestimmen der Serverdaten ( IP, Port, Query User, Query Passwort und Query Port, Query Nickname ).
    Dafür erstellen wir ein Array.
    Der Ts Port ist standartmäßig: 9987 und der Query Port: 10011.

    PHP
    <?php		require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "UCP_Administrator" // Der Name des Query Admins ( Für messages z.b bei Kick )	);?>


    Jetzt musst eine Verbindung mit dem Server her.

    PHP
    $server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "UCP_Administrator" // Der Name des Query Admins ( Für messages z.b bei Kick )	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");	} catch(Exception $e) {		echo "Es konnte keine Verbindung zum TS3 Server hergestellt werden! ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";	}


    Nachdem dies Getan ist, können wir mit dem eigentlichen Coding an.


    Kick Funktion:
    Als erstes machen wir eine Kick Funktion, wo der Username bekannt sein musst:

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$clientid = $ts3_VirtualServer->clientGetByName("xGreekz7x");		if( $clientid->kick(TeamSpeak3::KICK_SERVER, "Du wurdest einfach so gekickt.") )			echo "xGreekz7x wurde erfolgreich gekickt!";    } catch(Exception $e) {        echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";    }?>


    Ban Funktion:
    Hier musst der Username ebenfalls bekannt sein.
    Zeit wird in sekunden angegeben!
    Sollte die Zeit auf 0 sein, wird der User permanent gebannt!

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$clientid = $ts3_VirtualServer->clientGetByName("xGreekz7x");		if($clientid->ban(1, "Du wurdest einfach so gebannt!"))			echo "xGreekz7x wurde erfolgreich gebannt!";    } catch(Exception $e) {        echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";    }?>


    Anstups Funktion:
    Man kann den User auch vom UCP aus anstupsen.
    Hier für, wird nur eine Message benötigt.

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$clientid = $ts3_VirtualServer->clientGetByName("xGreekz7x");		if ( $clientid->poke("Anstups Message") )			echo "xGreekz7x wurde erfolgreich angestupst!";    } catch(Exception $e) {        echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";    }?>


    Server Gruppe einteilen:
    Jetzt kommen wir mal zu etwas interessanterem,
    und zwar wie man Server Rechte vergeben kann, egal ob der
    User Offline oder Online ist.
    Dafür wird aber die Eindeutige Identifikations ID des User benötigt kurz: UID.
    Ebenfalls wird die ID der Server Gruppe benötigt.

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$client = $ts3_VirtualServer->clientFindDb("alDSXALBlc6yq4HAFEpFdzd1BVQ=", true);		if( $ts3_VirtualServer->serverGroupClientAdd(6, $client[0]) )			echo "xGreekz7x wurde erfolgreich in die Gruppe 6 gesetzt!";    } catch(Exception $e) {        echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";    }?>


    Server Gruppe entfernen:
    Hierfür, werden ebendfalls die UID, und die Server Gruppen ID benötigt.

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "*******",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$client = $ts3_VirtualServer->clientFindDb("alDSXALBlc6yq4HAFEpFdzd1BVQ=", true);		if( $ts3_VirtualServer->serverGroupClientDel(6, $client[0]) )			echo "xGreekz7x wurde erfolgreich aus der Gruppe 6 entfernt!";     } catch(Exception $e) {        echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";    }?>


    edit v1:


    User - Beschreibung ändern

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "SKP8GIg8",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$client = $ts3_VirtualServer->clientGetByUid("RZdtla/OSPZWgN9Jf9xn+/rIp5k=");		$properties = array("client_description" => "trololol beschreibung");		if( $client->modify( $properties ) )			echo "xGreekz7x erfgolreich bearbeitet!";    } catch(Exception $e) {        echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";    }?>


    edit v2:


    Servergruppen Token erstellen.

    PHP
    <?php	require_once('libraries/TeamSpeak3/TeamSpeak3.php');	$server = array( 		"tsip" => "localhost",		"tsport" => "9987",		"ts_query_admin" => "serveradmin",		"ts_query_password" => "SKP8GIg8",		"ts_query_port" => "10011",		"ts_query_user_nick" => "trolbob"	);	try {		TeamSpeak3::init();		$ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$server["ts_query_admin"].":".$server["ts_query_password"]."@".$server["tsip"].":".$server["ts_query_port"]."/?server_port=".$server["tsport"]."&nickname=".$server["ts_query_user_nick"]."");		$token = $ts3_VirtualServer->tokenCreate	(	 TeamSpeak3::TOKEN_SERVERGROUP, $sgID ); // sgID = ID der Servergruppe		echo $token;  } catch(Exception $e) {      echo "Fehler!<br/>ErrorID: <b>". $e->getCode() ."</b>; Error Message: <b>". $e->getMessage() ."</b>;";  }?>


    Ich hoffe dieses Kleine Tutorial hilft euch,
    mit dem TS3 Framework zu arbeiten.


    Dieses Tutorial, wird von mir regelmäßig erweitert.
    Solltet ihr noch wünsche für die nächsten Funktionen haben, könnt
    ihr mich gerne per PN kontaktieren.


    MfG xGreekz7x

  • Sehr schön erklärt :)

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung

  • N1, aber warum verschachtelst du bei einem einzigen Kick die try-catch ? Oo
    Kann man doch alles in eine packen, oder hat das einen Grund ? Oo

    Das mache ich so, damit z.b für ein UCP,
    wenn der User nicht gekickt werden konnte eine extra Nachricht kommt,


    und die Leute es so anpassen können ;)
    Einen anderen Grund hatte es für mich nicht ^^

  • Gutes tutorial.


    Ich weiß nicht ob das mit PHP ist oder Pawn od. Mysql.


    vllt mal das man bsp im Control Panel eines Server seine TS3 ID eingeben muss um drauf zu kommen sonnst wird man nach 30 sec gekickt oder gebannt für 1 minute wäre nice

  • Das müsste mit deinem Ts3 Server gemacht werden.
    Das ist ein Ansatz für die, die ein Control Panel oder ähnliches in
    PHP machen wollen ;)


    Ja aber du könntest dazu ja meil ein Tut machen wie man das ganze einrichtet da wäre ich sehr dran inressiert wil grad auch PHP lern und ein CP coden.

  • erstmal danke für dein kleines Tutorial und ich hoffe du kannst mir bei meinem Problem helfen.
    Ich bin zur Zeit dabei ein Control Panel für virtual-RP zu erstellen.
    Dabei soll man sich darüber im TeamSpeak registrieren können.


    => Neue User bekommen die TS-Gruppe "Unregistriert", durch Eingabe der UID im Panel wird diese auf "Registriert" geändert.


    Da es bereits zu Beginn bei mir zu Problemen kam, keine Error-Meldung kam aber auch die Gruppe sich nicht ändern wollte, hab ich mir einfach mal die foreach schleife ausgeben lassen, also die komplette liste der UID's die er durchläuft


    das ergebnis: es werden nur 25 UID's angezeigt, mehr nicht... es kommen keine neuen UID's mehr hinzu obwohl sich viel mehr Leute auf dem TS befinden.
    Auch meine UID ist nicht zu finden
    über ts selber (Rechte -> Alle Clients anzeigen) lassen sich allerdings alle UID's problemlos anzeigen (auch meine)


    woran könnte das liegen ? :(

  • Das weiß ich jetzt auch nicht so genau,
    ich habe es nur testweise auf meinen localhost TS gemacht.
    Kannst dich gerne bei mir per PN melden, dann könnten wir mal zsm. iwann schauen
    woran es liegen könnte ^^


    MfG