Guten Abend liebe pi Gemeinde,
ich steuere mit einem pi1 (b+) unter wheezy div. ELRO Funksteckdosen. Hierfür habe ich einen Webserver (lighthttpd) eingerichtet um per Handy meine Dosen zu schalten. Das funktioniert soweit seit Monaten problemlos. Nun möchte ich 2-3 Funktionen in einen seperaten Admin-Bereich legen, welche nur nach Eingabe eines Passwortes angezeigt werden:
Auszug aus der index.php welcher auf die Admin Anmeldung verlinkt:
echo "<a href='http://192.168.178.250/login.php'><img src='http://192.168.178.250/login.png'border=\"8\" width=\"285\" / ></a>";
Die login.php schaut folgendemaßen aus:
<html>
<head>
<title>HomeControl</title>
<link rel="stylesheet" href="resources/style.css">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->
<link rel="icon"
type="image/png"
href="resources/favicon.ico">
<meta charset="UTF-8">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport"
content="
height = device-height,
width = device-width,
initial-scale = 1.0,
user-scalable = no ,
target-densitydpi = device-dpi
" />
<style>
input[type='text'] { font-size: 60px; width:300px; height:100px; text-transform:lowercase; text-align:center; }
input[type='submit'] { font-size: 75px; }
</style>
</head>
<body>
<div id="header">
Administrator
</div>
<br>
<form action="admin.php" method="post" align="center">
<input type="text" name="pass" type="password">
<br>
<br>
<br>
<br>
<input type="submit" value="OK">
</form>
</body>
</html>
Alles anzeigen
Und nun zu guter letzt die admin.php:
<?php
$pass = $_POST['pass'];
if ($pass == "Pi" OR $pass == "pi") {
include("config2.php");
if (isset($_GET['group'])) $nGroup=$_GET['group'];
else $nGroup="";
if (isset($_GET['switch'])) $nSwitch=$_GET['switch'];
else $nSwitch="";
if (isset($_GET['action'])) $nAction=$_GET['action'];
else $nAction="";
if (isset($_GET['delay'])) $nDelay=$_GET['delay'];
else $nDelay=0;
$output = $nGroup.$nSwitch.$nAction.$nDelay;
if (strlen($output) >= 8) {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
socket_bind($socket, $source) or die("Could not bind to socket\n");
socket_connect($socket, $target, $port) or die("Could not connect to socket\n");
socket_write($socket, $output, strlen ($output)) or die("Could not write output\n");
socket_close($socket);
header("Location: index.php");
}
?>
<html>
<head>
<title>HomeControl</title>
<link rel="stylesheet" href="resources/style.css">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->
<link rel="icon"
type="image/png"
href="resources/favicon.ico">
<meta charset="UTF-8">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport"
content="
height = device-height,
width = device-width,
initial-scale = 1.0,
user-scalable = no ,
target-densitydpi = device-dpi
" />
</head>
<body>
<div id="header">
HomeControl
</div>
<?php
$index=0;
foreach($config as $current) {
if ($current != "") {
$ig = $current[0];
$is = $current[1];
$id = $current[2];
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");
socket_bind($socket, $source) or die("Could not bind to socket\n");
socket_connect($socket, $target, $port) or die("Could not connect to socket\n");
$output = $ig.$is."2";
socket_write($socket, $output, strlen ($output)) or die("Could not write output\n");
$state = socket_read($socket, 2048);
if ($state == 0) {
$ia = 1;
$direction="on";
}
if ($state == 1) {
$ia = 0;
$direction="off";
}
echo "<a href=\"?group=".$ig;
echo "&switch=".$is;
echo "&action=".$ia."\">";
echo "<div class=\"entry state" . $state . "\">";
echo "<div class=\"switch\"></div>";
echo "<span class=\"info\">".$id."</span>";
// echo "<span class=\"channel\">Kanal ".$ig.":".$is."</span>";
echo "</div>\n";
echo "</a>\n";
}
$index++;
}
echo "<div style='font-size: 38pt'> HomeControl </div>";
echo "<div style='font-size: 28pt'> reboot/shutdown </div>";
echo(" <br />\n");
echo "<a href='http://192.168.178.250/reboot.php'><img src='http://192.168.178.250/power-an.png'border=\"0\" width=\"150\" / ></a>";
echo "<a href='http://192.168.178.250/shutdown.php'><img src='http://192.168.178.250/power-aus.png'border=\"0\" width=\"150\" / ></a>";
}
else
{
echo " <br /> ";
echo " <br /> ";
echo "<b><center><font size=60pt> Das Passwort ist falsch! </font></center></b>";
}
?>
</body>
</html>
Alles anzeigen
Nach dem ganzen Code nun zum eigentlichen Problem. Wenn ich auf den Link Anmeldung als Admin kommt brav die Kennwort-Abfrage. Tippe ich ein falsches Passwort ein springt er in die richtige else Bedingung und quittiert mit einem "Das Passwort ist falsch!". Das klappt ebenfalls problemlos. Wenn ich das Passwort richtig eingebe, sehe ich die admin.php mit den einzelnen Steckdosen, kann diese aber leider nicht schalten. Nach einem Klick auf die Dose erfolgt wieder die Ausgabe von "Das Passwort ist falsch!". Die weiter unten aufgeführten Links, welche den pi rebooten/herunterfahren funktionieren hingegen problemlos.
Kann mir jemand von den php Profis mal einen Blick auf die admin.php werfen, wo der Schweinehund begraben ist?
Danke u. Grüße M.
P.S. Ich weiß, schöne Programmierung ist anders... meine Möglichkeiten sind leider etwas beschränkt, daher arbeite ich nach try and error