Seite 1 von 1

Avatare verschwinden, aber nur der Eintrag in der Datenbank

Verfasst: 16.12.2007 23:34
von gsxfan
n'abend zusammen.

Das Problem der verschwundenden Avatare ist ja nix Neues, wie ich bei etlichen Suchen hier im Forum festgestellt habe. Aber so wie es ausschaut, hab ich da eine neue Variante.

Hin und wieder hat ein User einfach kein Avatar mehr, das ist bislang bei mehreren Usern aufgetaucht und kommt immer mal wieder. Der Witz an der Geschichte ist, dass das Avatar selbst als Datei noch im Avatar-Verzeichnis liegt, aber der Eintrag des Avatars zum jeweiligen User in der phpbb_user Tabelle ist einfach leer. Sprich der Feldwert von user_avatar. Dazu kommt, dass der Feldwert von user_avatar_type auf Null ( 0 )steht. Normalerweise steht da ja eine 1 für Upload-Avatar, 2 für Remote und 3 für Galerie.
Es passiert auch immer mal wieder bei Usern, denen ich entweder ein Avatar erneut hochgeladen oder eines aus der Galerie verlinkt habe. Es tritt bei ganz neuen Usern und auch bei schon länger Anwesenden auf.

Meine Theorie ist nun, dass irgendein Script hohldreht und diese Einträge zurücksetzt. In der Annahme, dass es eigentlich nur ein administratives oder ein Userbezogenes Script sein kann, habe ich nun schon die admin_user.php und die usercp.php mit originalen Versionen gecheckt und neu aufgebaut (Also erneut die bereits vorhandenen Mods nach deren Anleitungen eingetragen) und hochgeladen.

Mods im Board:

Album Mod (Smartor)
Activity Mod (Spiele)
Birthday Mod
Meeting Mod
Smiley Categories MOD
Search latest Mod (2,6,12,24h)
Forumspy
Junior Admin Mod

Diese hier habe ich seit dem 28.11. installiert, das Problem bestand aber schon vorher:

Attachment Mod
PM Blink Mod
Merge Mod
Simple Admin Userlist Mod

Wir hatten Prillian auf dem Board, aber nach etlichen Problemen wieder entfernt. Also die gesamten Änderungen in den Dateien entfernt, die dadurch hinzugekommenen Dateien gelöscht und die hinzugekommenen Tabellen in der Datenbank wieder entfernt.

Ich hab nun beim Hoster angefragt, ob ein Logging auf die Datenbank möglich ist. Mal schauen, was die meinen.
Aber vielleicht hat hier ja noch jemand eine Idee, wo ich ansetzen könnte.

Uwe

Verfasst: 17.12.2007 18:35
von gsxfan
Hallo.

Tjaa....Logging beim Hoster ist nicht. Auf der Paketart, wie ich es gebucht habe, gibts kein Logging auf die Datenbank. Grummel.

Dann hab ich das hier gefunden, aber das funktioniert bei mir nicht. Kommt kein Logfile raus und bei Aktivierung der IP-Abfrage gibts einen Fehler.

Gibts sonst noch eine Möglichkeit, SQL-Abfragen vom Board zu loggen?

Uwe

Verfasst: 06.01.2008 00:41
von gsxfan
Wär schön, wenn jemand eine Möglichkeit kennt, wie man Zugriffe auf die Datenbank irgendwie protokolliert und das nicht auf SQL-Serverebene arbeitet.
Ich hab immer wieder herrenlose Avatare, deren Zuordnung zum User durch Löschen des entsprechenden Eintrags in der phpbb_users verlorengeht.

Verfasst: 07.01.2008 02:01
von cYbercOsmOnauT
Da Du kein Anfänger bist, kürz ich meine Idee mal ab.

Ich würde direkt in die /db/mysql4.php gehen. Dort in der Funktion sql_query die SQL checken, und bei bestimmten Schlagwörtern (INSERT, UPDATE, DELETE) diese in eine simple Textdatei loggen. Am Besten mit $userdata['user_id'], Uhrzeit und vielleicht $_SERVER['REQUEST_URI'] (wobei das die Logdatei dann wirklich dick macht), damit die Suche wenn es wieder passiert einfacher wird. Die Dateien dann pro Stunde oder pro Tag (je nach Datenmenge) automatisch mit einem neuen Namen belegen und erstellen.

Wenn es dann wieder passiert hast Du "Spaß". -g-

Grüße,
Tekin

Verfasst: 07.01.2008 15:15
von gsxfan
Danke, Tekin.
Wenn ich in VB oder Lotus Script programmiere, dann wär ich wahrscheinlich schon längst auf die Idee gekommen, mir beim Debuggen Fehler am Bildschirm oder in eine Textdatei ausgeben zu lassen. Aber hier hat mir einfach der Ansatz gefehlt und den hab ich nun.
Hab mir nun eine simple Variablenübergabe von $query an eine eigene erstellt und darunter einen Funktionsaufruf, die ich in einer separaten php-Datei definiert habe.
Darin verwerfe ich erst einmal alle SELECT-Aufrufe und durchsuche den String dann noch nach Vorhandensein von user_avatar. Kommt der vor, dann wird ein Logfileeintrag geschrieben.

Der sieht dann so aus:

Code: Alles auswählen

7.1.-13:49-/forumorg/profile.php-UPDATE phpbb_users
				SET user_email = 'admin@local.net', user_icq = '', user_website = '', user_occ = '', user_from = '', user_interests = '', user_sig = '', user_sig_bbcode_uid = '', user_viewemail = 1, user_aim = '', user_yim = '', user_msnm = '', user_attachsig = 0, user_allowsmile = 1, user_allowhtml = 0, user_allowbbcode = 1, user_allow_viewonline = 1, user_notify = 0, user_notify_pm = 1, user_popup_pm = 1, user_timezone = 1, user_dateformat = 'd.m.Y, H:i', user_lang = 'german', user_style = 1, user_active = 1, user_actkey = '', user_avatar = '3006647821feacaedc.jpg', user_avatar_type = 1
				WHERE user_id = 2
Da nun vermutlich nicht mehr viele Einträge übrigbleiben, hab ich auf eine Logrotation verzichtet.
Habs eben auf dem Live-System eingespielt, funktioniert. Nun werd ich das noch in mein Joomla einbauen, denn die Avatar-Geschichte kann auch von dort über die phpBB-Bridge kommen.

Gruß, Uwe