Demo fuer PHP-Automaten'; // Formularstatus checken; beim ersten Aufruf der Seite ist // natuerlich kein Status vorhanden --> $status = "NIX" $Status = (isset($_POST['STATUS']))? $_POST['STATUS'] : "NIX"; // weiterer Aufruf der Seite: Formular wurde ausgefuellt, // ensprechende reagieren if ($Status == 'Absenden') { // Formulardaten pruefen // Verarbeitung der Text-Felder $Passwort = security_filter($_POST['Passwort']); $Passwort = trim($Passwort); check($Passwort,"Passwort"); $Passwort = sha1($Passwort); // Passwort-Hases vergleichen if ($Passwort != $PW) { print '
Vielen Dank, Ihre Angaben wurden folgendermaßen bearbeitet:
\n";
print '
Passwort (SHA1-Hash): ' . $Passwort . ', LEDs ' .
$_POST['LED1'] . ' ' . $_POST['LED2'] . ' ' . $_POST['LED3'] . ' ' . $_POST['LED4'] .
'
Zurück
';
// Hier die Verarbeitung der LEDs
// ACHTUNG: Vorher muessen die GPIO-Ports initialisiert und das
// Zugriffsrecht fuer die Gruppe GPIO gesetzt sein
// (siehe RasPi_GPIO.html)
// Port 17 27 22 23
// LED 1 2 3 4
$res = gpio_set_value('17', $_POST['LED1']);
$res = gpio_set_value('27', $_POST['LED2']);
$res = gpio_set_value('22', $_POST['LED3']);
$res = gpio_set_value('23', $_POST['LED4']);
// Die folgenden Beispiele zeigen wie man Shell-Kommandos
// aufruft und deren Ausgaben an den Browser durchreicht.
// Falls Usereingaben (Formulardaten) an diese Funktion weitergereicht werden,
// sollten Sie escapeshellarg() oder escapeshellcmd() verwenden.
print "
\nAusgabe des uname-Kommandos:\n";
passthru('/bin/uname -a',$err);
print "Fehlercode: $err\n";
// Soll der Programm-Output vor der Ausgabe noch aufbereitet werden,
// kann man ihn auch in einer Variablen speichern. Die Pufferung
// der Ausgabe beginnt mit:
ob_start();
// Aufruf wie oben, nur landet der Output im "Output Buffer"
print "\nAusgabe des uptime-Kommandos:\n";
passthru('/usr/bin/uptime',$err);
print "Fehlercode: $err\n";
print "Ausgabe des date-Kommandos:\n";
passthru('/bin/date +%d.%m.%Y-%H:%M:%S',$err);
print "Fehlercode: $err\n";
// Nach den Kommandoaufrufen kann deren gepuffertere Output
// in eine Variable uebernommen werden:
$inhalte = ob_get_contents();
// Der Puffer wird nicht mehr gebraucht, also ausleeren:
ob_end_clean();
// Kontrollausgabe der Variablen
print $inhalte;
// Man kann das Kommando auch, wie in der Shell ueblich, seine Ausgaben
// in eine Datei, z. B. nach "/tmp/df.txt", umleiten lassen. Das
// Verzeichnis "/tmp" ist in all solchen Fällen eine gute Wahl:
system('df -k > /tmp/df.txt');
print "Ausgabe des df-Kommandos:\n";
// Die Datei wird mittels readfile() ausgegeben
// (readfile() funktioniert wie das Kommando "cat" in der Shell):
readfile('/tmp/df.txt');
print "\n";
// Die nicht mehr benoetigte Datei loeschen:
unlink('/tmp/df.txt');
}
else
{
// Keine Formulardaten vorhanden? Dann Formular ausgeben
print '
Bitte geben Sie das Passwort ein:
'; // Anstelle der Submit-Variablen fuer den Status kann auch ein Eingabetag // vom Typ "hidden" verwendet werden. Dann kann man beliebige Werte fuer // den Status verwenden und muss nicht das nehmen, was auch auf dem Button steht. } nachspann(); // ================================== Funktionen ================================= // Check auf leeren String, ggf. Fehlermeldung und EXIT function check($TVar, $Description) { if(empty($TVar)) { print ' Formular unvollständig ausgefüllt - bitte ' . $Description . ' angeben/korrigieren.
| Bei Fragen wenden Sie sich an den Adminstrator, bla bla bla ... |