PHP Radio Button Value in TXT - Anzeige Zimmerbelegung

morduk

Ensign
Registriert
Aug. 2009
Beiträge
172
Hallo Leute,

nun muss ich auch einmal einen Hilferuf absetzen. Ich nehme an, das es für die Profis kein größeres Problem sein wird. Für mich schon. Bisweilen waren die Hardware/Netzwerke eher mein Spezialgebiet. Nun wurde ich aber mit einer Aufgabe auf Software-/Programmierebene betraut.

Folgende Problemstellung:
  • eine kleinere Stadtverwaltung möchte ein Möglichkeit den Bürgern per TFT zu zeigen ob das ansässige Einwohnermeldeamt oder Gewerbeamt gerade besetzt oder frei ist
  • zur Verfügung stehen 2 PC's der Mitarbeiter (1x Gewerbeamt und 1x Einwohnermeldeamt] sowie 1 freier PC an dem der TFT zur Anzeige hängt. Zusammengehalten wird das Ganze durch eine Win2k3 Server Domäne. Netzwerkzugriff ist uneingeschränkt da.

Da ich mir den Vorschlag der Stadtverwaltung "Powerpoint" dafür zu nutzen nicht vorstellen konnte/kann, wurde ich (leider) damit vertraut eine Lösung zu entwickeln.

Meine Lösungsideen bisher:
  • Lösung über HTML/PHP (nichts aufwändiges; Layout werde ich später per CSS anpassen. Derweil klemmts nur bei PHP)
  • Backend jeweils auf den Mitarbeiterrechnern - Frontend auf dem Anzeige PC
  • Auf dem Anzeige-PC ist XAMPP als lokaler Webserver mit PHP installiert; Freigaben auf htdocs sind mit vollen Rechten gegeben
  • Die Mitarbeiter der jeweiligen Ämter rufen eine auf dem Anzeige-PC hinterlegte HTML Datei per Link auf, die ein Formular mit 2 Radio Buttons mit den Werten "Besetzt" und "Frei" beinhaltet. Diese Seite schreibt beim Senden in jeweils eine Datei den angeklickten Value des Radio Buttons (0=frei; 1=besetzt)
  • Das Frontend liest diese Werte per PHP aus und zeigt diese per echo an. Es ist in den Metadaten eine Aktualisierung der Seite aller 30 Sekunden vorgesehen.
  • Nach dem Ändern des Status soll wieder die Auswahlseite für den Status erscheinen.
Das große Problem meinerseits ist: Wie schreibe ich die Values der Radioboxen in eine TXT- Datei ? Wie übergebe ich diese Werte das diese dann auch wirklich in der Datei stehen ?

Mein bisheriges Script schaut so aus, funzt aber nicht, da die Datei zwar angelegt wird, aber nicht beschrieben wird. Übergabe per Submit/Post-Button:

PHP:
<?php
   $datei = fopen("gwa_staus.txt","w+");
   rewind;
   fwrite($datei, $_POST);
   fclose($datei);
?>

Ich hoffe ich konnte halbwegs erklären was ich erreichen will. Ansonsten einfach nochmal fragen ;)

Hat eventuell jemand ein paar Gedankenstützen für mich oder ein paar Tips ? Kann auch sein ich steh grad total aufm Schlauch und morgen fällts mir ein, nur halt gerade nicht.

Danke für's Lesen & eure Hilfe

ciao, ciao
Morduk
 
ich habs grad nimmer so genau im kopf, aber schau mal was in $_POST drin steht mit nem echo, weil ich glaub du kannst nur die $_POST werte mit den indexwerten reinschreiben...

$_POST alleine ergibt wsl. "" (NULL)
 
$_POST ist ein assoziatives Array. Um an den Wert eines Formularelementes zu kommen, muss dessen Name im POST-Array abgefragt werden. Wenn eine Checkbox meinetwegen den Namen "box1" trägt, dann kommt man an den Wert davon durch $_POST['box1'].
 
Am einfachsten ist es wohl wenn du beim schreiben einfach json_encode($_POST) und beim lesen einfach json_decode($file_content)
So kannst du das Post Array quasi sogar ans frontend durchreichen.

Mal so allgemein zum Thema, nichts gegen dich oder deine Programierkenntnisse oder so. Aber sollte das deiner Firma nicht mal wenigstens die Euros wert sein das ordentlich zu machen (/machen zu lassen)? Denn wenn ich das schon so lese? XAMPP als webserver uner Win ist nicht für den produktiv betrieb und ein HTDOCS gehört nie nie nicht unter keinen umständen freigegeben.
 
da du das ganze wohl gerne per browser machen willst und mir gerade fad ist baue ich dir n kleines proggi in php dass dir ermöglicht so etwas anzuzeigen

wenn ich mal ne erste kleine Version habe dann post ich dir nen screenshot

Nun mal das erste kleine Script:

So schauts aus:
iof7z4.jpg


Was tut es?
display.php ist wohl selbsterklärend...zeigt an ob wer online is oder nicht
status.php erlaubt es deinen Mitarbeitern sich einzuloggen und danach einzustellen ob sie da sind oder nicht
Das ganze rennt über mysql da das die einfachste Lösung ist.
Derweil ist jeder User einer adresse zugeordnet und er kann nur seines umstellen.
Eine Admin Schnittstelle bei der man auch mehrere adressen einstellen kann fehlt noch, wäre zwar machbar aber fürn anfang reicht das wsl

Anzeige Script:
display.php http://pastebin.org/25208

Verwaltungs Script:
status.php http://pastebin.org/25203

SQL Tabelle:
http://pastebin.org/25206

Manche Leute mögen mich dafür vl. erschlagen, aber es funktioniert und sollte eig. auch die grundsätze von "sicher" erfüllen
du solltest allerdings noch die passwörter als hash in der tabelle speichern falls du es wirklich benutzen möchtest

TODO falls dir das Script gefällt:
- Tabelle ändern (in der user Tabelle die adressen nur mit nummern zuordnen, nicht der volle name)
- passwörter durch nen md5 hash jagen und nur gehasht in der tabelle speichern
- Admin mode einfügen. kann pw ändern, alle statuszustände von allen adressen setzen und neue User hinzufügen - also ne kleine Accountverwaltung
- User können ihr pw ändern
 
Zuletzt bearbeitet:
PHP:
$user = $_POST["user"];
$query = "SELECT pw,adresse FROM users WHERE name='".$user."'";

Sicher? SoSo -> http://de.wikipedia.org/wiki/SQL-Injection

Wie du schon selber fest gestellt hast werden passwörter NIE NIE NICHT im klartext gespeichert. Und und und...

Also ich würde vom produktiv einsatz abraten.
 
jo, ist mir bekannt, muss man natürlich verbessern
und ich hab natürlich selber gesagt man wird mich dafür erschlagen :D

muss man hald vorher n escape string oder wie das heißt drüber jagen damit das nicht funktioniert

allerdings so wie der OP das beschrieben hat werden da nichtmal 100.000 User oder so raufgehen, sondern wenn ich das richtig verstanden habe wird 1x auf das Frontend und 2x auf das Backend zugegriffen, mehr nicht
und wenn man da nochn paar sachen ausbessert sollte das eig. funktionieren

kleine Updates von wegen SQL injections und andere DB struktur (normalformen und so), und leute können mehr als 1 zone verwalten

ich hoffe da gibts nichtmehr so viel auszusetzen wie bei der ersten version...z.B ja die pw nur als md5 hashes

die pw und user die schon in der DB sind sind:
a//apw
b//bpw
admin//adminpw

php: http://pastebin.org/26099
sql: http://pastebin.org/26102
 
Zuletzt bearbeitet:
Danke, danke für die vielen Antworten! Konnte mich nicht eher melden. Ich probiere die verschiedenen Sachen jetzt mal aus und melde dann Erfolg :)

