PHP Probleme bitte um Hilfe?

...komplette Frage anzeigen Php fehlermeldungen - (PC, Fehlermeldung, PHP)

1 Antwort

Versuchs mal anstatt

<?php echo date("d.m.Y", $row->timestamp); ?>

mit folgendem:

<?php echo date("d.m.Y", (preg_replace('/([^0-9]*)/', '', $row->timestamp)+0) ); ?>

Dadurch gehst Du hin, erzwingst nur Zahlen in der Variable und addierst noch eine 0, falls der String sonst leer wäre, damit sollte die Variable nutzbar sein.

Die gleiche Methode musst Du für die Ausgabe der Uhrzeit auch noch anwenden.

Ich kann sonst nur empfehlen, generell bei jeder Daten ein und Ausgabe solche Sicherheitsmassnahmen zu machen. Bedenke auch, die Lösung behebt jetzt keine Schweinereien, die man mit der Dateneingabe anstellen kann, sondern korrigiert in diesem Falle nur blind die Datenausgabe.

Insbesondere solltest Du Dich mit den Themen Code injection und XSS auseinandersetzen. Dieses Problem hat nämlich die Ursache, dass die Zeit nicht korrekt in der Datenbank hinterlegt wurde, dies kann ein Programmierfehler sein, aber auch ein User, der bewusst versucht hat das System zu manipulieren - den entsprechenden Datenbankeintrag solltest Du Dir also auch anschauen.

Antwort bewerten Vielen Dank für Deine Bewertung
Retroszene 19.06.2016, 14:37

Vielen dank! das ist schon der richtige weg.

Nur nun steht da "Geschrieben am 24.01.1970 um 1:00Uhr.

Siehe Bild:

http://www.pic-upload.de/view-30982937/fehlermeldung.png.html



Es muss das aktuelle Datum sein, an dem es geschrieben wurde.


Aber ich danke dir!

0
WebdesignHoehne 19.06.2016, 14:43
@Retroszene

Ja, aber bei diesem Datensatz gibt es offenbar ein Problem mit dem Wert. Timestamps dürfen nur Zahlen sein, keine Buchstaben oder ähnliches. Begonnen wird ab 1.1.1970 0:00, danach zählt es den Zeitstempel jede Sekunde hoch. Demnach kann ich nur empfehlen, den Wert in der Datenbank zu checken und die Funktion, die den Datensatz abspeichert. Einen aktuellen Zeitstempel bekommst Du aus PHP übrigens mit der Funktion time()

0
Retroszene 19.06.2016, 14:52
@WebdesignHoehne

Vielen Dank an alle, ich habe das Problem gelöst!

Danke für eure Hilfe und Ratschläge!

Die Zeile funktioniert nun und sieht so aus:

<?php echo htmlentities(userName($row->fromid)); ?>Geschrieben am <?php $timestamp = time(); $datum = date("d.m.Y - H:i", $timestamp); ?> um <?php echo $datum; ?> Uhr.
0
WebdesignHoehne 19.06.2016, 16:54
@Retroszene

nicht ganz ;) time() liefert dir die aktuelle Zeit zurück, sprich der Wert muss in die Datenbank geschrieben werden zum Zeitpunkt der Eintagserstellung. 

Weiterhin kannst Du mit $row->timestamp vom jeweiligem Datensatz den Zeitstempel aus der Datenbank holen. Deine neue Anpassung macht also nichts anderes als die aktuelle Zeit anzuzeigen ;)

0

Was möchtest Du wissen?