Jörg Reinholz: Website fernsteuern / Redner Ampel

Beitrag lesen

Dann müsst eich natürlich auf einem "Server" die Variablen ändern und dort den Timer laufen lassen ...

Genau auf diese Idee wollte ich Dich bringen.

Auf dem Server wird gespeichert, wann die Rede begann, dazu die Parameter. Das Eintragen dieses Ereignisses ist Dein Job, z.B. durch Klicken auf einen Start-Button, was die Verarbeitung eines Skriptes auslöst. Es eine gute Idee, wenn dieses Skript die Zeit seit dem 1.1.1970 00:00:00 in einer Textdatei speichert. Dazu noch Vorgaben, dazu die Möglichkeit diese zu ändern und eine Rede zu starten und zu beenden.

Betrachte den Code als ANREGUNG oder als BESCHREIBUNG des Vorgehens, ich hab ihn NICHT getestet:

starter.php:

<?php  
## config:  
$file      = 'rednerampel.csv';  
$gruen_bis = 8*60+30;  ## 8*60+30 == 8 Minuten 30 Sekunden  
$gelb_bis  = 10*60+0   ## 10 Minuten  
  
## Main  
if (isset($_POST['gruen_min']) && isset($_POST['gruen_sek'])) {  
    $_POST['gruen_sek']=intval($_POST['gruen_min']);  
    $_POST['gruen_sek']=intval($_POST['gruen_sek']);  
} else {  
    $_POST['gruen_sek']=$gruen_bis % 60;  
    $_POST['gruen_min']=$gruen_bis - $_POST['gruen_sek'];  
}  
if (isset($_POST['gelb_min']) && isset($_POST['gelb_sek'])) {  
    $_POST['gelb_sek']=intval($_POST['gelb_min']);  
    $_POST['gelb_sek']=intval($_POST['gelb_sek']);  
} else {  
    $_POST['gelb_sek']=$gelb_bis % 60;  
    $_POST['gelb_min']=$gelb_bis - $_POST['gelb_sek'];  
}  
  
  
if (isset($_POST['starten'] && $_POST['starten']) {  
   $now=time();  
   $gelb=$now+$_POST['gruen_min']*60+$_POST['gruen_sek'];  
   $gruen =$now+$_POST['gelb_min']*60 +$_POST['gelb_sek'];  
   file_put_contents($file,"$gelb;$gruen",LOCK_EX);  
} else {  
    unlink($file);  
}  
  
?>  
<html>  
<h1>Rednerampel</h1>  
<form method="post" action="starter.php">  
<pre>  
         Min    Sek  
Grün bis <input type="text" name="gruen_min" value="<?php echo $_POST['gruen_min']; ?>">,<input type="text" name="gruen_sek" value="<?php echo $_POST['gruen_sek']; ?>">  
Gelb bis <input type="text"  name="gelb_min" value="<?php echo $_POST['gelb_min']; ?>">,<input type="text" name="rot_sek"   value="<?php echo $_POST['gelb_min']; ?>">  
<input type="submit" name="starten" value="Speichern und Beginn der Rede">   <input type="submit" name="stoppen" value="stoppen">  
</pre>  
</form>  
</html>

Die Ampel ist dann einfach. Es wird geschaut, ob die Rede  gestartet ist (wenn nicht: grau) oder ob grün oder gelb angezeigt werden soll (wenn beides nicht, dann rot).

redner.php:

<?php  
## Main  
$prot=explode('/', $_SERVER['SERVER_PROTOCOL'])  
$addr=$prot[0] . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];  
  
if (! file_exists(rednerampel.csv') {  
     $background_color='gray';  
     $text="..."  
} else {  
     $now=time();  
     list($gruen_bis, $gelb_bis)=explode(file_get_contents(';', $file));  
  
     if ($gruen_bis > $now) {  
          $background_color='green';  
          $text="Nur zu!";  
     } elseif ($gelb_bis > $now) {  
          $background_color='yellow';  
          $text="Zum Schluß kommen!";  
     } else {  
          $background_color='red';  
          $text="STOP - bei Weiterreden droht der Ausschluss!";  
     }  
}  
?>  
<html>  
<head>  
    <title>Rednerampel</title>  
    <meta http-equiv="refresh" content="5; URL=___PHP0___">  
</head>  
<body style="heigt:100%;width:100%;backgground-color:___PHP1___">  
:___PHP2___  
</body>  
</html>

Du darfst das korrigieren/verbessern, verfeinern, verschönern, Dir Gedanken machen wie Du es schützt und womöglich sogar für mehrere Säle gleichzeitig/parallel anwendbar machst. Und wie Du das "Dunkelgelb" realisierst auch.

Jörg Reinholz