Thread Verfasser: DeeoNe
Thread ID: 1925
Thread Info
Es gibt 6 Beiträge zu diesem Thema, und es wurde 151 Mal angesehen.
 Thema drucken
Forum - Neue Beiträge BUG - IUP 1.9
DeeoNe
Hallo Fusion Welt,
ich habe meine Seite von PHP 5.5 auf PHP 8.4 geupdatet mit dem "v7.02.07 - IUP (Update: v1.9)".
Jetzt hänge ich an einem "BUG" oder Fehler, das zum Beispiel das ICON für Neue Beiträge in der Forum Übersicht oder Panel, falsch funktioniert.
Seit dem Update, werden alle Beiträge als NEU angezeigt, sei denn ich habe es erstellt oder drauf geantwortet als letzter, dann ist es als gesehen Angezeigt.
Das ICON reagiert auf mich als letzer User und nicht als Neue Beiträge seit dem letzten Besuch.

Ich habe die Dateien mal verglichen vom Forum Ordner und vom Panel, da deutet keine Änderung darauf hin.
Es muss tiefer sein und ich weiß nicht wo ich suchen soll.
Vielleicht ist was bekannt oder habe was übersehen.

Gruß DeeoNe
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP8
 
Layzee
Moin,
ich bin gerade ehrlich gesagt zu faul, mir jetzt ne Testumgebung unter der V7 zusammen zu basteln.
Wird das ICON in deiner Version als ICON (< i class=".....">) oder als GIF geladen?
Das Ganze klingt nämlich eigentlich eher danach, dass das ICON oder das GIF noch im Browsercache "hängt".
Ändert sich die Anzeige wenn du den Browser mal mit STRG+R und STRG+F5 refeshst?

Ansonsten kopiere mal den entsprechenden Codeteil aus der viewforum.php hier rein.
Ich bin grad auch nicht sicher, ob die IUP V7 auf PHP 8.4 sauber läuft. Wenn möglich, den Webspace mal testweise auf PHP 8.0 oder 8.2 umstellen.
Bearbeitet von Layzee am 21. April 2026 13:12:57
Information:
PHP Version: 8.2.x •  MySQL Version: 8.0 •  PHP-Fusion: v9 Stable
 
Krelli
Keine Garantie, aber versuche das mal:
Editiere die Datei includes/classes/Authenticate.class.php. Finde den Block (ca. Zeile 266)

if(!empty($userdata['user_lastvisit'])) {
    $userdata['user_lastvisit'] = 0;
}
und ändere ihn zu

if(empty($userdata['user_lastvisit'])) {
    $userdata['user_lastvisit'] = 0;
}

Alternativ: nimm den Block testweise ganz raus bzw. kommentiere ihn aus.

Dieser Code sorgt nämlich dafür, dass der letzte Besuch fälschlicherweise IMMER auf 0 (Null, also demnach 01.01.1970) gesetzt wird, was eigentlich ziemlicher Unsinn ist.
Wahrscheinlich ist das die Ursache dafür, dass alle nach diesem Datum verfassten Forenbeiträge als neue Beiträge gezeigt werden (außer man hat den jeweiligen Beitrag selbst verfasst).

EDIT:
Habe das gerade bei einem Kunden so geändert und es scheint tatsächlich die Lösung zu sein.
Bearbeitet von Krelli am 22. April 2026 02:48:21
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
DeeoNe
Danke Krelli, genau das war die Lösung für das Hauptproblem mit dem Forum und den neuen Beiträgen
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP8
 
Krelli
Ich habe das Ganze heute nochmal gründlicher analysiert. Das Entfernen des ! vor der empty-Anweisung löst das Problem mit neuen Beiträgen zu 100%.
Ich gebe dir aber noch folgende Hinweise:

Der alternative Code, den ein User in deinem Forum für /forum/viewthread.php vorgeschlagen hat, behebt das Problem nicht, sondern versucht lediglich Symptome zu kaschieren.
Der zusätzlich gezeigte Eingriff in die Authenticate.class.php macht die Mechanik sogar kaputt:
//         if ($update_threads && IsSet($userdata['user_id'])) { dbquery("UPDATE ".DB_USERS." SET user_threads='' WHERE user_id='".$userdata['user_id']."'"); }
Wenn du diesen Bereich wirklich so auskommentierst, wird das DB-Feld user_threads nie mehr bereinigt.

Der an gleicher Stelle gezeigte „Fix“ für die viewthread.php unterdrückt außerdem das Speichern gelesener Threads während der Session und ist deshalb keine Alternativlösung.
Das führt nämlich zu folgendem Problem:
  • Ein Beitrag wird gelesen
  • Er wird aber nicht zuverlässig in user_threads eingetragen
  • Da sein Beitragsdatum nach user_lastvisit liegt, gilt er weiterhin als „neu“
  • Die Unread-Logik kann nicht mehr korrekt arbeiten
user_threads speichert ausschließlich die Threads, die der Benutzer seit seinem letzten Besuch gelesen hat.
Darum:
  • Neuer Login - Liste leer
  • Während der Session - Liste wächst
  • Nächster Login - Liste wieder leer
Das ist exakt die Original-Mechanik von PHP-Fusion v7.

Da das DB-Feld vom Typ MEDIUMTEXT ist, stehen bis zu 16 MB zur Verfügung. Das reicht für weit über 200.000 gelesene Threads innerhalb einer Session. So viele Beiträge wird realistisch niemand in einer einzigen Session lesen. Eine Überwachung oder Begrenzung ist daher nicht notwendig.
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IPv9-DE-MOD
 
DeeoNe
Danke für die Umfangreiche Erklärung.
Dann mache ich mit deiner Anpassung alles richtig.
Information:
PHP Version: 8.2.x •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: IUP-FIX-PHP8
 
Springe ins Forum: