Rcon hab ich nochnie benutzt. Aber ich kann ebenfalls Websend empfehlen.
Für sachen die WebSend nicht kann, (gibt es leider einige) benutze ich eine direkte SSH verbindung über PHP und haud as zeug direkt in die Konsole rein.
(Was allerdings Code benutzt den ich nit ganz versteh)
Der Part einen Link "Nur einmal Nutzbar" zu machen. Ich weiss nit wie man das "Normal" macht. Aber ich würde das in etwa so machen:
Beachte bitte: ich habe den Code einfach so zusammengeschrieben und NICHT getestet. D.h. Es können Tipp/Syntax fehler drinne sein.
Ausserdem gehe ich davon aus das du die dafür benötigte MySQL Datenbank anlegen kannst.
<?
### - Erstmal eine Funktion um den Speziellen Link zu erstellen. - ###
function createlink()
{
global = $mySQLopen;
if ($mySQLopen != true)
{MySQLLogin();}
#### - Ich gehe davon aus das du nen Weg hast zu deiner MySQL datenbank zu verbinden. Ich mache das über diese Funktion - ####
$token = mt_rand(1000,9999)
$time = time();
#### - Ich setze nen Zufallswert für den "Speziellen Einmal Link" und die Aktuelle Uhrzeit, um den Link zeittechnisch verfallen zu lassen können - ####
$DB_Database = 'minecraft_server';
$DB_Table = 'One_Time_Links';
mysql_select_db($DB_Database);
$DB_Comand = "INSERT INTO $DB_Table (`token` , `time`) VALUES ('$token' , '$time');";
$DB_Querry = mysql_query($DB_Comand) or die("Anfrage fehlgeschlagen: " . mysql_error());
#### - Ich setze nen Zufallswert für den "Speziellen Einmal Link" und die Aktuelle Uhrzeit, um den Link zeittechnisch verfallen zu lassen - ####
$website = "
www.test.de/cmd.php?token=";
echo $website.$token
#### - Hier Poste ich den Speziellen Link den wir Hergestellt haben. - ####
}
### - Jetzt eine Funktion um den Speziellen Link auszulesen - ###
function checklink()
{
global = $mySQLopen;
if ($mySQLopen != true)
{MySQLLogin();}
#### - Ich gehe davon aus das du nen Weg hast zu deiner MySQL datenbank zu verbinden. Ich mache das über diese Funktion - ####
if(isset($_GET['token'])) {$token = $_GET['token'];} else {$token = "none";}
#### - Wir überprüfen ob wir einen Token im Link haben. Wenn wir keinen haben Setzen wir den wert auf "none" Sonst würden wir fehler erhalten. - ####
$DB_Database = 'minecraft_server';
$DB_Table = 'One_Time_Links';
mysql_select_db($DB_Database);
$DB_Comand = "SELECT * FROM $DB_Table WHERE `token` LIKE '$token';";
$DB_querry = mysql_query($DB_Comand) or die("Anfrage fehlgeschlagen: " . mysql_error());
$DB_Results = mysql_num_rows($DB_querry);
#### - Wir überprüfen ob wir in der Datenbank einen Token für den Einmal Link haben. (Sprich er sucht inner Datenbank, und speichert in $DEB_Results die anzahl an Datensätzen die er findet. - ####
#### - Einen Zeitlichen Verfall des Links berücksichtige ich hier nochnicht. - ####
if ($DB_Results > 0)
{
#### - Code für dein Einmal Command kommt hier her. Ich beziehe mich hierbei der einfachheit auf Websend - ####
$ws = new Websend("MC-SERVER"); # Neue WebSend Instanz herstellen
$ws->connect("PASSWORT"); # Mit Passwort zum Server Verbinden
$ws->doCommandAsConsole("Auszführendes Command"); # Command Ausführen
$ws->disconnect(); # Websend Instanz beenden.
$DB_Comand = "DELETE FROM $DB_Table WHERE `token` LIKE '$token';";
$DB_querry = mysql_query($DB_Comand) or die("Anfrage fehlgeschlagen: " . mysql_error());
#### - Wir Löschen den Token aus der Datenbank damit er kein 2. Mal benutzt werden kann. - ####
}
else
{
echo "Dein Link ist nicht Gültig";
#### - Fehlerausgabe im fall von einem Nicht gefundenen Token. - ####
}
}
?>
DISCLAIMER:
Sollte das ein Profi lesen, ich hab das nie gelernt. Ich Code mir das alles bei "Trial and Error" zusammen. Ergo, gibt es mit sicherheit ne Elegantere lösung.