JSONAPI (Bukkit) - Brauche Hilfe bei Eingabe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angeben
array
befehl
button
code
controlling
dank
erstellen
file
genannten befehl
herunterfahren
http
index
klicken
server
textfeld
url
variable name
wissen
zeile
-
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:
Auch hier funktioniert alles Tadellos, wenn ich z.B. den Befehl<?php require('JSONAPI.php'); $api = new JSONAPI("localhost", 20059, "USER", "PASS", "SALT"); var_dump($api->call(/*HIER KOMMT DER BEFEHL REIN*/)); ?>
statt dem Platzhalter einsetze.(opPlayer, array("jnuk"))
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! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
Super! Genau das was ich wissen wollte!
Das wichtigste für mich war diese Zeile:
Das wichtigste aus dieser Zeile:var_dump($api->call(opPlayer, array($name)));
Ich hatte vorher die Variable 'name' als Array definiert, also so:array($name)
(opPlayer, $name)
Dankeschön!
Beitrag zuletzt geändert: 9.2.2012 20:38:13 von jnuk -
jnuk schrieb:
Super! Genau das was ich wissen wollte!
Das wichtigste für mich war diese Zeile:
Das wichtigste aus dieser Zeile:var_dump($api->call(opPlayer, array($name)));
Ich hatte vorher die Variable 'name' als Array definiert, also so:array($name)
(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 -
Danke!
Funktioniert jetzt alles. -
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 -
piratecraft schrieb:
Wozu sind denn die leeren arrays nach "getPlayerCount" da? Versuch mal die wegzulassen, dann müsste es funktionieren.
<?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(), ))); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage