kostenloser Webspace werbefrei: lima-city


JSONAPI (Bukkit) - Brauche Hilfe bei Eingabe

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    jnuk

    jnuk hat kostenlosen Webspace.

    Hey Leute
    In einem vorherigen Post habe ich bereits angesprochen, dass ich meinen Minecraft-Server per PHP herunterfahren möchte. Neulich bin ich auf das Bukkit-Plugin JSONAPI gestoßen, mit dessen Hilfe ich in Verbindung mit RToolkit meinen Server vom iPod aus herunterfahren kann. Das funktioniert auch Einwandfrei, jedoch möchte ich das Ganze auch in PHP möglich machen. Ich habe mir von der JSONAPI-Website die JSONAPI.php heruntergeladen, welche als SDK fungiert. Ich habe auch schon eine call.php erstellt:
    <?php
        require('JSONAPI.php');
        
        $api = new JSONAPI("localhost", 20059, "USER", "PASS", "SALT");
            
        var_dump($api->call(/*HIER KOMMT DER BEFEHL REIN*/));
    ?>
    Auch hier funktioniert alles Tadellos, wenn ich z.B. den Befehl
    (opPlayer, array("jnuk"))
    statt dem Platzhalter einsetze.

    Nun will ich aber eine index.html als Formular erstellen, wo dann ein Textfeld und ein Button ist. In das Textfeld soll man den arg (in diesem Fall jnuk) angeben und beim klicken auf den Butten den oben genannten Befehl ausführen. Nun ist aber das Problem, dass ich nicht weiß, wie ich dieses Array mit dem/den args über GET übertragen soll.

    Hoffe ihr könnt mir helfen. Dankeschön!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. jnuk schrieb:
    Nun will ich aber eine index.html als Formular erstellen, wo dann ein Textfeld und ein Button ist. In das Textfeld soll man den arg (in diesem Fall jnuk) angeben und beim klicken auf den Butten den oben genannten Befehl ausführen. Nun ist aber das Problem, dass ich nicht weiß, wie ich dieses Array mit dem/den args über GET übertragen soll.


    Wenn es sonst nix weiter ist kannst du auch Post verwenden :D


    Form in der Index.php erstellen
    <form action="call.php">
    <input type="name" name="name" class="required">
    <input type="submit" value="Senden">
    </form>


    In der call.php eine Variable definieren und einfügen:
    <?php 
    
    $name = $_POST['name'];
    
    require_once('JSONAPI.php);
    
    $api = new JSONAPI("localhost",20059,"USER", "PASS", "SALT");
    
    var_dump($api->call(opPlayer, array($name)));
    
    ?>


    Beitrag zuletzt geändert: 9.2.2012 19:27:01 von kill-a-teddy
  4. Autor dieses Themas

    jnuk

    jnuk hat kostenlosen Webspace.

    Super! Genau das was ich wissen wollte!
    Das wichtigste für mich war diese Zeile:
    var_dump($api->call(opPlayer, array($name)));
    Das wichtigste aus dieser Zeile:
    array($name)
    Ich hatte vorher die Variable 'name' als Array definiert, also so:
    (opPlayer, $name)

    Dankeschön!

    Beitrag zuletzt geändert: 9.2.2012 20:38:13 von jnuk
  5. jnuk schrieb:
    Super! Genau das was ich wissen wollte!
    Das wichtigste für mich war diese Zeile:
    var_dump($api->call(opPlayer, array($name)));
    Das wichtigste aus dieser Zeile:
    array($name)
    Ich hatte vorher die Variable 'name' als Array definiert, also so:
    (opPlayer, $name)

    Dankeschön!


    "call" erwartet einen array, indem du $name schreibst sieht er das aber nur als Variable ;) Deshalb array($name)

    Außerdem solltest du auch lieber das "require_once" benutzen, da du die Datei eh nur einmal brauchst um die Daten zu übermitteln.. Ich hatte erst überlegt, dass mit "read()" zu integrieren, aber dann wird die Datei lediglich gelesen, nicht ausgeführt. ;)

    Außerdem sieht das für mich so aus, als wenn PASS bei dir leer übergeben wird... Du könntest es mit base64 codieren, indem du vorher eine Variable dafür definierst zum Beispiel so:

    $pass = 'Dies ist ein zu kodierender String';
    $pass = base64_encode($pass);
    
    $api = new JSONAPI("localhost",20059,"USER", (base64_decode($pass)), "SALT");


    Hört sich bestimmt dämlich an, wozu eine Variable kodieren und danach encodieren? Ganz einfach, php wird von oben nach unten abgearbeitet, wenn jemand ein Script bastelt oder dir ein paar exploits drauf setzt kann man das ganz einfach ändern... Mit base64 kannst du es codieren und erst in dem Moment, wo es verwendet wird wieder encodieren, nach der Verwendung ist die Resource dann ja sowieso aufgebraucht, sofern du sie nicht noch einmal nutzt. ;)

    Natürlich müsstest du es anders einsetzen, ich bezweifle, dass das ganze so funktioniert. Ich kenne ja die Funktion "JSONAPI()" nicht, welche mithilfe der JSONAPI.php erstellt wird.

    Noch dazu:
    Ich hab leider einen Fehler gemacht [...]class="required"[...] wird nicht mehr von allen Browsern unterstützt, du kannst aber statt dessen einfach nur required hinschreiben (damit überprüft der Browser selbst, ob eine Eingabe vorhanden ist, es wird aber nicht geprüft, wie viele Zeichen oder so)

    Also wird:
    <input type="name" name="name" class="required">


    Zu:
    <input type="name" name="name" required>


    Damit ist dein Script ein wenig sicherer, allerdings wird dein Textfeld nur sehr minimal gesichert, dass solltest du noch ausbessern. ;)


    Mfg
  6. Autor dieses Themas

    jnuk

    jnuk hat kostenlosen Webspace.

    Danke!
    Funktioniert jetzt alles.
  7. Hallo!
    Ich befasse mich zur Zeit auch mit JsonApi (PHP) und eigentlich ist es richtig konfiguriert, aber wenn ich zum Beispiel den Folgenden Code mache kommt immer "NULL".
    <?php
    require('JSONAPI.php'); // get this file at: https://github.com/alecgorge/jsonapi/raw/master/sdk/php/JSONAPI.php
    
    $api = new JSONAPI("84.200.240.245", 20059, "**USER**", "**PW**", "**SALT**");
    
    var_dump($api->callMultiple(array(
    	"getPlayerLimit",
    	"getPlayerCount"
    	), array(
    	array(),
    	array(),
    )));
    ?>

    Username, Password und Salt sind zensiert.
    Eigentlich müsste alles funktionieren, denn an dem Code sind nur die Zugangsdaten geändert...

    Danke schonmal. Gruß
    Ian
  8. Autor dieses Themas

    jnuk

    jnuk hat kostenlosen Webspace.

    piratecraft schrieb:
    <?php
    require('JSONAPI.php'); // get this file at: https://github.com/alecgorge/jsonapi/raw/master/sdk/php/JSONAPI.php
    
    $api = new JSONAPI("84.200.240.245", 20059, "**USER**", "**PW**", "**SALT**");
    
    var_dump($api->callMultiple(array(
    	"getPlayerLimit",
    	"getPlayerCount"
    	), array(
    	array(),
    	array(),
    )));
    ?>

    Wozu sind denn die leeren arrays nach "getPlayerCount" da? Versuch mal die wegzulassen, dann müsste es funktionieren.
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!