Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 
vlahnstein
Benutzer
Avatar
Geschlecht:
Alter: 48
Beiträge: 164
Dabei seit: 01 / 2012
Betreff:

Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 11:45 Uhr  ·  #1
Hallo,

wir haben in unserem Forum folgende Beobachtung gemacht, welche wir auch nachstellen können:

Nutzt ein User die Funktion "Bei jedem Besuch automatisch einloggen." und geht dann nach aufruf des Forums direkt auf die Liste der ungelesenen Beiträge, kann er nicht per "Symbol vor dem jeweiligen Beitrag" diesen Beitrag als gelesen markieren. Erst, wenn er einen Beitrag aus der Liste aufruft und dann wieder auf die Liste der ungelesenen Beiträge geht, funktioniert wieder die Funktion, dass man per Symbol schnell und einfach die Beiträge als gelesen markieren kann.

Wenn ein User sich manuell ins Forum einloggt und nicht die Funktion "Bei jedem Besuch automatisch einloggen." nutzt, tritt diese Systematik nicht auf. Hier kann der User direkt nach der Anmeldung in die Liste der ungelesenen Beiträge gehen und sofort die gewünschten Beiträge per Symbol als gelesen markieren.

@Chris: Es kann sein, dass die Systematik schon immer so war und wir erst jetzt darauf aufmerksam geworden sind. Der User sagt allerdings, dass er diese Systematik erst nach Aktivierung des Drucker-Symbol-PlugIn bemerkt hat. Gleichzeitig mit dem Drucker-Plug-In haben wir auch die ssl-Verschlüsselung aktiviert. Evtl. hängt es auch damit zusammen? Mag Zufall sein, aber evtl. hilft das weiter.

Viele Grüße

Ansgar
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17613
Dabei seit: 12 / 2003
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 12:39 Uhr  ·  #2
Hi Ansgar,

also das Drucken-Plugin greift in diesen Stellen nicht ein und bringt auch keine neuen Scripte in Dein Forum ein, es fügt nur ein Icon hinzu und das leitet sozusagen auf eine eigene Seite weiter in der das Plugin dann erst aktiv wird. Aber das hast Du bei den ungelesenen Beiträgen auch nicht.

Auch kann ich egal wie ich mich einlogge in den CF4 Testforen das Problem nicht nachstellen, die Beiträge lassen sich immer als gelesen markieren.


Das einzige was das Problem verursachen kann ist eigentlich sowas wie ein Scriptblocker, JS Blocker, Werbeblocker oder Browser: Das gelesen Markieren findet über einen AJAX Request statt, ich vermute mal da wird bei Euch irgendwas geblockt. Vielleicht stimmt auch ein Pfad nicht oder es wird spezifisch bei den betroffenen Usern ein Script oder eine Anfrage über ein Sicherheitstool o.ä. geblockt.

Forenseitig sehe ich da aber kein Problem, ich habs gerade mal hier, in einem online Testforum und einem lokalen Testforum ausprobiert, da geht der Ajax Request (über jQuery) immer durch und der Post wird auch direkt als gelesen markiert.

Vielleicht auch mal Cache & Cookies löschen, vielleicht steckt durch die https Umstellung noch ein altes Javascript im Cache und versucht noch eine falsche Adresse zu kontaktieren für die die Session dann nicht gilt. Ggf. auch mal "Sicheres Cookie" abschalten, sofern ihr veraltete Internet Explorer Versionen verwendet (lieber dann auf Edge updaten). Die kriegen https über AJAX manchmal nicht ganz richtig hin, was allerdings dann am Browser liegt.

LG,
Chris
vlahnstein
Benutzer
Avatar
Geschlecht:
Alter: 48
Beiträge: 164
Dabei seit: 01 / 2012
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 13:16 Uhr  ·  #3
Hallo Chris,

danke für die Infos....

Wir konnten das Problem bereits an 5 verschiedenen PCs (alle mit normalen Stand-Alone-Internetanschluss über Router) nachstellen. Alle PCs haben keine besonderen Sicherheitsbeschränkungen. Windows 10. Als Browser wird Firefox in der aktuellen Version verwendet.

Nochmal zur Beschreibung wann der "Fehler" auftritt......

Der User nutzt die Funktion "Bei jedem Besuch automatisch einloggen.". Die ungelesenen Beiträge werden per Datenbank verwaltet.

Vom Ablauf her machen wir hier folgendes um den Fehler zu provozieren.....

- User geht ins Forum und schaut sich dort ein wenig um.
- User schließt den Firefox OHNE sich im Forum abzumelden.
- In der Zwischenzeit wurden neue Beiträge geschrieben.
- User öffnet den Browser und ruft das Forum auf. Er gelangt direkt auf die Startseite des Forums.
- User klickt auf das "*"-Symbol für die Liste der ungelesenen Beiträge.
- User klickt auf das Symbol mit der Sprechblase vor dem gewünschten Beitrag.
- Es kommt kurz der "Warte-Kreis" aber der gewünschte Beitrag verschwindet nicht aus der Liste.
- Der User kann x-Mal auf die Sprechblase klicken. Es verschwindet der Beitrag nicht.
- User klickt das Thema direkt an und springt somit auf den zuletzt ungelesenen Beitrag innerhalb des Themas.
- User klickt wieder auf das "*"-Symbol für die Liste der ungelesenen Beiträge.
- User klickt auf das Symbol mit der Sprechblase vor dem gewünschten Beitrag.
- Jetzt wird der Beitrag als gelesen markiert und verschwindet aus der Übersichtsliste.

Nutzt man die Option "Bei jedem Besuch automatisch einloggen." bei der Anmeldung nicht, funktioniert alles ohne Probleme.

Unser Forum ist SSL-verschlüsselt (Die Option "Sicheres Cookie" ist nicht aktiviert). Als PlugIns haben wir:
- CBACK AdManager
- CBACK Force Login
- CBACK Like Posts
- CBACK Thread Printer

Ansonsten haben wir die ganz normale Forensoftware im Einsatz. Wir haben lediglich ein eigenes Style erstellt.

Bin ein wenig ratlos, dass Du es nicht nachstellen kannst.

Viele Grüße

Ansgar
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17613
Dabei seit: 12 / 2003
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 13:31 Uhr  ·  #4
Hi Ansgar,

vielen Dank für die genaue Beschreibung des Phänomens.

Gibt denn die Browser Entwicklerkonsole irgend etwas brauchbares aus? Scriptfehler oder derartiges wenn Du sie aufklappst?

Ich hab hier ja auch SSL aktiv, sicheres Cookie auch deaktiviert, benutze ebenfalls den Firefox und den Autologin und das gelesen markieren funktionierte. Nur habe ich die Cookie Methode gewählt bei den Unreads, aber das wird in der gezündeten Funktion einfach nur umgeschaltet ob er das Delete in der DB ausführt oder eben im Cookie-String. Was mich sogar noch mehr wundert ist, dass es beim zweiten Mal dann plötzlich wieder funktioniert. :-/ Ist ja fast so, als hätte er da doppelte Einträge in der Ungelesen DB drin. :-|


Was mich jetzt wundert ist, dass das Topic auch nicht als gelesen markiert wird (automatisch) wenn er das Topic aufruft. Weil genau das macht im Grunde die AJAX Funktion im Hintergrund, sie zündet die Topicansicht und damit das gelesen markieren durch Aufruf des Topics.

Anders ausgedrückt: Normal müsste das Topic aus den ungelesenen Beiträgen verschwinden, sobald man das Topic aufgerufen hat. Auch die Methode des einloggens ist im Grunde egal weil die UPI Funktion und die eigentliche Sitzung zwei getrennte Dinge sind.


Das Topic ruft die $User->upi_mark_single_read mit der entsprechenden Topic ID auf (das JavaScript beim direkten gelesen markieren auch) und dort ist beim Datenbank System die Vorgehensweise sogar sehr einfach: Es wird einfach ein DELETE an die UPI DB geschickt mit der entsprechenden TopicID. Das ist also sogar einfacher als bei der Cookie Methode, da hier nochmal ein neues UPI Cookie ausgestellt werden müsste, was eher zu Fehlern führt.


Das einzige was die Funktion unterbinden könnte wäre tatsächlich, wenn der User ausgeloggt ist.

Kann es sein, dass Euer Board vielleicht mit und ohne www. abrufbar wäre oder so und da bei der SSL Umstellung was nicht umgestellt wurde?

Habt ihr auch den korrekten SSL Port eingestellt (mit dem https Assistent könnt ihr gucken, ob überall ein grünes Häkchen ist).

Das Javascript bekommt nämlich vom Board die ZielURL aus den Einstellungen generiert, wenn man sich also in einer "anderen" Seite eingeloggt hat könnte es sein, dass die Sitzung da nicht gilt und er das daher ignoriert.

Wobei das wiederum nicht erklärt, warum im Topic auch nicht automatisch als gelesen markiert wird wenn der Nutzer da ja eingeloggt ist.

DAS kann ich jetzt aber auch im DB Basierten System nicht nachstellen, ich denke das wäre auch mittlerweile schon häufiger dann aufgefallen, weil diese UPI Systeme ja auch im CF3 schon so drin waren.

Die Browser Konsole kann vielleicht bei der Eingrenzung helfen was passiert (auch mal die Antwort der AJAX Funktion anzeigen lassen). Weil diese verursacht wohl einen Fehler, ansonsten würde er nämlich die Wegblend-Animation ausführen. Wenn der Beitrag stehen bleibt aber kurz der Kringel kommt versucht er den AJAX Request, aber bekommt von da einen Error gesendet, weshalb er die Ausblend-Animation nicht macht. Ich denke dort liegt also die Antwort begraben.

LG,
Chris
vlahnstein
Benutzer
Avatar
Geschlecht:
Alter: 48
Beiträge: 164
Dabei seit: 01 / 2012
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 13:52 Uhr  ·  #5
Hallo Chris,

Danke nochmals für die vielen Hinweise.
Zur Klarstellung.... Wenn der Fehler auftritt kann der User ja auch innerhalb der Liste auf den ungelesenen Beitrag gehen und sieht dann den Inhalt. Dabei wird auch der Beitrag als gelesen markiert und taucht beim näcshten Aufruf der Liste nicht mehr auf. Dann kann man auch ganz normal in der Liste wieder die Beiträge über das Symbol als ungelesen markieren.
Nur solange man nicht direkt aus der Liste in einen Beitrag springt und die Liste der ungelesenen Beiträge aufruft, funktioniert die direkte Markierung als ungelesen nicht.
Ich habe mal den Firefox-Debugger mitlaufen lassen. Dabei gab es nur einen unterschiedlichen Eintrag, wenn ich die Liste einmal mit Fehler und einmal ohne Fehler aufgerufen habe. Wenn das Markieren nicht funktioniert hat, stand im Debuger noch folgender Fehlerhinweis in roter Schrift (Sicherheit).....

Zitat
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf https://www.mustertestforum.de…real124792. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt).


Hilft Dir der Hinweis weiter? Denke, dass hat damit was zu tun, da dieser Hinweis erst dann kommt, wenn ich auf das Symbol klicke und der Beitrag dadruch NICHT verschwindet. Der Hinweis kommt noch nicht, wenn ich nur die Liste der ungelesenen Beiträge aufrufe.

Viele Grüße

Ansgar
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17613
Dabei seit: 12 / 2003
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 14:10 Uhr  ·  #6
Hi Ansgar,

achso ich verstehe wenn man das Topic aufruft funktioniert das gelesen markieren immer, nur in der Liste direkt erst beim zweiten Mal.

Vielen Dank auch für den Auszug aus dem Firefox Debugger, das hilft vermutlich in der Tat. Es wird hier also ganz klar die AJAX Anfrage auf das Forum schon blockiert bevor sie ausgeführt werden kann (bzw. das Ziel erreicht). Deshalb bekommt das Forum also von dem Versuch etwas als gelesen zu markieren nicht mal etwas mit.

Ich habe mir jetzt auch nochmal intensiv die ganzen UPI Funktionen vom CF4 angesehen und habe bei mir im Testforum jetzt auch über das DB System versucht den Fehler nachzustellen, auch mit den von Dir genannten installierten Plugins die ich in dem Testforum entwickle. Ein Bug vom Forum direkt schließe ich eigentlich nach wie vor aus, ich denke das ist zunächst ein Problem vom Server den Request per AJAX zu handeln. Zugegeben: Im Testforum hab ich natürlich keine wirklichen Produktiv-Bedingungen was das angeht. Ich kann nur im einen Browser mit Testaccount A einen Beitrag schreiben und dann mit Testaccount B den ungelesenen Beitrag antesten. In einem laufenden Forum ist da die Datenmenge natürlich eine andere, aber zumindest der Ablauf der Funktion ist damit verifizierbar und das scheint alles zu klappen.


