Hallo geschätztes Forum, vielleicht hat das der eine oder andere schonmal gemacht. Ich habe ein Net IO (Atmega644) mit Robue's Firmware drauf. Ich sammle ein paar Wetterdaten und verwende momentan einen Cronjob, um meine gesammelten Daten auf die Datenbank (MYSQL) zu schieben. Gibt es ne Möglichkeit oder anders gefragt, weiss jemand, wie ich mit meinem Net IO meine gesammelten Daten direkt auf die Datenbank lade, ohne einen Cronjob verwenden zu müssen? Jetz schreiben sicherlich welche, die da ein paar Sicherheitsbedenken haben....aber für mich sind das "nur" Wetterdaten....... Gruss Stefan
Gast
#3451135
schaue dir mal das Ethersex-Projekt an: http://www.ethersex.de/
Wenn auf dem Zielserver (dem mit MySQL) auch PHP läuft, kannst du die Daten ans PHP POSTen - das geht mit einem Receiverskript. Hier ist was, das ein XML von einem Gameserver empfängt und in die Datenbank XWW2 einträgt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
Da ist jetzt ne Menge weggelassen, aber das Prinzip bleibt das gleiche. Die Hauptarbeit ist es hier, aus dem empfangenen XML die Daten rauszufummeln und in die MySQL DB mundgerecht zu posten.
Gast
#3451383
Das PHP-Beispiel geht aber einfacher:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
und jetzt die supersichere Variante:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Mal im Ernst, im Prinzip geht es so, das Skript muss aber verhindern, dass ungewollte Anfragen an die DB gestellt werden können. D.h. das "INSERT INTO $tablename" sollte im PHP-Skript hartcodiert stehen und nicht vom Endgerät per GET/POST kommen.
Daniel schrieb: > Das PHP-Beispiel geht aber einfacher: (schnipp) > und jetzt die supersichere Variante: (schnapp) Aua. AUA. AUA! 1. man nimmt nie einen Querystring aus einem HTTP Parameter. Man nimmt nur Werte und fügt die nachdem man sie validiert und wenn es Strings waren, korrekt gequotet hat in eine vorgegebene Query ein. 2. ein Passwort in einem HTTP GET Parameter unzubringen ist ungefähr so sinnvoll, wie es auf ein Post-It zu schreiben und ans schwarze Brett zu kleben. 3. dein "Validator" für Queries ist ... suboptimal. Es gibt SQL Kommentare. Groß/Kleinschreibung. Verschiedene Encodings. Und evtl. möchte man ja auch sowas wie INSERT INTO foo VALUES ("der drops ist gelutscht") machen können. Ich kann nur hoffen, daß kein PHP Code von dir auf öffentlich zugänglichen Webservern liegt. XL
Gast
#3451652
Ob das Passwort nun im Query- oder POST-String steht ist doch piepegal, ist ja nicht so dass der Atmega den Aufruf im Internet Explorer macht und jemand in die URL-Leiste schauen könnte .. :D
Hi @all, erstmal danke für die Infos/Antworten. Ich habe es mir ein bißchen anders vorgestellt. Das, was ich bis jetz herausfinden konnte ist, dass in der Robue's Firmware bzw. in Radigs's Firmware ein http-get Befehl existiert. Nur weiss ich nicht, wie man das am einfachsten "codet". Und zwar möchte ich gerne auf php verzichten, damit meine ich, dass der Befehl, der die Daten in die Datenbank schreibt, direkt vom Net IO ausgeführt wird.....mal jetz sämtliche Sicherheitsaspekte herausgenommen...wie gesagt, es sind Wetterdaten und der Aspekt "Sicherheit" ist für mich momentan sekundär. Ich habe das Problem, dass das Net IO nicht auf jeden vom Cronjob ausgeführten Updatebefehl antwortet. Ich hätte gerne alle 5 Minuten ein Update, doch dazu muss ich minimum 3 mal den Net IO kontaktieren, bevor der mir ein einziges mal Daten ausspuckt.(siehe den Log) Eine andere Lösung wäre noch, dass man dem PHP-Script beibringt, wenn ein Cronjob ausgeführt wird (upload.php): ------schnipp------ wenn das Net IO nicht beim ersten mal antwortet, solange einen Updatebefehl ausführen, bis die geforderten Daten übertragen sind......und das dann alle 5 Minuten.....usw usw usw...... ------schnapp------ Aber da habe ich ebenfalls keinen blassen Dunst, wie sowas zu realisieren wäre. Mein PHP hefte ich ebenfalls mal mit ran, vielleicht gibts ne Idee dazu.... Gruss
Gast
#3452133
Axel Schwenke schrieb: >> und jetzt die supersichere Variante: > > (schnapp) > > Aua. AUA. AUA! Irre, wie das hier immer funktioniert. Pawlows Hund ist nichts dagegen. Muss gleich noch mal einen Thread eröffnen, in dem ich Widerstand mit "ie" schreibe und ein großes Foto im .png-Format anhänge. ;-) Tja, jetzt bin ich auf den mySQL-Client gespannt, der auf dem NetIO läuft, das Passwort verschlüsselt überträgt und verhindert, dass der Server beliebige mySQL-Kommandos ausführt, statt nur die gewünschten. Stefan, wenn Du nicht herausfinden kannst, warum das NetIO nicht antwortet, müsstest Du es eben so oft probieren, bis etwas gültiges kommt, etwa so:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
Oder doch den Spieß umdrehen und das NetIO zyklisch die Anfrage an den Server stellen lassen, wozu Du das herausfinden müsstest: > Das, was ich bis jetz herausfinden konnte ist, dass > in der Robue's Firmware bzw. in Radigs's Firmware ein http-get Befehl > existiert. Nur weiss ich nicht, wie man das am einfachsten "codet". Ich kenn das NetIO nicht, deshalb kann ich hier nicht helfen.
@Daniel: Ist zwar schon ne Weile her...... Ich habe bis jetzt nicht rausfinden können, warum sich das NetIO sporadisch weigert, Daten für die Datenbank preis zu geben. Ich habe aus diesem Grund den oben genannten Code eingebaut. Sieht jetzt besser aus. Danke nochmal dafür..... Gruss Stefan
Gast
#3575990
Hi, Bei mir hat geholfen dass fopen nur einmal in der update php aufzurufen anstatt über die Funktion einmal pro Wert. Damit muss das NetIo nicht zig mal die Daten.htm erstellen. Gruss micha
Hi Micha, ich habe leider nicht viel Plan von PHP. Ich weiss nicht, wie ich das anders schreiben kann. Gruss Stefan
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.