Moin!
Hallo Sven,
Wenn es eine Funktion gibt, die "isUserLoggedIn($mysqli)" beantwortet, frage ich mich: Welcher User denn? der User, der die session_id hat und diese in der Datenbank hinterlegt ist. Funktioniert bis jetzt wunderbar.
Dann ist die Funktion falsch bezeichnet, und müsste "isCurrentSessionUserLoggedIn()" heißen.
Sorry, wenn ich darauf herumreite - aber Code wird in der Regel einmal geschrieben, und danach hundertmal gelesen - von dir, von Leuten, die dir helfen wollen/sollen. Es ist also wichtig, den Code verständlich zu schreiben.
Hattest du nicht auch den Thread zum Thema "unübersichtlicher Code" eröffnet? Genau solche Details tragen zu unübersichtlichem Code bei.
Meine Erwartung an eine Funktion mit einem bestimmten Namen kommt aus Jahrzehnten professioneller Softwareentwicklung.
Diese Erwartung habe ich hier mal formuliert, und das hat nichts damit zu tun, wie gut oder schlecht das funktioniert. Bislang funktioniert es vermutlich wie gewünscht. Jetzt aber kommst du mit einem neuen Wunsch. In der Zukunft werden weitere Wünsche entstehen, die auch alle noch integriert werden sollen. Das Knäuel wird dabei zunehmend undurchsichtig.
Wenn eine Funktion anbietet, den Loginzustand für einen User abzufragen, dies aber tun kann, ohne nach dem User zu fragen, für den das getan werden soll, dann geht das nur mit globalen Variablen, also einem unsichtbaren Seitenkanal dieser Information in die Funktion hinein. Und da wundere ich mich: Das Datenbankobjekt übergibst du der Funktion explizit. Auch das könnte man ja als globale Variable ablegen und die Funktion einfach parameterlos aufrufen: "isUserLoggedIn()" - fertig. Aber auf längere Sicht grausam zu warten.
Grüße Sven