kostenloser Webspace werbefrei: lima-city


Kleines Webinterface erstellen.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    h***********r

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    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
  4. 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
  5. Autor dieses Themas

    h***********r

    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.
  6. 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!