Ankündigung

Einklappen
Keine Ankündigung bisher.

Klasse DateTime und DateTimeZone einsetzen

Einklappen

Neue Werbung 2019

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

  • Klasse DateTime und DateTimeZone einsetzen

    Hallo Zusammen,

    eine sehr komische Situation:

    Wenn ich eine BreakPoint auf die zweite Zeile setze dann fortfahre, ist alles ok.
    Wenn ich OHNE BreakPoint arbeite dann bekomme ich eine Fehlermeldung auf die zweite Zeile: " Notice: Undefined property: DateTime::$date"
    Damit DateTime und DateTimeZone außerhalb meines Namespaces gesucht wird ist das shlash davor.

    PHP-Code:
      $LastConnect = new \DateTime('now', new \DateTimeZone('UTC'));
      
    $_SESSION["login_LastConnect"] = $LastConnect->date;                 // <<<BreakPoint
      
    setcookie('login_LastConnect'Cipher::encrypt($LastConnect->date$config->get('crypt_salt')),time()+(60*60*24*365)); 

    Ich habe einen eigenen Namespase
    PHP-Code:
    namespace MyApp
    ist in composer.json bekannt. "composer dump-autoload" wurde auch ausgeführt.
    PHP-Code:
    "autoload": {
        
    "psr-4": {
          
    "MyApp\": "src"
        }
      } 

    Meine IDE ist PHPStorm.

    Hat jemand eine Idee?


  • #2
    Bei DateTime gibts kein Property date.

    https://www.php.net/manual/en/class.datetime.php

    Kommentar


    • #3
      Sehr interessant. Ich habe es verwendet da es PHPStrom so anzeigt.
      Warum ich das verwende ist, In der dritten Zeile benötigt die Methode "encrypt" ein String als Parameter. Das Datum wird in ein cookie geschrieben. Beim Start wird das cookie ausgelesen und in einer Session variable geschrieben.
      Wie sollte ich das am besten machen? Eine Variante wäre über Format das Datum als String zu convertieren und dieses String verschlüsseln in das cookie schreiben unverschlüssel in die Session Variable?




      Angehängte Dateien

      Kommentar


      • #4
        Was soll das überhaupt bringen? Warum verschlüsseln? Warum im Cookie speichern?

        Kommentar


        • #5
          Danke für den Hiniweis. So habe ich es jetzt umgesetzt und es funktioniert.
          PHP-Code:
          $_SESSION["login_LastConnect"] = $LastConnect->format(DATE_RFC2822); 
          Der Hintergrund: Wenn sich ein User angemeldet hat, werden seine Login-Daten in ein cookie gespeichert damit er sich nicht jedes mal neu anmelden muss. Das Cookie ist ein Jahr gültig.Allerdings kann es vorkommen dass sein Konto gesperrt wird. Das soll nach 24 Stunden geprüft werden. Deshalb der Zeitstempel. Die Anwender werden die Seite nicht so häufig nutzen. Da sind auch keine besonders schützenswerte Daten dahinter. Aber wie gesagt, das Konto könnte mal gesperrt werden.

          Kommentar


          • #6
            Zitat von R1100 Beitrag anzeigen
            Der Hintergrund: Wenn sich ein User angemeldet hat, werden seine Login-Daten in ein cookie gespeichert damit er sich nicht jedes mal neu anmelden muss. Das Cookie ist ein Jahr gültig.Allerdings kann es vorkommen dass sein Konto gesperrt wird. Das soll nach 24 Stunden geprüft werden. Deshalb der Zeitstempel. Die Anwender werden die Seite nicht so häufig nutzen. Da sind auch keine besonders schützenswerte Daten dahinter. Aber wie gesagt, das Konto könnte mal gesperrt werden.
            Und warum nicht einfach jedesmal prüfen? Das im Cookie zu speichern ist nur eine zusätzlich mögliche Angriffsfläche und potenzielle Sicherheitslücke. Verschlüsselung hin oder her.

            Daten, die direkt am Server ermittelbar sind, sollten nicht von einem Client geladen werden. Das ist unnötig und wie gesagt eine Einladung zur Manipulation.

            Kommentar


            • #7
              Du hast natürlich recht.
              Ich verdiene meine Brötchen nicht mit Web-Anwendungen. Mich interessieren Web-Anwendungen doch sehr. Jedes unkritische Projekt welches sich für eine Web-Anwendung eignet, wird umgesetzt. Die Projekte "missbrauche" ich zum lernen. Deshalb wird jede Technologie ausprobiert. In diesem Projekt hole ich mir die Daten über einen REST-API Server der von mir ist und in einer anderen Sprache erstellt wurde. Eine normale MySQL Datenbank hätte natürlich auch ausgereicht. Auch wurden die Daten Asynchron über AJAX abgerufen, hätte ich auch nicht gebraucht. Wie gesagt, es geht um ein echtes Projekt welches ich zum Lernen nutze.

              Schöne Grüße und vielen herzlichen Dank für den Support.

              Kommentar

              Lädt...
              X