[Erledigt] Probleme im ACP -> Userdaten ändern

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

[Erledigt] Probleme im ACP -> Userdaten ändern

Beitrag von killerbees19 »

Hallo an alle.

Ich habe ein Problem im ACP. Wenn ich einen Benutzer über das ACP ändere, wird die Signatur irgendwie falsch angezeigt:

Code: Alles auswählen

[list][*]Entweder, sie Können binär zählen
[*]Oder nicht[/list:u]
In der Datenbank steht das ganze so:

Code: Alles auswählen

[list:84db1333df][*:84db1333df]Entweder, sie Können binär zählen
[*:84db1333df]Oder nicht[/list:u:84db1333df]
Wo bitte kommt das :u: her?

EDIT:
Ich habe gerade ein altes Thema gefunden, wo ich schon ein ähnliches Problem hatte.
Leider konnte mir damals niemand helfen: http://www.phpbb.de/viewtopic.php?t=134658&highlight=

Vielen Dank schon im Voraus :)


MfG Christian
Zuletzt geändert von killerbees19 am 23.01.2007 12:01, insgesamt 2-mal geändert.
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Kann mir niemand helfen :(

Ich habe nun schon einen Großteil der Datei(en) durchgesehen, aber ich finde keinen Fehler. Ich kenne mich mit dem BB-Code-System halt nicht aus.....


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag von cYbercOsmOnauT »

Die einzige Stelle, die das "hinzufügen" kann wäre die Funktion prepare_message, denn da wird die Signatur (genau wie alle Postings) geparst und die BBCodes mit der BBCode UID versehen (unter anderem).

Da diese Funktion auch für Postings verwendet wird, sollte Dein Fehler, wenn er denn existiert, auch in Postings erscheinen. Ist der Fehler denn reproduzierbar? Sprich: Immer wenn Du eine Liste in die Sig packst, passiert das? Oder war das eine einmalige Sache?

Gruß,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Der Fehler ist immer, also ich kann ihn reproduzieren ;-)
Das einzige was bei den Postings das Problem ist: Der PHP-BB-Code funktioniert nicht korrekt, siehe: http://www.redio.de/postings/12004.html#12004


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Steht das U auch schon beim Editieren da oder wird es erst nach dem Absenden hinzugeschrieben?
Wird bei erneutem Editieren dann noch ein U dazugeschrieben?
Was passiert, wenn Der User sein Profil editiert?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Ich habe das ganze jetzt einmal mit meinem Testaccount getestet.
Ich gebe im Profil ganz normal folgendes ein:

Code: Alles auswählen

[b]Und noch etwas:[/b]
[list][*]Zeile 1
[*]Zeile 2[/list:u]

Jajajaja......
Im Profil oder in den Beiträgen wird die Signatur korrekt geparsed ausgegeben.
In der Datenbank wird es so gespeichert:

Code: Alles auswählen

[b:d9a0253c18]Und noch etwas:[/b:d9a0253c18]
[list:d9a0253c18][*:d9a0253c18]Zeile 1
[*:d9a0253c18]Zeile 2[/list:u:d9a0253c18]

Jajajaja......
Wenn der Benutzer die Signatur wieder ändern will, gibt es keine Probleme.

Und im Adminbereich, beim Ändern, erscheint es so:

Code: Alles auswählen

[b]Und noch etwas:[/b]
[list][*]Zeile 1
[*]Zeile 2[/list:u]

Jajajaja......
Es scheint immer zu sein, wenn ich eine Liste verwende.
Und dann ist eben noch das Problem, wenn die Profilseite zum Ändern nochmals angezeigt wird, weil man zum Beispiel einen Fehler gemacht hat (wie im älteren Thread), wird der BB-Code gar nicht mehr decodiert....


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Ich verlinke jetzt einmal auf die bbcode.php, vielleicht könnt ihr mir ja dann helfen. Denn gerade bei den preg_*()-Funktionen blicke ich (noch) nicht ganz durch.

bbcode.php


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich würde behaupten du hast einen Bug gefunden.
In der Datei admin_users.php sollte nämlich die Zeile

Code: Alles auswählen

$signature = ($this_userdata['user_sig_bbcode_uid'] != '') ? preg_replace('#:' . $this_userdata['user_sig_bbcode_uid'] . '#si', '', $this_userdata['user_sig']) : $this_userdata['user_sig'];
Dafür sorgen, dass bei der Darstellung der bbcode entfernt wird. (Zeile 798 etwa)
Im usercp wird das mit dieser Zeile geregelt:

Code: Alles auswählen

$signature = ($signature_bbcode_uid != '') ? preg_replace("/:(([a-z0-9]+:)?)$signature_bbcode_uid(=|\])/si", '\\3', $signature) : $signature;
(Zeile 797 etwa)
Wie man hier an dem regulären Ausdruck erkennen kann, werden auch zusätzliche Buchstaben wie z.B. das u, welches mit Doppelpunkt vom eigentlichen BBcode getrennt wurde erkannt und entfernt, im ACP ist dies aber nicht so. Da das aber nur bei sehr wenigen BBCodes passiert, dass ein Buchstabe o.ä. angehängt wird fällt das vermutlich im regulären Betrieb kaum auf. Mit dem Inhalt der bbcode.php hat das an der Stelle nichts zu tun.

EDIT: Jetzt aber nicht auf die Idee kommen das einfach direkt auszutauschen. Ich denke das im ACP müsste so aussehen damit es funktioniert:

Code: Alles auswählen

$signature = ($this_userdata['user_sig_bbcode_uid'] != '') ? preg_replace("/:(([a-z0-9]+:)?)".$this_userdata['user_sig_bbcode_uid']."(=|\])/si", '\\3', $signature) : $this_userdata['user_sig'];
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

gn#36 hat geschrieben:Ich würde behaupten du hast einen Bug gefunden.
Interessante Entdeckung :lol:
Ich habe mir jetzt einmal schnell ein neues phpBB auf localhost installiert:
Der Fehler ist wirklich in jedem phpBB :o

Aber um zu deinem Vorschlag zurückzukommen:
Leider löscht er mir die SIgnatur komplett.

Aber wenn es sich wirklich um einen phpBB-Bug handelt müsste ihn die phpBB-Group eigentlich reparieren :D


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag von cYbercOsmOnauT »

Wenn es wirklich nur ein u: ist, was dazu kommen kann, ist die RegEx simpel umzubauen.

Code: Alles auswählen

$signature = ($this_userdata['user_sig_bbcode_uid'] != '') ? preg_replace('#:(u:)?' . $this_userdata['user_sig_bbcode_uid'] . '#si', '', $this_userdata['user_sig']) : $this_userdata['user_sig'];
That's it.

Warum diese RegEx

Code: Alles auswählen

$signature = ($this_userdata['user_sig_bbcode_uid'] != '') ? preg_replace("/:(([a-z0-9]+:)?)".$this_userdata['user_sig_bbcode_uid']."(=|\])/si", '\\3', $signature) : $this_userdata['user_sig'];
bei Dir nicht klappt, ist mir nicht ganz klar. Die RegEx ist 100% korrekt (hab ich manuell überprüft).

Gruß,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“