Kleines Webinterface erstellen.
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
bauen
bedarf
befehl
benutzer
check
code
datei
einbinden
eingabe
header
index
input
parameter
server
signal
start
starten
tag
verwenden
verwendung
-
Hallöchen. Ich wollte mir für meinen CSGO tag/server">Server ein kleines Webinterface bauen, da mir das starten per Hand mit einem ewig langen Befehl etwas zu mühselig ist.
Allerdings stehe ich dabei vor einigen Problemen. Ich bekomme ihn gerade weder an, noch aus. So sieht mein Code aus:
index.php
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="css.css"> </head> <body> <center> <div class="box"> <div id="h1">CSGO SERVER</div> <form action="#" method="post"> <?php include 'start.php';?> <p> </label> <label>Gamemode <select name="gm" size="1"> <option>-</option> <optgroup label="Classic Casual"> <option>+game_type 0 +game_mode 0 </option> </optgroup> <optgroup label="Classic Competitive"> <option>+game_type 0 +game_mode 1 </option> </optgroup> <optgroup label="Deathmatch"> <option>+game_type 1 +game_mode 2 </option> </optgroup> <optgroup label="Arms Race"> <option>+game_type 1 +game_mode 0 </option> </optgroup> <optgroup label="Demolition"> <option>+game_type 1 +game_mode 1 </option> </optgroup> </select> </label> </p> <p> <label>Map <select name="map" size="1"> <option>-</option> <optgroup label="de_Map"> <option>de_dust</option> <option>de_dust2</option> <option>de_cache</option> <option>de_cbble</option> <option>de_shortdust</option> <option>de_canals</option> <option>de_nuke</option> <option>de_vertigo</option> <option>de_train</option> <option>de_overpass</option> <option>de_mirage</option> <option>de_atztec</option> <option>de_savehouse</option> <option>de_stmarc</option> <option>de_atztec</option> </optgroup> <optgroup label="ar_Map"> <option>ar_baggage</option> <option>ar_dizzy</option> <option>ar_shots</option> <option>ar_monastery</option> </optgroup> <optgroup label="cr_Map"> <option>cs_italy</option> <option>cs_assault</option> <option>cs_insertion</option> <option>cs_office</option> </optgroup> </select> </p> <p> </label> <label>Tickrate <select name="tr" size="1"> <option>-</option> <option>64</option> <option>128</option> </select> </label> </p> <p> </label> <label>Max_Player <select name="player" size="1"> <option>-</option> <option>2</option> <option>4</option> <option>8</option> <option>16</option> <option>32</option> <option>64</option> </select> </label> </p> <input type="submit" value="START" name="submit" id="button"></input> </form> <form action="#" method="post"> <?php include 'stop.php';?> <input type="submit" value="STOP" name="submit2" id="sbutton"></input> </form> </div> </div> </body>
start.php
<?php if (isset($_POST['submit'])) { $gamemode = $_POST['gm']; $map = $_POST['map']; $tr = $_POST['tr']; $player = $_POST['players']; input($gamemode, $map, $tr, $player); } function input ($gamemode, $map, $tr, $player){ if($gamemode=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} if($map=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} if($tr=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} if($player=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} start ($gamemode, $map, $tr, $player); } function start ($gamemode, $map, $tr, $player){ $account = "AccountCode"; $command = "./srcds_run -game csgo -console -usercon $gamemode -maxplayers_override $player +exec server.cfg +map $map -tickrate $tr +sv_setsteamaccount $account"; exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $command, $outputfile, $pidfile)); file_put_contents("pid.txt", $pidfile); header('Location: index.php'); }
stop.php
<?php if (isset($_POST['submit2'])) { $pidid = file_get_contents('pid.txt'); check ($pidid); } function check ($pidid){ if ($pidid != ''){ proc_terminate ( $pidid, $signal = 15); unlink(pid.txt); } else{ die();} header('Location: index.php'); } ?>
evtl könntet ihr mir dabei helfen :)
Beitrag zuletzt geändert: 17.7.2017 21:08:00 von horstexplorer -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Auf die schnelle fällt mir folgendes auf.
$player = $_POST['players'];
es wird versucht der Wert von Players zu bekommen, allerdings heißt das Feld nur player
LG Marvin -
Hi
Du solltest nicht <center> sondern zB <div style="margin: 0 auto; width: 30em;"> verwenden, die Breite(width) kannst du beliebig verändern.
header() kannst du nur verwenden, wenn davor kein Text ausgegeben wurde, deswegen solltest du die start.php und stop.php ganz oben einbinden
Bei exec() solltest du Parameter, die vom Benutzer kommen mit escapeshellarg() benutzbar machen
Wenn du mehrere Sachen prüfen willst
function input ($gamemode, $map, $tr, $player){ if($gamemode=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} if($map=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} if($tr=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} if($player=='-'){die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>");} start ($gamemode, $map, $tr, $player); }
genauso wie hier, kannst du || (entspricht einem "oder") verwenden:
function input ($gamemode, $map, $tr, $player){ if($gamemode=='-'||$map=='-'||$tr=='-'||$player=='-'){ die("<div id='errormsg'>Bitte kontrolliere deine Eingabe.</div>"); } start ($gamemode, $map, $tr, $player); }
Bei <input> brauchst du keinen Tag, der das Element schließt, wenn du das unbedingt willst kannst du ein <button type="submit"></button> verwenden
Du kannst statt
<div id="h1">CSGO SERVER</div>
ruhig auch <h1> verwenden
Sonst würde ich dir noch zumindest https://www.sololearn.com/Course/PHP/ (oder vielleicht doch lieber etwas umfassenderes), https://www.sololearn.com/Course/CSS/ und https://www.sololearn.com/Course/HTML/ empfehlen -
Ich bin leider gerade etwas verwirrt. Das exec funktioniert irgendwie nicht. Deswegen habe ich etwas anderes ausgetestet (Start/Stop nun beides in einer Datei)
$command="/home/steam/server/./srcds_run -game csgo -console -usercon " . escapeshellarg($gamemode) . " -maxplayers_override " . escapeshellarg($player) . " +exec server.cfg +map " . escapeshellarg($map) . " -tickrate " . escapeshellarg($tr) . " +sv_setsteamaccount $account"; $process = new Process($command); // die pid für spätere Verwendung abspeichern file_put_contents("pid.txt", $process.getPid()); header('location: index.php'); } //STOP if (isset($_POST['submit2'])) { $process = new Process(); // die gespeicherte pid laden $pid = file_get_contents("pid.txt"); $process.setPid($pid); $process.stop(); header('location
Leider funktioniert auch dies nicht (evtl liegt es an file puts da trotz rechte keine Dateien erstellt werden).
Eigentlich will ich ja nur einen Befehl ausführen lassen und diesen dann bei Bedarf wieder beenden, das kann doch eigentlich nicht so schwierig sein. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage