Forum: Mikrocontroller und Digitale Elektronik Webserver Zugriff auf Dateien, wie programmieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ein Atmel Kontroller hängt über RS232 an einem Raspi.
Via Ser2net steuere ich diesen fern (Console).


Auf dem PI läuft auch ein Webserver.
Ich möchte nun über den Wenserver ein primitives HTML Interface bauen,
mit welchem ich die Konfigdatei auf dem PI in /etc/ser2net.conf anpassen 
kann.

HTML und son Gesummsel zählt nicht zu meinen Stärken.
Wie geht mann da grunsätzlich vor (Beispiel)?

Ferner muß es doch wohl eine freie Software geben, mit welcher ich 
grafisch eine einfache web-GUI realiesren kann, zum Beispiel mit Drop 
Down Menüs, Radio Buttons etc... und optimalerweise mit einem 
"Steuerelement" zum Zugriff auf lokale Dateien?!

Ich suche mir einen Wolf und finde da einfach nichts.

Danke

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
>Ich suche mir einen Wolf und finde da einfach nichts.

Nicht mal einen Wolf ? .. es sollte ein Interface zur Hardware geben. zB 
kann man mit einem aus : (php, JS, Ajax, Java) eine Serial Library 
ansprechen.

: Bearbeitet durch User
von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Holzweg,....benötige keinen Zugriff auf das RS232 Interface!

Nur einen Möglichkeit die Konfig Dateien zu "editieren"..

von sonpech (Gast)


Bewertung
-4 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:
> Holzweg,...

Wie, Holz auch weg?

von Daniel F. (df311)


Bewertung
0 lesenswert
nicht lesenswert
um /etc/irgendwas verändern zu können müsste der webserver-user 
superuser rechte haben, das ist eine gaanz schlechte idee.

ich würde da eher eine datei im document root ablegen in der eine (nicht 
die echte) config geschrieben wird.
diese wird dann von einem cronjob (anderer user!) geöffnet, geprüft und 
bei bedarf und erfolg nach /etc übernommen.

WYSIWYG mit html gibts schon seit urzeiten - allerdings meistens mit 
eher zweifelhaftem erfolg.

schau dir mal eins von den beiden an
http://foundation.zurb.com/
http://getbootstrap.com/

und probier das ganze zu fuß zu schreiben, dabei lernst du mehr als mit 
klicki-bunti-zeug.

um die datei zu erstellen brauchst du eine server-scriptsprache - html 
kann da nix.

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit folgender "erfüllt seinen Zweck"-Lösung:

Ein kleines PHP o.Ä.-Script, das auf dem rPi läuft und eine HTML-Seite 
mit einem Formular erzeugt:
Ein mehrzeiliges Text-Eingabe-Feld, das den aktuellen Inhalt der 
besagten Datei als Text enthält. Den Inhalt des Text-Eingabe-Feldes kann 
man verändern, und wenn man auf einen "Submit"-Button unten drunter 
klickt, wird der Inhalt des Text-Eingabefeldes per HTTP POST an den 
Server bzw. das PHP-Script übertragen; das PHP-Script überschreibt dann 
einfach den Inhalt der Datei.

Das von df311 angesprochene Problem mit den Zugriffsrechten ist zwar ein 
gewisses Problem - aber könnte man das nicht einfach dadurch lösen, 
indem man User/Group oder Zugriffsrechte der Datei /etc/ser2net.conf 
entsprechend ändert, dass "www-user" (oder wie auch immer der User 
heisst, unter dem der Webserver läuft) Schreibzugriff hat?

von Klaus P. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:
> Nur einen Möglichkeit die Konfig Dateien zu "editieren"..

Eine "Serial Library" hat nichts mit der Schnittstelle zu tun. Siehe 
z.B. https://en.wikipedia.org/wiki/YAML

Es gibt viele unterschiedliche Formate für Config-Dateien. In diesem 
Bereich wird häufg mit Perl gearbeitet, da gibt es auf CPAN verschiedene 
Libraries.

Ob es tatsächlich ein Tool um "grafisch eine einfache web-GUI" mit der 
genannten Funktionalität zu erstellen gibt, weiß ich nicht. Es gibt 
einzelne Pakete wie File Manager etc. und natürlich auch Basis-Libaries 
für die GUI Elemente. Ggf. mal die gängigen PHP IDEs ansehen.

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hat denn niemand ein Beispiel an dem man sich entlanghangeln kann?

Das scheint wirklich keine Option zu sein:

http://foundation.zurb.com/
http://getbootstrap.com/

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
PHP ist für diesen Zweck sicher geeignet und leichter zu lernen als die 
Web-Frameworks für "Erwachsene" (z.N. aus dem Java Umfeld).

Schau Dir mal ein PHP Tutorial an.

Aber mache bitte nicht den Fehler, die Sicherheit zu untergraben, indem 
Du dem (Apache-)Webserver oder dem Script root Rechte gibst.

von Christopher J. (christopher_j23)


Bewertung
0 lesenswert
nicht lesenswert
Ich persönlich finde Go sehr elegant. Hier ein Beispiel für ein 
Web-Wiki/Blog, in dem man neue Seiten erstellen und Seiten verändern 
kann. Die einzelnen Seiten werden als einfache .txt-Dateien gespeichert:

https://golang.org/doc/articles/wiki/

Hier der komplette Quellcode:
https://golang.org/doc/articles/wiki/final.go

Da fehlen nur noch die HTML Templates aber die sind in dem Artikel drin.

: Bearbeitet durch User
von Mathias R. (goldenhunter97)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Schönen Guten Morgen,

hab mich mal ran gesetzt und eben ein kleines PHP Script gebastelt, 
welches den 1. Schritt deines Vorhabens abdecken könnte.

Einfach die Datei in einen beliebigen Ordner im htdocs des Apache 
reinprügeln
und fertig ist der lack.

Die erstellten Dateien landen dann im selbigen Ordner, in welchem auch 
das Script abgelegt ist.

Schritt 2 wäre dann ein Script, welches die erstellte Datei 
weiterverarbeitet (Überprüfung und dann in die richtige Config 
übernehmen, dies könntest du zB auf Shell oder Python basiert umsetzen 
[beim Raspi gern genommen])

Hoffe das bringt dich einen Schritt weiter Richtung Ziel :)
Gruß Mathias

PS: PHP Erweiterung im Apache vorausgesetzt (getestet unter Linux Debian 
mit PHP 5.6)

PPS: Das Script bietet keinerlei Eingabeüberprüfung, ist also für den 
Alltag im Privaten Bereich bestimmt, sobald jemand außenstehendes 
Zugriff auf deinen Webserver hat würde ich entweder einen Verzeichnis 
Schutz (zB via .htaccess) oder anderweitige Passwort-Sicherung sowie 
eine Eingabeüberprüfung empfehlen!

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Lieber Matthias,

das ist absolut zuvorkommend von Dir.
Vielen, lieben Dank.

Wenn ich mir das Skript anschaue, kann ich es in groben Zügen 
nachvollziehen.
Habe gestern auch ein paar Stunden bei "Selfhtml" die Zusammenhänge mit 
PHP nachgelesen und es dämmert so langsam.

Heute bin ich leider beruflich gebunden, werde am Abend aber einmal den 
gestern gelieferten RASPI III in Betrieb nehmen und mit Deinem Skript 
experimentieren.
Natürlich melde ich mich mit Feedback zurück.

VIELEN DANK,

tolle Hilfe!

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Eventuell möchtest du erstmal auf einem Windows Computer üben, falls das 
für Dich einfacher ist. In diesem Fall empfehle ich Dir das 
Programmpaket XAMPP.

Das ist ein Apache Webserver mit PHP und weiteren nützlichen Programmen, 
die in diesem Umfeld sehr oft gebraucht werden. Sie sind alle so 
vorkonfiguriert, dass sie miteinander arbeiten - so wie man das auch von 
Linux gewohnt ist.

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan,

Xampp läuft schon unter Windows bei mir.

Ist das dem PHP denn völlig egal auf welchem OS es läuft?
Ich dachte es gibt hier Abhängigkeiten.
Sind doch auch völlig unterschiedliche shells unter der Haube, CDM vs. 
bash etc..

Spätestens wenn shellfunktionen aufgerufen werden muss es doch 
Unterschiede geben.

Ob das Beispiel von Matthias da schon Probleme bekommt??


Danke für Euer Engagement!

von Mathias R. (goldenhunter97)


Bewertung
0 lesenswert
nicht lesenswert
Vorerst würd ich gern mit einem "t" geschrieben werden, ist 
persönlicher, haha danke :D

Also an sich ist es deinem PHP Script bei solch einfachen Anwendungen 
vollkommen Banane, ob es unter Windows oder Linux läuft, da das 
umstellen auf die entsprechenden Dateisysteme usw. intern von der PHP 
Lib übernommen werden (daher kann man ja auch kein PHP Server von 
Windows auf Linux kopieren, da die ja anders arbeiten)

Wo du recht hast, wäre bei den auszuführenden Anwendungen...
Es ist z.B. möglich, dass dein PHP Server andere Skripte startet (z.B. 
war es bei mir ein Python Script, welches gestartet wurde um die Zahl 
die ich an den Server sende, auf einer 7segmetn Anzeige darzustellen) 
hier würde ich das Ganze dann auf den Raspi verfrachten, da du natürlich 
unter Windows keine .sh Skripte (z.B. ausführen kannst) und auch die 
Funktion von z.B. umschalten von GPIO etc. natürlich schlecht simulieren 
kannst.

An sich wäre das auch kein Problem, einfach einen SambaServer 
fertigmachen, dann den Raspi als Netzlaufwerk anbinden und 
programmieren, als wären die Dateien auf deinem Windows PC, nur, dass 
sie in Wahrheit direkt auf dem Gerät landen wo Sie hingehören.

Bei umfangreicheren Skripten würde ich grundsätzlich immer auf dem 
Endsystem testen, da gerade PHP sehr viele Einstellmöglichkeiten hat.
XAMPP bietet dem Nutzer nun einen Ausgewogenen Mittelweg zwischen 
grundliegender Sicherheit, hat aber im Wesentlichen alle Funktionen 
aktiviert, sodass eben keine Einschränkungen entstehen (z.B. Lib's 
aufgrund von Sicherheitseinstellungen geblockt werden).

----

Bezüglich deines Skriptes, falls du diesen 2-Wege Plan fahren möchtest, 
also ein PHP Script und ein weiteres z.B. Shell Skript, dann wäre 
natürlich noch interessant, wie genau dein PHP Script aussehen soll:
Denkbar wäre hier z.B., dass er beim Aufruf der Seite automatisch eine 
Datei einliest und den Inhalt in die Text-Box schreibt (quasi wie ein 
webbasierter Editor) oder du zumindest die Möglichkeit hast eine Datei 
auszuwählen die eingelesen werden soll.
Dies ist von Nöten, wenn du z.B. nur eine Zeile ändern möchtest, da das 
Script, wie es jetzt ist, stets die komplette Datei neu schreibt, sofern 
sie bereits vorhanden war.
Auch so Späßle wie Überprüfen ob die Datei bereits vorhanden ist und 
ggf. fragen wegen Überschreiben wären denkbar.

Gruß, Mathias

von Joachim S. (oyo)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Da goldenhunter97 ja so nett war bereits ein komplettes PHP-Script zu 
schreiben und ich die Idee grundsätzlich recht nützlich fand, habe ich 
mir sein Script mal etwas angepasst (siehe Anlage):

Der Unterschied besteht im Wesentlichen nur darin, dass
- Der aktuelle Inhalt der zu editierenden Datei gleich im Eingabefeld 
angezeigt wird
- der Name/Pfad der zu editierenden Datei am Anfang des Scripts als 
kleine Sicherheitsmassnahme fest eingestellt werden muss
- Am Anfang des Scripts ein Passwort eingestellt werden kann, wenn man 
das möchte; wenn ein Passwort eingestellt ist, so ist noch ein 
Eingabefeld für das Passwort vorhanden und die Datei wird nur 
gespeichert/geändert, wenn das richtige Passwort eingegeben wurde

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mathias, Joachim,


danke für die Hilfe.

Ich schreibe hier schon vom eingerichteten PI.
Mit lighttpd und PHP.


Die Beispiele laufen im Browser, erzeugen aber keine Datei und berichten 
auch keine Fehler.

Habt Ihr eine Idee fürs troubleshooting?

Sorry, das es bei mir nicht funktioniert...

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:

> Die Beispiele laufen im Browser, erzeugen aber keine Datei und berichten
> auch keine Fehler.
>
> Habt Ihr eine Idee fürs troubleshooting?
>
> Sorry, das es bei mir nicht funktioniert...

Falls Du mein Script ausprobiert hast: Wurde da im Browser zumindest der 
aktuelle Inhalt der Datei /etc/ser2net.conf angezeigt?

Ansonsten besteht halt bei meinem Script noch das Problem, dass es wie 
gesagt natürlich nur dann funktioniert, wenn Du die 
Zugriffsberechtigungen der Datei /etc/ser2net.conf angepasst hast.
Bei mir gibt er zwar eine Fehlermeldung aus, falls er keine 
Schreibberechtigung auf die Datei hat, aber das könnte auch einfach an 
unterschiedlichen Webserver/PHP-Konfigurationen liegen.
Um auszuschliessen, dass es daran liegt, könntest Du testweise einfach 
mal mit dem Befehl
1
sudo chmod 666 /etc/ser2net.conf
temporär beliebigen Zugriff auf die Datei zulassen.

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hatte schon chmod 777 versucht...

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Und das Script von Matthias legt keine Datei an..

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:
> Hatte schon chmod 777 versucht...

777 sollte zwar auch funktionieren, ist aber trotzdem Käse: Die Datei 
/etc/ser2net.conf ist weder eine ausführbare Datei noch ein Verzeichnis.

Ausserdem nochmal meine Frage:

Joachim S. schrieb:
> Falls Du mein Script ausprobiert hast: Wurde da im Browser zumindest der
> aktuelle Inhalt der Datei /etc/ser2net.conf angezeigt?

Ansonsten:

absolutkeineahnungnomenestomen schrieb:
> Und das Script von Matthias legt keine Datei an..

Warum sollte es überhaupt eine Datei anlegen? Ich denke die besagte 
Datei /etc/ser2net.conf existiert bereits, und Du willst sie nur 
bearbeiten?

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim S. schrieb:
> absolutkeineahnungnomenestomen schrieb:
>> Hatte schon chmod 777 versucht...
>
> 777 sollte zwar auch funktionieren, ist aber trotzdem Käse: Die Datei
> /etc/ser2net.conf ist weder eine ausführbare Datei noch ein Verzeichnis.

Ok, liegt aber damit nicht an Zugriffsrechten


>
> Ausserdem nochmal meine Frage:
>
> Joachim S. schrieb:
>> Falls Du mein Script ausprobiert hast: Wurde da im Browser zumindest der
>> aktuelle Inhalt der Datei /etc/ser2net.conf angezeigt?
>
Ja, das funktioniert super.


> Ansonsten:
>
> absolutkeineahnungnomenestomen schrieb:
>> Und das Script von Matthias legt keine Datei an..
>
> Warum sollte es überhaupt eine Datei anlegen? Ich denke die besagte
> Datei /etc/ser2net.conf existiert bereits, und Du willst sie nur
> bearbeiten?

Matthias PHP Script lässt eine beliebige Datei zu, schau mal rein..

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:
> Matthias PHP Script lässt eine beliebige Datei zu, schau mal rein..

Ja, das habe ich gesehen. Ich bin aber eben einfach davon ausgegangen, 
dass Du mit seinem Script ebenfalls genau die besagte Datei 
/etc/ser2net.conf bearbeiten/verändern wolltest; und die existiert ja 
schon, muss also nicht angelegt werden - daher halt meine Verwunderung.

Wenn das jetzt aber eine Fehlannahme meinerseits war - welche Datei hast 
Du dann eben versucht, mit seinem Script anzulegen? Was hattest Du da in 
das "Dateiname"-Eingabefeld eingetragen, als es keine Datei angelegt 
hat?

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim,

Dein Script funktioniert wie eine 1!!!

Habe den PI mal rebooted, nachdem ich wirklich viel installiert und 
gespielt habe.

Fragt sich warum das von Matthias nicht funzt.


Letztlich möchte ich in die ser2conf.conf plausible Werte für 2 serielle 
Schnittstellen einfügen.

Über ein Dropdown-Menü wollte ich die gängigen Baudraten auswählen 
können.

Ggf. noch weitere Werte in der ser2net.conf Syntax.
Hätte ich dafür eine Vorlage, so würde ich den Rest sicher hinbekommen 
;-)

Wenn die Konfigurationdatei einfach immer neu geschrieben wird, wäre 
alles recht einfach.
Aufbau ist immer identisch:


11112:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT banner

Danke

von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim S. schrieb:
> absolutkeineahnungnomenestomen schrieb:
>> Matthias PHP Script lässt eine beliebige Datei zu, schau mal rein..
>
> Ja, das habe ich gesehen. Ich bin aber eben einfach davon ausgegangen,
> dass Du mit seinem Script ebenfalls genau die besagte Datei
> /etc/ser2net.conf bearbeiten/verändern wolltest; und die existiert ja
> schon, muss also nicht angelegt werden - daher halt meine Verwunderung.

Ok

>
> Wenn das jetzt aber eine Fehlannahme meinerseits war - welche Datei hast
> Du dann eben versucht, mit seinem Script anzulegen? Was hattest Du da in
> das "Dateiname"-Eingabefeld eingetragen, als es keine Datei angelegt
> hat?

Einen beliebigen Dateinamen....
Soll laut Matthias dort angelegt werden wo auch das Skript läuft..

von Joachim S. (oyo)


Bewertung
0 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:
> Fragt sich warum das von Matthias nicht funzt.

absolutkeineahnungnomenestomen schrieb:
> Einen beliebigen Dateinamen....
> Soll laut Matthias dort angelegt werden wo auch das Skript läuft..

Ich würde darauf tippen, dass Matthias' Script an sich durchaus 
funktioniert, und es einfach irgendein Problem mit 
Zugriffsberechtigungen gab.

Falls Du einen beliebigen Dateinamen eingegeben hast, ohne Pfad- bzw. 
Verzeichnisangabe (Darauf zielte meine Frage eigentlich ab): vielleicht 
wird die Datei dann aus irgendeinem Grund doch nicht im gleichen 
Verzeichnis wie das PHP-Script abgelegt?
Oder das Verzeichnis, in dem das PHP-Script liegt, hatte doch keine 
777-Berechtigung oder so?
Keine Ahnung, ich kann wirklich nur raten, aber ich tippe stark auf 
Zugriffsberechtigungen.

von Mathias R. (goldenhunter97)


Bewertung
0 lesenswert
nicht lesenswert
Ich würde auch auf Zugriffsberechtigung tippen, wie gesagt habe das bei 
mir umfangreich getestet und das ist an sich auch Verzeichnis 
unabhängig, ich habe es nicht getestet, theoretisch köntne das 
funktionieren, wenn du den Ordner bereits hast, dass du dann zB als 
Dateiname ordner/datei eingibst und die Datei somit im "ordner" erstellt 
wird.
Bei einem fehlenden Dateityp hatte das Programm eine sehr merkwürde TEMP 
datei erstellt, das hatte ich allerdings damit gefixed, dass es nun ein 
Dropdown-Menü gibt in dem 3 Dateiendungen vorselectiert werden können 
(kann ja im Quelltext beliebig geändert werden)

Und auch das Programm von Joachim funktioniert auf meinem Homeserver 
Problemlos (habe es allerdings soweit geändert, dass es eine lokale .txt 
Datei nutzt und nicht irgendwas im etc...
(Ich muss aber auch gestehen, dass ich nicht alle Teile des Codes 
Problemlos verstehe und Joachim scheinbar auch andere eingebaute 
Funktionen für dei Datei verwendet, wenn ich das richtig sehe)

Ich könnte mir vorstellen, dass evtl. dein www-data Benutzer entweder 
gobal oder in den entsprechenden Ordnern maximal lese, aber keine 
Schreibrechte hat (wäre sicherheitstechnisch denkbar, da der Webserver 
ja normal auch nur Daten lesen muss [Datenbanken werden ja von einem 
Seperaten Server erstellt/geändert usw.])

schaust mal im Terminal auf deinen Ordner (dürfte ja /var/www im 
normalfall sein) und schaust dann mal, welche Berechtigungen da gesetzt 
sind und ob dein Apache User (normal www-data) dort als Owner drinsteht.

Ansonsten wäre noch interressant zuwissen, was folgendes Script 
ausspuckt
1
<?php
2
echo phpinfo();
3
?>
das ganze als z.B. info.php speichern.
Die Ausgabe solltest du nur veröffentlichen, wenn dein Webserver nur 
Privat läuft da man dadurch natürlich auch Rückschlüsse auf die 
Angreifbarkeit ziehen kann, interressant wäre für mich momentan erstmal, 
welche PHP Version du hast und ich meine die Ausgabe hat auch irgendwo 
was stehen von wegen Datei erstellen, bin ich mir aber gerade nicht mehr 
ganz sicher (kann man glaube ich in der php.ini auch sagen, dass 
erstellen von dateien verboten wird um die Sicherheit zu erhöhen).

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht verhindert der "safe mode" von PHP Zugriff auf das ganze /etc 
Verzeichnis.

von Mathias R. (goldenhunter97)


Bewertung
0 lesenswert
nicht lesenswert
Stefan U. schrieb:
> Vielleicht verhindert der "safe mode" von PHP Zugriff auf das ganze /etc
> Verzeichnis.

Würde ich an sich ausschließen, da er ja sagt, dass Joachims Script 
soweit läuft und mein Script ja im default nichtmal im /etc speichert, 
sondern im Webverzeichnis, welches standardmäßig in /var/www liegt und 
dort dann eben in dem entsprechenden Unterordner, indem die .php Datei 
liegt.

Was denkbar wäre, ist dass er die .php z.B. in einem Ordner "test" 
liegen hat und diesen aber z.B. via Samba Server erstellt hat, also mit 
einem anderen Benutzer und der Apache Benutzer daher keine Schreibrechte 
in jenem Ordner bestizt, aber alles reine spekulation.

: Bearbeitet durch User
von Mathias R. (goldenhunter97)


Bewertung
0 lesenswert
nicht lesenswert
absolutkeineahnungnomenestomen schrieb:
> Über ein Dropdown-Menü wollte ich die gängigen Baudraten auswählen
> können.
Dann wollen wir uns doch mal mit diesem Wunsch beschäftigen...


absolutkeineahnungnomenestomen schrieb:
> Hätte ich dafür eine Vorlage, so würde ich den Rest sicher hinbekommen
Wenn ich dich richtig verstehe möchtest du also quasi ein 
fein-schnittiges Tutorial :D kannst du gern kriegen, ich fang dabei mal 
ganz vorne mit den Basics an und gehe dann weiter zum PHP Code.

Grundsätzlich benötigst du ein HTML Formular:
1
<form action="zielpage.php" method="post">
2
   <!-- Eingabe Fenster, Dropdowns, Radiobuttons, usw. -->
3
   <input type="submit" value="Beschriftung vom Senden Button" />
4
</form>

in diesem Formular kannst du nun Einzelne Elemente einfügen, dass machst 
du am besten zwischen <!-- Text --> und dem input Feld (den Kommentar 
Text [dieses <!-- blubbs -->] kannst du dabei auch gern löschen, er 
dient in dem Beispiel nur als Platzhalter)

Ein Dropdown Menü baust du wie folgt:
1
  <select name="baudrate">
2
    <option value="115200">115.200 Baud</option>
3
    <option value="57600">57.600 Baud</option>
4
    <option value="38400">38.400 Baud</option>
5
    ...
6
  </select>

Ein entsprechendes Menü mit Radio Buttons so:
1
  <p><input type="radio" name="baudrate" value="115200" />115.200 Baud</p>
2
  <p><input type="radio" name="baudrate" value="57600" />57.600 Baud</p>
3
  <p><input type="radio" name="baudrate" value="38400" />38.400 Baud</p>
4
  ...
Hierbei erfolgt die Beschriftung nicht im Elment selbst, sondern davor 
bzw. dahinter, ich habe hierbei die Beschriftung vereinfacht durch 
Kapselung in einen <p>-Tag, was soweit HTML5 Konform ist. Man könnte 
jetzt als XHTML-Guru auch noch anfangen mit so Geschichten, wie "jeder 
Radio-Button bekommt eine ID und zu jeder ID dann ein Label-Tag", was 
mein IV Lehrer auch besondes gern macht, das würde dann aussehen wie 
folgt:
1
<input type="radio" name="baudrate" value="115200" id="r1">
2
<label for="r1">115.200 Baud</label>
Hierbei könnte man dann auch, wie zu sehen, auf das Kapseln in einen 
<p>-Tag verzichten und hat den Vorteil, dass z.B. Lesehilfen oder auch 
automatisierte Ausfüll Algorithmen das Formular besser erfassen können. 
Wer das möchte kann das natürlich machen, ist aber für den 
Privatgebrauch nicht zwangsweise erforderlich und tur der eigentlichen 
Funktion im allgemeinen auch keinen Abbruch.

Und dann kommt jetzt das PHP Script welches das Ganze in eine Datei 
einträgt...
1
$eintragenInDatei = "11112:raw:0:/dev/ttyUSB0:" . $_POST["baudrate"] . " 8DATABITS NONE 1STOPBIT banner";
in dem Fall hast du eine Variable, in der dann alles drin steht, was am 
Ende in der Config Datei landen soll und an dem entscheidenden Punkt, wo 
die Baudrate hin soll, musst du dann durch Hochkommata den Text Bereich 
verlassen mit einem. eine String Addition beginnen, dort die übertragene 
Variable aus dem Formular (hier $_POST["baudrate"]) einfügen und über 
eine weitere String-Addition, welche du wieder durch einen. einleitest 
den ganzen Salat zu Ende bringen.

Das wäre die Einfache Version, bei der dein auswertendes PHP Script den 
gesamten Inhalt der Config kennt, damit eine Variable (hier 
$eintragenInDatei) und den ganzen Spaß dann in die datei schreibt (wie 
das geht haben wir ja bereits gelernt :)

Weitere Möglichkeiten beständen darin, dass er den Inhalt der Config 
einliest, den Bereich für die Baudrate selbstständig sucht und dort dann 
den entsprechenden Wert ändert (wäre denke ich für später auf jeden Fall 
sinnvoll, falls du irgendetwas anderes in der Config änderst, dann 
übernimmt er das auch).
Dabei könnte man dann auch trotzdem noch das Script von Joachim 
weiterverwenden, bei dem er dir im Vorfeld die Config komplett anzeigt 
und du also auch manuell alles eintragen kannst, damit das Funktioniert 
musst du dann dem Programmteil, welcher die Baudrate sucht und verändert 
eben statt dem Inhalt der Datei den Inhalt deines Textareas aus dem 
Eingabeformular übergeben.

Ich hoffe das ist soweit alles verständlich :D

Gruß Mathias

: Bearbeitet durch User
von absolutkeineahnungnomenestomen (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Mathias,


Sack Zement, genial!!

Das kaue ich mal durch du melde mich zurück.

Besten Dank!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.