Frage von Retroszene, 101

PHP Probleme bitte um Hilfe?

Hallo! Ich habe mal wieder ein .PHP Problem Schaut es euch mal an (Es geht um eine minimail) Womit man auf der Website an andere User eine kleine Email senden kann. Naja schaut es euch einfach mal an.

(Siehe Bild)

Wäre Nett wenn ihr mir sagen könntet was dort rein gehört.

Achja in der Reihe steht:

<?php echo htmlentities(userName($row->fromid)); ?> Geschrieben am <?php echo date("d.m.Y", $row->timestamp); ?> um <?php echo date("H:i", $row->timestamp); ?> Uhr.

Wäre schön wenn ihr das bearbeitet das es dann Funktioniert.

Danke im vorraus!

Antwort
von WebdesignHoehne, 27

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.

Kommentar von Retroszene ,

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!

Kommentar von WebdesignHoehne ,

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()

Kommentar von Retroszene ,

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.
Kommentar von WebdesignHoehne ,

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 ;)

Antwort
von happyfish2, 75

Dein $row->timestamp ist fehlerhaft.

Kommentar von Retroszene ,

Und was kommt dorthin, wenn du es wüßtest?

Kommentar von happyfish2 ,

Der richtige Zeitstempel. Was steht denn in der Variable jetzt drin?

Kommentar von Retroszene ,

Welche Variable meinst du, ich habe doch die Zeile geschickt.

dort müsste sie stehen


Kommentar von Retroszene ,
<?php echo htmlentities(userName($row->fromid)); ?>Geschrieben am <?php echo date("d.m.Y", $row->timestamp); ?> um <?php echo date("H:i", $row->timestamp); ?> Uhr.

Die ist Fehlerhaft diese Zeile

Kommentar von happyfish2 ,

Das sagtest du ja bereits oben. Die Frage war aber, welcher Wert in der Variable zu dem Zeitpunkt steht. Steht da überhaupt irgendwas? Lass dir doch mal $row mit einem var_dump() ausgeben.

Kommentar von Retroszene ,

Ich kenne mich kaum aus mit den Variablen bin eigentlich im gebiet php überhaupt neu.

Ich weiß nicht wo ich das finde..

tut mir leid.

Kommentar von happyfish2 ,

var_dump( $row );

Kommentar von Retroszene ,

Dadurch erhalte ich eine andere Fehlermeldung.

Kommentar von happyfish2 ,

Und ich soll bestimmt raten, welche das sein könnte?

Kommentar von Retroszene ,

Parse error: Syntax error, unexpected

Kommentar von happyfish2 ,

Dann hast du es falsch gemacht.

Kommentar von Retroszene ,

Könntest du zeigen, wohin ich es setzen muss.

<?php echo htmlentities(userName($row->fromid)); ?>Geschrieben am <?php echo date("d.m.Y", $row->timestamp); ?> um <?php echo date("H:i", $row->timestamp); ?> Uhr.
Kommentar von happyfish2 ,
<?php var_dump($row); ?>

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten