Seite 2 von 2

Verfasst: 05.01.2008 23:36
von CaLLiBRi
SteveHH hat geschrieben:
CaLLiBRi hat geschrieben: Ansonsten lösch ich es wieder, wenn das so anfällig ist und packe Wbblite drauf oder so...
Viel Spass :)
Jetzt weiss ich auch, wie du so viele Postings sammeln konntest. Wenn du nichts zu sagen hast, dann lass es doch auch bitte.

Das ist nunmal eine Überlegung, da PHPBB doch anscheinend sehr anfällig ist. Und ich habe keine Lust in kürze wieder von vorne anzufangen. Ich suche ja grade aus dem Grund ein neues Forum, da das PHPKIT interne einfach keine Funktionen hat und auch Fehlermeldungen gibt. Nur liegt es da an den Signturen, die bereiten irgendwie Probleme.

@ bantu: Ich teste nochmal etwas, aber ich komme evtl gerne darauf zurück, danke für die schnelle Hilfe bis hier hin.

Verfasst: 21.02.2008 10:29
von Despair
hi Leute,

die User unseres Forums erhalten sporadisch nach dem Absenden eines Beitrages eine ähnlich lautende Fehlermeldung

genauer gesagt gehts um diese hier (soeben tauchte sie auch das erste mal seit der Installation bei mir auf):

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysql4 ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [1064]

SQL

SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber FROM phpbb3_forums_watch fw, phpbb3_users u WHERE fw.forum_id = 6 AND fw.user_id NOT IN (1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) AND fw.notify_status = 0 AND u.user_type IN (0, 3) AND u.user_id = fw.user_id

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal_mysql->sql_error()

FILE: includes/functions_posting.php
LINE: 1174
CALL: dbal_mysql->sql_query()

FILE: includes/functions_posting.php
LINE: 2407
CALL: user_notification()

FILE: posting.php
LINE: 1002
CALL: submit_post()
// Ein paar Nullen entfernt - bantu


das komische ist, dass der Beitrag trotz dieser Fehlermeldung im Forum gepostet wird.

Wißt ihr Rat?

Verfasst: 21.02.2008 10:35
von Dr.Death
Da scheint irgendetwas im SQL Statement falsch zu sein.

Normalerweise sollte der Aufruf so erfolgen:

Code: Alles auswählen

SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber FROM phpbb3_forums_watch fw, phpbb3_users u WHERE fw.forum_id = 6 AND fw.user_id NOT IN (1, 2) AND fw.notify_status = 0 AND u.user_type IN (0, 3) AND u.user_id = fw.user_id 
Die ganzen " 0 " angeben sollten dort nicht erscheinen.

Evtl. wurde etwas an der includes/functions_posting.php verändert ?

Der entsprechende Code Block sollte dort so verankert sein:
( Zeile 1167 bis 1174 )

Code: Alles auswählen

		$sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber
			FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u
			WHERE fw.forum_id = $forum_id
				AND fw.user_id NOT IN ($sql_ignore_users)
				AND fw.notify_status = 0
				AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
				AND u.user_id = fw.user_id';
		$result = $db->sql_query($sql);

Verfasst: 21.02.2008 10:41
von Despair
danke für deine Zeit

hm, soweit ich das sehe stimmen die Einträge bei mir

Code: Alles auswählen

$sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber
			FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u
			WHERE fw.forum_id = $forum_id
				AND fw.user_id NOT IN ($sql_ignore_users)
				AND fw.notify_status = 0
				AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
				AND u.user_id = fw.user_id';
		$result = $db->sql_query($sql);

was meinst du mit "da scheint irgendetwas im SQL Statement falsch zu sein"? Kann ich da irgendwas machen?

was mich außerdem wundert ist, dass mein Provider erst kürzlich eine Mail in Umlauf gebracht hat, dass mySQL 5 auf allen Servern installiert worden sein, was mich dann dazu veranlaßte phpBB3 zu installieren, weil das alte Forum damit leider bei mir nicht mehr lief.

Die Fehlermeldung deutet doch aber eher darauf hin, dass das nicht so ist, oder?

Verfasst: 21.02.2008 10:59
von Dr.Death
OK,

ich hatte mich in einem SQL Statement verlesen.

Der Problemfall ist die Variable: $sql_ignore_users

Prüfe mal Deine BAN Liste im phpMyAdmin und schaue nach ob sie viele gebannte Email Adressen beinhaltet.

Wenn ja, haben die Ban Einträge eine ban_userid vom Wert 0.

Das macht aber in diesem Check aber keinen Sinn. ( Eine user_id mit dem Wert 0 gibt es nicht )

Diese Variable wird etwas weiter oben in der functions_post.php generiert:

Code: Alles auswählen

	// Get banned User ID's
	$sql = 'SELECT ban_userid
		FROM ' . BANLIST_TABLE;
	$result = $db->sql_query($sql);


Versuche mal den Code hiermit zu ersetzen:

Code: Alles auswählen

	// Get banned User ID's
	$sql = 'SELECT ban_userid
		FROM ' . BANLIST_TABLE . '
		WHERE ban_userid <> 0';
	$result = $db->sql_query($sql);

Verfasst: 21.02.2008 11:10
von Despair
Dr.Death hat geschrieben:Prüfe mal Deine BAN Liste im phpMyAdmin und schaue nach ob sie viele gebannte Email Adressen beinhaltet.
die Foren-Bannliste ist noch aus phpBB 2 Zeiten recht groß und wurde beim konvertieren natürlich auch übernommen. Damals gabs (und gibt es wohl auch noch) bei euch im entsprechenden Bereich eine Liste mit email-Adressen die gebannt werden sollen bei der Foren-Anmeldung (wir hatten in der Woche circA 20 Spambot-Einträge)

Wenn ich diese Liste lösche, anstelle der von dir geposteten Änderungen vorzunehmen, bringt das dann den gleichen Effekt, oder nicht? Der Hintergrund ist der, dass die URL des Forums sich ohnehin geändert hat und durch die capture-Sicherheitsabfrage im neuen phpBB diese Spam-Anmeldungen ohnehin nicht mehr auftreten

Wenn es trotzdem nötig ist die Datei zu ändern werde ich es aber selbstredend tun

Verfasst: 21.02.2008 11:11
von Dr.Death
Ändere bitte mal die Datei.

Das bringt bei späteren BANs wahrscheinlich eine Entlastung der MySQL Abfrage.

Verfasst: 21.02.2008 11:37
von Despair
alles klar. Ich habs mal geändert und werde beobachten ob der Fehler weiterhin auftritt. Danke bis hierher aber mal für deine Mühe

Verfasst: 21.02.2008 11:43
von Dr.Death
Hm.... noch eine kleine "Verbesserung".

Es fiel mir selbst gerade auf, da ich 2 User bei mir vor einem versehentlichen BAN geschützt habe.

Diese User würden nun keine Benachrichtigungen mehr enthalten....

Daher währe der neue Code nun:

Code: Alles auswählen

	// Get banned User ID's
	$sql = 'SELECT ban_userid
		FROM ' . BANLIST_TABLE . '
		WHERE ban_userid <> 0
		AND ban_exclude <> 1';
	$result = $db->sql_query($sql);
BTW: Ich habe das ganze mal in den Bugtracker eingestellt: http://www.phpbb.com/bugs/phpbb3/ticket ... t_id=21795