Schönen Sonntag derweil noch!

ciao, morduk

€dit:
Da die Zeit etwas drängt habe ich mich heut nochmals drangesetzt und etwas getüftelt. Momentan läuft das Ganze noch auf meinem Webserver und schaut so aus:

anzeige.php
PHP:
<?php
 $gwa = fopen("gwa.txt","r+");
 $gwa_aktuell = fgets($gwa, 10);
 if ($gwa_aktuell == "0")
 {
 echo "<div id='gruen'><br><h1><u>Gewerbeamt frei.</u></h1><h2>Der Nächste bitte</h2></div>";
 }
else
 {
 echo "<div id='rot'><br><h1><u>Gewerbeamt besetzt.</u></h1><h2>Bitte warten!</h2></div>";
 }
 rewind($gwa);
 fclose($gwa);

 $ewa1 = fopen("ewa1.txt","r+");
 $ewa1_aktuell = fgets($ewa1, 10);
 if ($ewa1_aktuell == "0")
 {
 echo "<div id='gruen'><br><h1><u>Einwohnermeldeamt 1 frei.</u><h2>Der Nächste bitte</h1></h2></div>";
 }
else
 {
 echo "<div id='rot'><br><h1><u>Einwohnermeldeamt 1 besetzt.</u></h1><h2>Bitte warten!</h2></div>";
 }
 rewind($ewa1);
 fclose($ewa1);

 $ewa2 = fopen("ewa2.txt","r+");
 $ewa2_aktuell = fgets($ewa2, 10);
 if ($ewa2_aktuell == "0")
 {
 echo "<div id='gruen'><br><h1><u>Einwohnermeldeamt 2 frei.</u></h1><h2>Der Nächste bitte</h2></div>";
 }
else
 {
 echo "<div id='rot'><br><u><h1>Einwohnermeldeamt 2 besetzt.</u></h1><h2>Bitte warten!</h2></div>";
 }
 rewind($ewa2);
 fclose($ewa2);

 ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta name="author" content="Morduk">
<meta name="editor" content="html-editor phase 5">
<meta http-equiv="refresh" content="10">
<link rel="stylesheet" type="text/css" href="layout.css">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
</body>
</html>

und die Eingabeseite (1/3):
PHP:
<?php
$status_gwa = $_POST['status'];
if ($status_gwa == "0")                 
 {
 echo "<h3>Aktueller Status: FREI</h3>";
 }
else
 {
 echo "<h3>Aktueller Status: BESETZT</h3>";
 }

$datei1 = fopen("gwa.txt","r+");          
rewind($datei1);                         
fwrite($datei1, $status_gwa);             
fclose($datei1);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta name="author" content="Morduk">
<meta name="editor" content="html-editor phase 5">

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<h1>Gewerbeamt - Status Belegung</h1>
<hr>
<p><i>Status anklicken und mit "Status aktualisieren" speichern</i></p>
<hr>
<br>
<br>
<form action="gwa_eingabe.php" method="POST" enctype="multipart/form-data" >
<input name="status" type="radio" value="0" /> Frei
<br>
<br>
<input name="status" type="radio" value="1"/> Besetzt
<br>
<br>
<br>
<input type="submit" value="Status aktualisieren" />

</body>
</html>

Nicht die sauberste Art und Weise, aber es reicht damit ich morgen (Montag) meine Ruhe hab. Die hier vorgeschlagenen Scripts und Vorschläge sind gespeichert und ich werde diese noch etwas anpassen, da mir diese gefallen und für den Zweck genial sind!

Ich weiß das es professionelle Aufrufsysteme gibt, aber die Zeit drängt und das Ganze ist als Übergangslösung gedacht und dafür denke ich reichts erstmal. Mit der Einrichtung des professionellen Aufrufssystems darf ich mich mich hoffentlich in 2-3 Wocheren herumschlagen!

Danke nochmals an alle! Und eine schöne Woche
Morduk
 
Zuletzt bearbeitet:
Zurück
Oben