Cronbjob einrichten für Seite die IFrames Beinhalter

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich lasse mein Raspberry täglich eine PHP Seite aufrufen die auf ein Externen Server liegt, das klappt auch soweit.

    Nun muss die neue Version dieses Skyptes aber umbedingt ein IFrame haben und seit dem dieses eingebaut ist verweigert der Raspberry gänzlich das öffnen der Seite.


    Was kann ich tun?

    aktuell sieht mein cronjob so aus:

    5 8 * * * lynx -dump http://www.xxxxx.de/Webserver/xxxx.php?PW=Hase123 >/dev/null

    ( habe die Internseite geänder weil ein fremdes rum fummeln doof wäre ;) )

    der funktionierte bis das IFrame hinzu gekommen ist.

    Öffne ich die Seite über Firefox, Chrome, Safari wird es ganz normal ausgeführt ohne fehler. Nur mein Raspberry weigert sich.

    Installiert ist auf den Rasberry Raspbian inkl aller Updates...


    Wenn ihr euch fragt warum das Iframe sein muss, ich habe keine andere Idee wie ich das lösen sollte.

    Das Skript durchsucht meine MYSQL Datenbank und analisiert deren Inhalt, wenn bestimmte einträge fehlen, dann wird ein Link Generiert der aus Internseite Telefonnummer, Text besteht. Sobald ich diesen über ein IFrame aufrufe wird ein externer anbieter diese Daten übergeben und dieser Sendet sie dann per SMS. Jegliche versuche mit Include haben nicht funktioniert. Hier mal so ein Beispiel link der aufgerufen werden muss

    https://www.smsflatrate.net/schnittstelle.php?key=5d49fe1f4505796b04a372d6fd430eba&from=00491736278877&to=$Telefonnummer&text=$TextSMS&type=20

    wenn jemand eine andere Idee ausser IFrame hat, dann darf er sich gerne melden ;)

    Einmal editiert, zuletzt von blueberlin (12. September 2015 um 10:16)

  • Cronbjob einrichten für Seite die IFrames Beinhalter? Schau mal ob du hier fündig wirst!

  • Ich versteh das ganze Konzept nicht ...

    Der PI ruft eine Internetseite auf. Auf dieser Internetseite ist ein iFrame. In diesem iFrame steht nur etwas wenn in einer Datenbank bestimmte Datensätze fehlen ...

    Wofür dann überhaupt der iFrame? :s Wieso ruft der PI nicht direkt die Datenbank ab und veranlasst das verschicken einer SMS wenn ein bestimmter Datensatz fehlt?

    Wieso soll der PI überhaupt die Internetseite aufrufen? :-/

  • Ich bin genauso verwirrt wie meigrafd, vor allem warum der Pi das lesen muss...

    Aber ein paar Infos: lynx kann keine iFrames sondern zeigt nur den entsprechenden Link an (Laut googlesuche, hab auf die schnelle keine seite mit iFrame gefunden zum testen, zum glück, iFrames sind böööööööööööööse!)
    Mit include kann das auch nicht funktionieren, das Zauberwort hier heißt ajax oder der Befehl fopen, der shcickt auch http-Anfragen. Siehe hier: http://www.php-resource.de/forum/php-deve…-schreiben.html
    Ich nehme an, dass du PHP nutzt, denn du redest von include.

  • Interessant wäre zu wissen Wie das genaue Zusammenspiel aussieht. Also was läuft auf dem Webserver um dann etwas in den iFrame zu schreiben. Ich vermute mal das ein Script läuft und die Datenbank durchsucht, existieren bestimmte Datensätze nicht wird eine html geschrieben welche wiederum vom iFrame eingebunden wird - so in etwa? Das ließe sich dann eigentlich auch ganz einfach mit PHP regeln - falls Datei existiert, dann gebe aus, ansonsten eben nicht...

    Aber trotzdem bleibt die Frage offen, was der PI damit zu tun hat, wieso der PI diese Seite überhaupt ansurfen soll, welchen Hintergrund hat das - macht der PI noch irgendwas mit dem Aufruf?

    Das sind wie ich finde zu viele Ecken um eine Aktion auszulösen - das verschicken einer SMS.

  • Hallo,

    wenn ich das richtig verstehe, interessiert dich der Inhalt (=der HTML-Quelltext) des iFrames?

    Wenn ja, dann lade die Webseite, welche das iFrame enthält, parse diese und extrahiere den Link des iFrames, lad' den iFrame separat, parse diesen und extrahiere die Infos, die du brauchst.

    Geht z.B. mit Python, die nötigen Module hat Python alle an Bord.

    Gruß, noisefloor

  • Folgendermassen :)

    Der Pi ruft einmal an Tag eine Internetseite auf ( PHP )

    Diese durchsucht nun eine MYSQL Datenbank, jeder Benutzer dieser Datenbank muss eine bestimmte Anzahl an Einträgen haben.

    Hat der Benutzer die bestimmte Anzahl an einträgen, dann ist alles gut und es wird der nächste Benutzer Ausgewertet.

    Hat der Benutzer nicht genug einträge erhält der Benutzer eine Email.

    DAS klappt alles super mit den raspebrry schon seit etwas über 1 Jahr läuft das alles ganz toll.

    Nun möchten aber einige Benutzer lieber eine SMS anstatt eine EMail.

    Wie mache ich das? Habe mir ein Internet Anbieter gesucht dee SMS Versenden kann, die Daten wie Telefonnummer, SMS Text usw... Muss ich an den Anbieter übergeben, das mache ich indem ich die Internetseite Aufrufe. Also wie oben im Beispiel http://smsflat... Usw...

    Dadurch bekommt der Anbieter alle nötigen Daten und Semdet die SMS.


    Wenn der Benutzer anstatt eine Email eine SMS haben will dann steht in mein PHP programm das er eben diesen Weblink öffnen soll.

    Über Include geht es nicht, über FOpen sagt mir der Anbieter das dise ankommenden Daten nicht stimmen, nur über ein IFrame klappt es ohne probleme nur das will eben der pi dann nicht ausführen dieses iframe wird von ihn ignoriert.

    Jetzt brauche ich ein Browser für den PI der alle funktionen eines browsers unterstützt und trotzdem über crontab angesprochen werden kann.

    Was die seite ausgibt ist mir schnuppe das bekomme ich eh nicht angezeigt weil der pi kein Monitor hat.

    Hoffe das war jetzt so verständlicher

  • Hallo,

    Zitat

    Hoffe das war jetzt so verständlicher


    Nein, eher im Gegenteil...

    Erst sagst du, du hast ein Problem, die Webseite abzurufen (bzw. dein Pi), dann sagst du, dass deine Nutzer irgendwas irgendwo anklicken sollen.

    Wenn ich das richtig verstehe, machst du über die Webseite eine DB-Abfrage. Damit hättest du dir in PHP ein REST-Interface zur DB erstellt, IMHO.

    Wo ist denn da der Zusammenhang zur Auswahlmöglichkeit deiner Nutzer "SMS oder E-Mail"? Die Benutzerverwaltung sollte über eine eigene Seite laufen.

    Es klingt so, als wolltest du _alles_ über eine Seite regeln, die eierlegenden Wollmilchsau. IMHO klingt das im Moment stark nach "broken by design".

    Ansonsten müsstest du hier mal zeigen, was die ominöse PHP-Seite liefert und wie die aussieht. Am besten direkt die URL. Ohne bringt das hier sonst IMHO nicht viel.

    Was mich auch sehr verwirrt:

    Zitat

    Was die seite ausgibt ist mir schnuppe das bekomme ich eh nicht angezeigt weil der pi kein Monitor hat.


    Warum rufst du sie dann ab? Ein HTML-Seite hat doch nur den Inhalt, der auch angezeigt werden könnte.

    Gruß, noisefloor

  • Die Benutzer können das Wählen wenn sie sich anmelden, das hat nichts mit den Skipt zu tun was ich per cronjob aufufe.

    Ich muss den Inhalt per IFrame aufrufen weil nur so die Daten an die andere Homepage übergeben werden kann durch ÖFFNEN der Seite und wie öffne ich eine Internetseite über PHP als über IFrame ? per Include und FOpen akzepiert der Server der für den SMS Versand zuständig ist nicht die Datenabfrage.

  • Welche Rolle spielt dabei denn nun der PI? Ist der nur wegen des cronjobs im Einsatz? kann das der Webserver nicht selber?

    Also wenn ich das richtig verstehe macht alles das PHP Script. Aber ist das ein und das selbe wie auch deine Nutzer aufrufen? Also so ganz versteh ich den Ablauf noch nicht, welche Rolle die Nutzer dabei spielen.

    ...So wie ich sehe hättest du 2 Möglichkeiten:

    • Wenn das PHP Script auf dem Webserver sagt, es müsste eine SMS verschickt werden, dann gibt das PHP Script alle nötigen Daten an den PI aus und der PI ruft dann einfach die smsflat... Seite auf.
      Dazu brauchst du ja nur ein Script welches von Crontab ausgeführt wird und Falls eine Rückgabe vom zB wget Aufruf auf das PHP erfolgt, verarbeitest du diese Rückgabe - zum Beispiel alle Daten durch ein Trennzeichen " ; " aufsplitten und weiter verarbeiten...
    • Im PHP Script auf dem Webserver curl verwenden um den Aufruf zur smsflat... Seite vorzunehmen.
      curl gibt es also Module für PHP.
  • Hallo,

    Zitat

    Ich muss den Inhalt per IFrame aufrufen weil nur so die Daten an die andere Homepage übergeben werden kann durch ÖFFNEN der Seite


    Das reine Öffnen einer Seite überträgt kein Daten. Könnte es sein, dass du an die URL noch GET-Daten anhängst.

    Poste mal bitte ein Beispiel. Die eigentliche Seite kannst du ja z.B. durch example.com ersetzen, wenn du uns die Domain nicht mitteilen kannst / möchtest.

    Ansonsten hatte ich noch meinem letzten Post auch noch die Idee / Vermutung, dass curl das ist, was die vllt. brauchst.

    Gruß, noisefloor


  • Poste mal bitte ein Beispiel. Die eigentliche Seite kannst du ja z.B. durch example.com ersetzen, wenn du uns die Domain nicht mitteilen kannst / möchtest.

    Am Ende von Beitrag#1:

    Brauchbare Stichwörter für eine Googlesuche ums passende zu finden: PHP OPEN URL GET
    (da ist auch fopen dabei, das funktioniert auch mit GET Parametern..)

  • Ich Danke euch !!!

    meigrafd

    Der Tipp mit PHP OPEN URL GET war genau der entscheidene Tipp damit funktioniert es jetzt :)

    ich danke euch ;)


    P.S Ja mein PI macht nichts anderes als 1 mal am Tag diesen Cronjob ausführen, sonst langweilt er sich. Mein Webanbieter bietet das auch an mit den Cronjob, allerdings will der 1,50€ in Monat dafür haben und der Pi soll ja nur so 5€ Strom im Jahr verbrauchen, deswegen komme ich damit deutlich günstiger weg ;)

    Einmal editiert, zuletzt von blueberlin (13. September 2015 um 10:35)

  • [code=php]$SMSSenden="https://www.smsflatrate.net/schnittstelle.php?key=8d49de1f4505796b04a372d6fd430eba&from=004917123456&to=$Telefonnummer&text=Hi, schau bitte im System nach, bei dir fehlen wichtige Artikel MFG&type=20";
    $SMSSenden=str_replace(' ', '+', $SMSSenden);
    $handle = fopen("$SMSSenden", "r");
    [/php]


    Das ist jetzt die entscheidene Zeile die dafür sorgt das meine Daten per SMS gesendet werden.

    Vorrher habe ich das ganze so gelöst gehabt:

    [code=php]$SMSSenden="https://www.smsflatrate.net/schnittstelle.php?key=8d49de1f4505796b04a372d6fd430eba&from=0049175123456&to=$Telefonnummer&text=Hi, schau bitte im System nach, bei dir fehlen wichtige Artikel MFG&type=20";
    ?>
    <iframe src="<? echo $SMSSenden ?>" width="100" height="100" name="SMSSenden"></iframe>
    <?
    [/php]


    Im Browser wie Firefox klappte beides, über den Cronjob aber nur die erste variante ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!