Ich musste jetzt auch selbst mal ein bisschen recherchieren, was der Debugger Fehler genau meint bzw. wo er die Ursache haben könnte. Ich finde hier mehrere Einträge, dass eventuelle Server Einstellungen solche Anfragen mitunter blockieren könnten. Unter anderem hier:

https://www.df.eu/forum/thread…iert-nicht

(hier müsstest Du "js" und "php" auch noch aufnehmen, in dem Beispiel haben sie sich primär um WebFonts gekümmert die beim import per CSS das gleiche Problem verursachen).

Hier wird das Phänomen auf ein Firefox AddOn "NoScript" zurückgeführt:

https://www.computerbase.de/forum/showthread.php?t=1394681


Da Du ja schon Plugins im Browser ausschließt tippe ich eher darauf, dass doch noch irgendwas mit der SSL Umstellung klemmt. Entweder eine alte URL nur mit http:// die hier noch in einem Script zwischengespeichert ist (vom Browser) oder eine Regel in der .htaccess auf dem Server, die versucht die Resource umzuleiten.

Mit meiner eigenen AJAX Funktion müsste ich den CrossOrigin normal nicht beachten, da die JS Funktion und das Forum ja eigentlich auf der selben Domain und der selben Adresse agieren.


Und das es nach dem hin- und herspringen dann wieder funktioniert da tippe ich mal darauf, dass dem Browser dann bekannt wird, dass beide Varianten autorisiert wären. Ich wüsste jetzt aber Forenseitig wenn die Domainkonfiguration stimmt nichts, was ich da tun könnte, ich vermute da eher ein Problem im Bereich Serversettings oder .htaccess Regeln.

Das ist jetzt remote ein bisschen schwierig.

Die von Dir zensierte Adresse ist ja vermutlich die korrekte Domain Eures Forums so wie auch der User sie in der Liste hat (also sowohl mit https:// als auch mit www. korrekt? Oder ruft der User die Seite ohne www. auf? Oder leitet die .htaccess gar Anfragen irgendwie um?).

Eventuell hilft tatsächlich, wenn Du in der .htaccess vielleicht mal das hier hinzufügst ähnlich wie auf dem DF Artikel beschrieben:
Code
<IfModule mod_headers.c>
    <FilesMatch "\.(eot|otf|ttc|ttf|woff|js|php|css|htm|html)$">
        Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>


WICHTIG Sofern Ihr das Forum in einem Subfolder habt und auf der Hauptdomain darauf umleitet muss diese Regel ggf. zusätzlich auch in eine .htaccess Datei im Foren-Root weil dieser vermutlich vor dem Subfolder des Forums mit seinen Regeln schon etwas ungünstig umbiegt. Auch dann gleich prüfen, ob eventuell ein paar Resourcen per 301 weitergeleitet werden die das Forum eventuell zugreifen muss.


Auf jeden Fall kann ich aber sagen: Wenn der direktaufruf des Topics korrekt als gelesen markiert ist ein Fehlverhalten der Foren-UPI auszuschließen. Der Fehler entsteht beim Versuch per AJAX das Forum zu erreichen und ich denke da grätscht irgendwo was am Server rein weil die Funktion macht auch nichts anderes als im Background das topic aufzurufen, es nur nicht anzuzeigen.


LG,
Chris
vlahnstein
Benutzer
Avatar
Geschlecht:
Alter: 48
Beiträge: 164
Dabei seit: 01 / 2012
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 17.10.2017 - 14:40 Uhr  ·  #7
Hallo Chris,

vielen Dank für die ausführlichen Infos.

Ich werde die Sache mal am Wochenende prüfen.

Viele Grüße

Ansgar
cback
Admin
Avatar
Geschlecht:
Herkunft: Saarland
Alter: 38
Homepage: cback.net
Beiträge: 17613
Dabei seit: 12 / 2003
Betreff:

Re: Beiträge innerhalb der Liste "ungelesene Beiträge" lassen sich nicht per Symbol als gelesen markieren

 · 
Gepostet: 18.10.2017 - 12:47 Uhr  ·  #8
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.