Beiträge von Taikoso

    Moin zusammen,


    ist es möglich über das Rechtesystem, dass Channel komplett für bestimmte Usergruppen (wie Gäste) nicht angezeigt werden können?
    Also das ich das hinbekomme über Power, dass bestimmte Gruppe, die Leute in einem Channel nicht sehen können, ist mir bekannt, aber den Channel komplett für die Gruppen auszublenden, habe ich bislang nichts gefunden.


    Mfg
    Taikoso

    Nur damit du in Zukunft weißt, was das Problem war: Der Spaltenname "virtualserver_download_quota" war nicht bekannt, also hieß eigentlich anders ;)

    Ich empfehle Datenbank.


    Finde ich, für das speichern einer Zahl, recht umständlich.
    Für eine Zahl ist eine Datei mMn viel geschickter:


    PHP
    1. <?php$filename = 'counter.txt';$counter = file_get_contents( $filename );if( $current_counter > $counter ) { file_put_contents( $filename, $current_counter );}?>


    habe mir grad erstmal dein Skript angeschaut, hier der angepasste Code:


    PHP
    1. <?php$filename = 'counter.txt';$counter = file_get_contents( $filename );if( $ts3_info["virtualservers_total_clients_online"] > $counter ) { file_put_contents( $filename, $ts3_info["virtualservers_total_clients_online"] );}?>


    und vorher eben die Datei "counter.txt" anlegen mit dem Inhalt:

    Code
    1. 0


    Dann sollte er es beim erstenmal mit dem Counter der aktuellen Clienten überschreiben.


    PS: das Thema passt eher in den Forumbereich "Teamspeak3 => Programmierung" oder "Teamspeak3 Addons => Skripte/Scripts"

    vom rein logischen gebe ich dir vollkommen recht.
    Nur bei einer MarkUp Language wie HTML geht man eigentlich nicht wirklich davon aus, dass die da so penibel umgeht :D aber prinzipiell ist es nicht verkehrt, wenn es sehr penibel ist, so hätte man mehr Standard-Code und nicht irgendwas zusammen geschustertes.

    Also war meine Vermutung einige Posts vorher doch richtig:


    Das ist die Ausgabe, nach dem du das Formular ausgefüllt hast und abgesendet hast ....


    Du sollst die Ausgabe zeigen, bevor du das machst ;) also einfach Seite anzeigen lassen und Quelltext posten (sonst nichts machen).

    Genau deswegen ja ... Ruf das Script auf ohne das Formular auszufüllen und abzusenden und poste mal die HTML-Ausgabe (Erhälst du wenn du "Seitenquelltext anzeigen" lässt).

    Also ich teste das Skript bei mir nicht mehr ;) das hat mir beim letzten mal 3 virtuelle Server gelöscht (wieso auch immer) ;)


    Das hier habe ich aus meinen obigen Script entnommen .... so liefert die recaptcha_get_html-Methode den "Html-Code":


    Code
    1. <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=PUBLICKEY"></script>
    2. <noscript> <iframe src="http://www.google.com/recaptcha/api/noscript?k=PUBLICKEY" height="300" width="500" frameborder="0"></iframe><br/> <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea> <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/> </noscript>


    Wobei ich den Publickey gegen "PUBLICKEY" ersetzt habe (ja ich weiß, ich nicht wirklich relevant, da er ja public ist, aber dennoch).


    Mh stimmt nicht ... wenn du den Captcha-Code falsch eingibst, dann sendet er die Daten normal schon, eben mit den falschen Inhalten und dies für zu einer Error-Erzeugen bei recaptcha_check_answer.
    Daher muss eigentlich die Daten in $_POST enthalten sein, nur warum dies nicht ist, ist eben die große, entscheidene Frage.

    Ich denke mal das gleiche wie es bei mir ergeben hat:


    recaptcha_get_html = bringt dir nen Script-Code für HTML raus, das hat ja auch soweit geklappt, zumindest schließe ich daraus Rückschlüsse, weil er es ja eingeben konnte ;)


    Bei meinen Test habe ich auch debuggin versucht und $_POST hatte nur "name" und "slots" enthalten, was eben sehr verwunderlich war.


    Aber vielleicht ist es bei ihm auch anders ^^

    Mal ne doofe idee, aber ein Versuch wäre es wert (ich teste das Skript bei mir nicht, weil es beim letzten anwenden mir 3 Server gelöscht hatte, warum auch immer):


    Ändere mal folgendes in der createServer.php:

    PHP
    1. <table> <form action = "createServer.php" method="POST"> <tr><td>Name:</td> <td><input type="text" name="name"></td></tr> <tr><td>Slots:</td> <td><select name="slots"> <?php for($i=5;$i<=50;$i=$i+5) { if($i<(512-$slotCount)) echo '<option value="'.$i.'">'.$i.'</option>'; } ?> </select><td></tr> <tr> <?php echo recaptcha_get_html($publickey); ?> </tr> </table></br> <input type="submit" value="Server erstellen"></p> </form>


    in dieses um:


    Ist zwar nur ne Änderung vom HTML-Code, bin aber der Meinung aus früheren Zeiten, dass es hin und wieder Probleme mit der Übergabe der Daten gab, wenn es "falsch" geschachtelt war.


    Mfg

    Kann es sein, dass der Server die clid so vergibt, wie die Leute auf den TS kommen?
    Dachte bislang, dass es genauso abläuft wie mit einer UserID die in einer DB eingetragen ist, dass sie einmalig einem Clienten zugeordnet ist.


    So hab mir jetzt meine MergeSort Klasse gebastet (hat sich schwieriger dargestellt, als ich dachte), die sortiert jetzt nach einem Array-Attribute (wie Servergruppe, wenn man es bei Aufruf der Methode angibt) und kann auch bei Gleichheit auf ein 2. Attribute sortieren.


    Mfg

    Habs grad auf meinem Server versucht ... funktioniert auch nicht ... der sendet die Captcha-Daten nicht mit.
    Hab dann mal wo anders mir die Quellcodes angeschaut ... die arbeiten aber alle mit dem "<script>"-Funktion ... von daher weiß ich auch grad nicht woran es happert, weshalb die Daten nicht gesendet werden.


    Habe eben einen reCaptcha-Test durchgeführt mit folgender Datei:



    (public und private key natürlich angepasst).


    Damit hat alles wunderbar und ordentlich funktioniert.

    Na aber jetzt wissen wir wenigstens mehr als vorher ;)


    Also das Problem ist, dass das challenge_field und response_field nicht übertragen werden vom Script. Deswegen - was ja vorher schon zu erwarten war - ist die If-Abfrage auch nicht mit "true" beantwortet worden und hatte die ganze Zeit das resp-Objekt nicht angelegt.


    Ist jetzt nur die große Frage wieso das Formular die Daten nicht sendet.


    Das sagt übrigends die Docu von google dazu:


    Zitat

    Empty reCAPTCHA Fields


    If the value of "recaptcha_challenge_field" or "recaptcha_response_field" is not set when you are processing the form, avoid sending a request to www.google.com/recaptcha/api/verify. This allows you to more quickly deal with simple attempts at spamming.

    Also ich habe nicht wirklich viel geändert.
    Habe 1. die Abfrage rausgenommen ob

    Code
    1. $_POST['recaptcha_challenge_field']$_POST['recaptcha_response_field']


    gesetzt sind und habe die


    Code
    1. $resp = = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);


    zwischen


    Code
    1. if(isset($_POST['name']) and isset($_POST['slots'])) {


    und


    Code
    1. if(!$resp->is_valid) { die( 'Das Captcha wurde nicht richtig gelöst! Bitte erneut versuchen! (Fehler: ' . $resp->error . ')<a href="createServer.php">Hier geht es zurück!</a>' ); }


    eingefügt, resultat:


    Code
    1. if(isset($_POST['name']) and isset($_POST['slots'])) { $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if(!$resp->is_valid) { die( 'Das Captcha wurde nicht richtig gelöst! Bitte erneut versuchen! (Fehler: ' . $resp->error . ')<a href="createServer.php">Hier geht es zurück!</a>' ); }


    somit versucht er auch nur das $resp-Objekt zu erzeugen, wenn das Script einmal abgesendet wurde.


    Habe auch die Abbruch-Meldung bissl angepasst und mit die() cancel ich das Skript.



    Desweiteren bin ich nochmal die createServer.php durchgegangen und habe (falls es Probleme gibt) noch folgendes angepasst:


    Code
    1. else { if($_POST['slots']+$slotCount>512 || $serverCount>=10) die('alle Server vergeben!'); if($_POST['slots']>50) die('Wir vergeben nur 50 Slot Server!'); $tsAdmin = new ts3admin($ts3_ip, $ts3_queryport); $tsAdmin->connect(); $tsAdmin->login($ts3_user, $ts3_pass); $data = array( 'virtualserver_name' => $_POST['name'], 'virtualserver_maxclients' => $_POST['slots'], 'virtualserver_weblist_enabled' => '1', 'virtualserver_log_client' => '1', 'virtualserver_log_query' => '1', 'virtualserver_log_channel' => '1', 'virtualserver_log_permission' => '1', 'virtualserver_log_server' => '1', 'virtualserver_log_filetransfer' => '1', 'virtualserver_hostbanner_url' => '', 'virtualserver_hostbanner_gfx_url' => '', 'virtualserver_hostbutton_url' => '', 'virtualserver_hostbutton_gfx_url' => '', 'virtualserver_hostbutton_tooltip' => '', 'virtualserver_download_quota' => '-1', 'virtualserver_upload_quota' => '-1', 'virtualserver_max_download_total_bandwidth' => '-1', 'virtualserver_max_upload_total_bandwidth' => '-1', 'virtualserver_codec_encryption_mode' => 0, //0=einstellbar 1=aus 2=aus (opt_codec+1) ); $result = $tsAdmin->serverCreate($data);


    geändert in



    Das Skript verbindet sich 2. mal mit dem Server ... eigentlich total unnütz die Abfrage nach der Else, aber ich hab sie drin gelassen und er soll sich nur noch mit dem Server erneut verbinden, wenn die Verbindung nimmer steht.


    Probier das mal bitte aus und sag was passiert.


    Mfg


    PS: füge bitte auch wieder ein private und public key ein :D

    Mal ne Frage zur Methode "clientList()":


    Ist die Auflistung der Clients immer revers?


    Mir ist nämlich aufgefallen, wenn mehrere User in einem Channel sind, ist die Anordnung anders als im Client (wird ja mit Gruppe gegliedert und dann nach Namen).
    Möchte diesen "Schönheitsfehler" ausbügeln, wenn die Liste jedoch nur revers ist, muss ich sie ja nur rückwärts durchlaufen, ansonsten hab ich mir grad nen MergeSort-Algo dafür gebastet.


    Mfg

    Okay, die Meldung besagt, dass er bei dieser Abfrage:


    Code
    1. if(isset($_POST["recaptcha_challenge_field"]) AND isset($_POST["recaptcha_response_field"])){ $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);}


    schon das $resp-Objekt nicht erzeugt.


    Wahrscheinlich springt er da nicht rein, weil die Daten nicht gesetzt sind (Vermutung).


    Ändere diese Zeile mal bitte in


    Code
    1. $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);


    einfach nur ab ... wenn die Post-Variablen nicht gesetzt sind, dann bringt er eine Error-Meldung .. diese müssen wir dann noch abfragen (wie ich es oben schon erläutert habe).