Hallo, meine Bestandsdaten werden vom Großhändler eingelesen. Ändert sich der Bestand eines Artikels auf Null, steht in der Spalte p_stock 0. Was allerdings nicht geändert wird sind die Spalten p_shipping und google_export_availability. Die Anpassung dieser beiden Spalten möchte ich mit einer PHP-Datei machen, in der SQL-Anweisungen stehen, sowas zum Beispiel: Code: UPDATE products_item_codes INNER JOIN products ON products_item_codes.products_id = products.products_id SET products_item_codes.google_export_availability_id = 3 WHERE products.products_quantity = 0 AND products_item_codes.google_export_availability_id != 3; aber dann natürlich in einer PHP-Datei realisiert. Die PHP Datei soll über einen Cronjob (ALL-INKL) ausgeführt werden. Und nun komme ich zum Thema, das mich etwas beunruhigt. Meine Cronjo-URL bei ALL-INKL sieht so aus: (Link nur für registrierte Nutzer sichtbar.) Ich kann diese URL aber auch im Browser aufrufen, die PHP-Datei wird dann auch ausgeführt, und das ist schlecht. Wie kann ich es bewerkstelligen, dass als Querystring ein Token angehängt wird, und wenn das geht, wo bekomme ich den Token her? Kann ich mir den Token bei "API-Token / API-Tokens verwalten " generieren und dann an die URL anhängen? Dann gibt es auch noch die "Zeitgesteuerte Aufgaben", aber hier ist man eingeschränkt, was die Aufgaben betrifft. Den Timer gibt es auch noch, aber auch hier sehe ich keine Möglichkeit, für meine PHP-Datei was generieren zu lassen, da nur der Lieferstatus und Artikelstatus vorgegeben sind. Mir geht es im Grunde darum, den Cronjob einigermaßen SICHER zu machen, gegen hacking. Ich habe schon im Forum gelesen, aber konnte hier nichts konkretes finden, leider. Ich stehe auf dem Schlauch und wäre für Hilfe sehr dankbar. Gruß Bernd
Einfachste Lösung: Man nimmt einen beliebigen Passwort-Generator. Als CronJob-URL nimmt man dann sowas hier: https://meinShop.de/daten_aktualisieren.php?token=XfcIE22Q3gRVqk50Wv2j8WPA Und in der daten_aktualisieren.php steht: Code: <?php if (!isset($_GET['token']) || $_GET['token'] !== 'XfcIE22Q3gRVqk50Wv2j8WPA') { http_response_code(403); exit('Forbidden'); } Ich habe jetzt bewusst auf Sonderzeichen im Token verzichtet, um nicht mit urldecode() o.ä. hantieren zu müssen.
Guten Morgen zusammen, ich kann Dominik nur zustimmen. Genau so hätte ich das auch vorgeschlagen. Zusätzlich muss natürlich trotzdem dafür gesorgt werden dass die URL (mit Token) nicht öffentlich wird. Denn wer den Link mit dem Token kennt kann natürlich trotzdem per Browser das Script aufrufen. Grüße Walter
@Dominik Späte Herzlichen Dank !!! Danach hatte ich gesucht - die Antwort wie immer: PERFEKT, nochmals Danke. @Walter Lenk Auch hier ein Dankeschön. Ich hatte mich in mein Thema auch schon eingelesen, kam aber mit dem Token nicht weiter, was die ideale Lösung ist. Ansonsten hätte ich die PHP-Datei in ein kryptisches Unterverzeichnis gelegt und auch die PHP-Datei kryptisch benannt. Vielleicht hätte ich noch eine IF Abfrage mit ELSE an den Anfang der Datei gesetzt und mit einer Textdatei gearbeitet, in der ich die Zeiten (+/-) eingetragen hätte, an denen der Cronjob ausgeführt werden darf. Das hatte ich als Alternativen im Hinterkopf. Aber: Cronjob war mein Wunsch und ist das Optimum. Viele Grüße Bernd