Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wie Daten per Webpage entgegennehmen?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Wie Daten per Webpage entgegennehmen?

    Hi,

    für viele bestimmt ein triviales Problem, aber ich blick gerade gar nicht durch:

    Aufgabe:

    Eine Wetterstation kann per web-aufrufe Daten "versenden".

    Der Aufruf ist "konfigurierbar" und sieht in etwa wie folgt aus:

    http://<www-adresse/seite>?<feld1>=<wert1>&<feld2>=<wert2>....


    Frage:
    Wie kriege ich die Daten in ein PHP Script (also, was brauche ich alles ...)? Ich dachte, das wäre mit einer leeren Seite getan und ich bekäme in $_GET oder $_POST die Werte ausgelesen, das scheint aber nicht so zu sein ... jedenfalls kriege ich nix an Daten.

    Hat vielleicht jemand ein Beispiel für mich?

    Danke im Voraus
    Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

  • #2
    Zitat von jwka61 Beitrag anzeigen
    Eine Wetterstation kann per web-aufrufe Daten "versenden".
    Was meinst du mit versenden?

    Wie sieht dein aktueller Codeschnipsel aus?

    Kommentar


    • #3
      Mach dich mit cURL vertraut.

      Kommentar


      • #4
        Zitat von jwka61 Beitrag anzeigen
        Hi,

        Aufgabe:

        Eine Wetterstation kann via HTTP Daten bereitstellen.

        Der Aufruf ist konfigurierbar und sieht in etwa wie folgt aus:

        http://<www-adresse/seite>?<feld1>=<wert1>&<feld2>=<wert2>....


        Frage:
        Wie kriege ich die Daten in ein PHP Script (also, was brauche ich alles ...)? Ich dachte, das wäre mit einer leeren Seite getan und ich bekäme in $_GET oder $_POST die Werte ausgelesen, das scheint aber nicht so zu sein ... jedenfalls kriege ich nix an Daten.

        Hat vielleicht jemand ein Beispiel für mich?

        Danke im Voraus
        /fixed

        [man]curl[/man]
        [man]file_get_contents[/man]

        Jede Seite die du abholst hat Content den du auswerten musst. Punkt.
        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

        Kommentar


        • #5
          Schau dir doch erstmal im Browser an, was dein Aufruf der Wetterstation liefert und wie die Daten formatiert sind. Den Browserquellcode zum Testen als Datei zu speichern ist mitunter auch zweckmäßig.
          Dann probiere es zuerst mit file_get_contents.

          Kommentar


          • #6
            Hallo,

            vielleicht ist nicht rüber gekommen, was mir fehlt ...

            Also, es geht mir NICHT darum, etwas zu versenden oder auszulesen, sondern zu EMPFANGEN und abzulegen, was ein anderer per web-Anfrage sendet.

            Die Wetterstation kann wie schon oben geschrieben, zyklisch - alle 5 Sekunden - Webseiten aufrufen und das mit dem typischen "Query-String Format".

            Was mir fehlt, ist eine "Webseite", die diese Daten entgegen nimmt und einfach per file_put_contents wegschreibt.

            Wenn das erst mal in $_GET oder $_PUT drinsteht, sehe keine weiteren Schwierigkeiten.


            Mir fehlt also der (HTML?) - Code,


            Vielleicht noch eine Ergänzung: Auf meinem Home Server benötige ich dafür eine HTML Seite. Ein BEispiel habe ich auch erstellt und ich kann im Browser die seite aufrufen. Auch das embedded Script läuft ab, aber ich habe nicht in $_GET und $_POST ... müssen dafür Felder in der HTML Seite definiert werden? Und wenn ja, müssen sie wohl namentlich mit dem übereinstimmen, was die Station sendet, nehme ich an ... nur ... WIE (in HTML)??
            Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

            Kommentar


            • #7
              Dann sollte aber ein simples auslesen von $_GET reichen.

              Mach auf deiner Seite die mit den GET Parametern aufgerufen wird mal ein

              print_r($_GET);
              und ruf die Seite mal testweise mit Parametern auf
              Code:
              deineseite.php?eins=foo&zwei=bar&drei=foobar
              benötige ich dafür eine HTML Seite
              Es muss eine .php seite sein (also zumindest keine statische HTML-Seite), damit die vom Webserver ausfgeführt wird, reines statisches HTML kann keine GET-Parameter auslesen, dafür brauchst du "Intelligenz" (zB PHP am Webserver).
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                @hausl: Dein Hinweis hat mich bestärkt, dass meine ursprünglche Idee schon richtig war. Ich habe es also nochmals probiert mit meinem ersten 5-Zeiler ... und was soll ich sagen ... es geht!

                War gestern Nacht wohl etwas spät???

                So, wie ich es erwartet hätte: einfaches PHP-Script anlegen und auf $_GET zugreifen. Keine HTML Form, nix ...

                Hab keine Ahnung, warum das heute nacht nicht ging.

                Danke für die Antworten!
                Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

                Kommentar


                • #9
                  Und bitte die Sicherheit nicht vergessen!
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Sicherheit ... hmmm.

                    Sollte (glaube ich???) unkritisch sein, weil ich den Querystring einfach entgegen nehme, die zulässigen indices aus $_GET abklappere, die Daten in einen csv String verwandle und in die Datei schreibe.

                    Was könnte da schiefgehen?
                    Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

                    Kommentar


                    • #11
                      Jedenfalls fällt bei CSV schonmal die SQL-Injection-Thematik weg, dennoch gilt es immer Werte von aussen nie ganz blind zu übernehmen, wenn die URL öffentlich "aufrufbar" ist. Könnte dir ja auch zB ganz ungeprüft jemand ein Javascript über die URL liefern, das du dann in die CSV schreibst und das dann zB beim Anzeigen der Wetterdaten im Browser dann was "böses" macht etc..

                      Ist ein Grundsatz.. und ich denke du kannst die erwarteten Werte ja gut "vorhersehen" also gewisse Dinge schon als Zahl casten, etc.. da fällt schonmal viel weg..

                      Siehe hier die gelisteten Punkte: http://php-de.github.io/#security
                      Und hier: http://php-de.github.io/jumpto/sicherheit/

                      Wollte es nur erwähnt haben
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        Verstanden.

                        Es kommen auch nur Zahlen an, die ich kurzerhand beim Einlesen caste und auf zulässigen Range teste. Leider ist die API der Wetterstatin nicht so umfangreich, dass ich ein Ticket einschleusen könnte, das ich zyklisch tausche oder fortlaufende Nummern oder sowas ...

                        Danke für's heads up!
                        Ich muss PHP im Kontext Home Automation nutzen (Vorgabe Hersteller und nicht zu ändern). Da kommt es leider ggf. auf ms an. Deshalb manche "seltsame" Frage.

                        Kommentar

                        Lädt...
                        X