Generierten Wert aus PHP Script nur 1x pro Monat darstellen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Ripley, 1. Dezember 2017 .

Schlagworte:
  1. 1. Dezember 2017
    Hallo RR,

    Es geht um Folgendes:
    Wir haben ein firmeninternes CMS namens "Tiki", wo wir Anleitungen, eine Mitarbeiterübersicht und auch einen internen Adminbereich haben, den nur ich und mein Chef einsehen können. In dem Adminbereich haben wir eine Seite, wo immer zum ersten des Monats ein neuer "kluger Spruch" eingeblendet wird (manuell von uns eingepflegt), aus dem sich ein Passwort auslesen lässt, sofern man die richtige "Formel" zum decodieren hat. Dies dient der Sicherheit, da sich dieses Passwort jeden Monat ändern muss laut den Regeln hier.

    Nun wurde ich (ohne Programmiererfahrung^^) damit beauftragt, eine 4- stellige Zufallszahl in die Formel aufzunehmen, welche ebenfalls immer neu zum 1. jeden Monats generiert werden soll. So weit so gut.. ich habe nach längerem Forschen ein .php Script erstellt, welches ich als Plugin in das Tiki CMS eingebunden habe. Das funktioniert auch alles wunderbar und so wie es soll, außer eine gravierende Eigenschaft:
    => die random Zahl wird bei jedem Neuladen der Seite neu generiert
    Da diese Zahl aber Bestandteil von einem wichtigen Passwort für 1 Monat ist bzw werden soll, muss ich das Script nun so anpassen, dass die Zahl immer nur zum ersten des Monats um sagen wir mal 5 Uhr Morgens generiert wird und dann 1 Monat lang bleibt. Ist dies irgendwie möglich? Ich habe nach kurzer Recherche gesehen, dass man das lösen kann, indem man eine zweite .txt Datei erstellt, in die der Wert geschrieben wird und auch bleibt, sofern man eine Bedingung einbaut, welche überprüft, welches Datum und welche Uhrzeit es ist.

    Da meine Programmierkenntnisse mehr als bescheiden sind, wollte ich mal fragen, ob Ihr mir hier zumindest einen Anstoß in die richtige Richtung geben könnt mit ggf. einem Codeschnipsel?

    Viele liebe Grüße,

    Ripley
     
  2. 1. Dezember 2017
    Wie wäre es, wenn du manuell mit einem Würfel die Zahl generierst und die dann ein mal im Monat manuell in eine Textdatei schreibst? Euer Sicherheitskonzept finde ich zwar irgendwie fragwürdig, aber das wäre wohl die einfachste Lösung für dein Problem.
     
    klaiser gefällt das.
  3. 1. Dezember 2017
    Zuletzt bearbeitet: 1. Dezember 2017
    Oder mit einer neuen Tabelle in die Datenbank schreiben.

    //edit ist das wie ein Bibel/Thora/Koran/Eddacode?

    Man könnte es so lösen mit mysql: (Beispiel, es fehlt ein wenig Code wie Code generieren etc.)
    Code:
     // Tabelle erstellen für die Sätze
     $table_phrase = mysqli_query("CREATE TABLE IF NOT EXISTS phrase(phrase_id INT(11) PRIMARY KEY AUTO_INCREMENT,
     phrase_text VARCHAR(255) NOT NULL,
     phrase_date DATETIME NOT NULL)
     ");
    
     // veraltete Datensaetze loeschen
     $delete_trash = mysqli_query("DELETE FROM phrase WHERE phrase_date < NOW() - INTERVAL 30 DAY");
    
    
     
  4. 1. Dezember 2017
    Cronjob einrichten, die php wird dann nur einmal im Monat aufgerufen und erzeugt das Passwort.

    5uhr am 1 des monats als user www-data (ggf auch root wenns nich geht) script php ausführen.
    dafür muss php-cli installiert sein. eintrag für /etc/crontab
    Code:
    0 5 1 * * www-data php /home/website/meinScript.php
     
    klaiser gefällt das.
  5. 10. Dezember 2017
    Ich würde es ebenfalls über eine Tabelle in der Datenbank lösen (da ihr ein CMS habt, gehe ich mal davon aus, dass ihr auch eine Datenbank habt).

    Die Tabelle könnte zum Beispiel so aussehen:
    • randomValue
      dateMM
      dateYYYY
    In der Tabelle pflegst du dann einmal manuell die Werte für die nächsten X Monate.

    Und dann fragst du das ungefähr so ab:
    Code:
    $sql = "SELECT randomValue FROM myTable WHERE dateMM = '" . date("m") . "' AND dateYYYY = '" . date("Y") . "'";
     
    Ripley gefällt das.
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.