Fehlerseite bei nicht vorhandenem Thread

SpahnRanche
Ich bekomme schon Jahre lang eine Fehlermeldung wenn ein Thread nicht mehr vorhanden ist (gelöscht) oder der Thread nicht existiert. Dann erscheint ein:

SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT boardid, title FROM bb1_boards WHERE boardid IN ()
mysql error: 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 ')' at line 1
mysql error number: 1064
mysql version: 5.5.40-nmm1-log
php version: 5.3.28-nmm2
Date: 04.05.2015 @ 13:43
Script: /thread.php?postid=333300000
Referer:

Normalerweise müsste bei korrekt funktioneirendem Board ein

"Sie haben einen ungültigen Verweis angegeben. Wenn Sie einem korrekten Link gefolgt sind, sollten Sie den Administrator benachrichtigen.
Benutzen Sie den Zurück-Button Ihres Browsers oder klicken Sie hier!"

oder

Du hast einen ungültigen Verweis angegeben. Wenn du einem korrekten Link gefolgt bist, solltest du den Administrator benachrichtigen.
Benutze den Zurück-Button deines Browsers oder klicke hier!


erscheinen.

Auch die 404 Weiterleitung reagiert an dieser Stelle nicht, wenn man mal was falsch angibt. Diese funktioneirt bei allen möglichen falschen Eingaben, aber nicht bei einem Thread.
ErrorDocument 404 /404.html

-----------

Das Sprachpacket in der "LANG_GLOBAL_ERROR_FALSELINK" ist vorhanden und sitzt wohl in der misc.tpl / misc.php / Wahrscheinlich durch Codeumbau damals hat es da irgendwas gelöscht oder ist ein Fehler drin.
Revolutionary Act
Ich hab grad leider kein WBB2 zur Hand und ohne den Code zu sehen und rumzuprobieren
fällt es mir leider schwer eine Lösung zu finden, cfix hät ich meine Kristallkugel mal lieber nicht fallen lassen... großes Grinsen

Heute haben wir hier auf your-wbb.de Wartungsarbeiten durchgeführt (größtenteils im Background, waren nur für paar Minuten off)
und morgen/heute wollte ich den Invitesystem Hack nochmal durchchecken und ggf. noch anpassen damit der endlich aus der Beta Phase raus ist.

Wenn ich Heute/Morgen danach noch zeitfinde setz ich mal ein blankes WBB2 auf und
schau ob ich dein Problem beheben kann.
Natürlich nur insofern bis dahin niemand anderes eine Lösung für dich gefunden/postet hat... smile

PS:
Häng doch mal deine thread.php hier an. Könnte helfen... Augenzwinkern

lg
Revolutionary Act
SpahnRanche
Der Fehler ist ja nicht gravierend und es hat Zeit, Google motzt nur rum. Augenzwinkern
Revolutionary Act
Komisch,

Ich hab mal ein frisches Board aufgesetzt und deine thread.php genommen
und halt die Sachen die ich nicht eingebaut habe, ausgeklammert. bei mir funktionierts...

Ich bekomme keine "SQL Error" Meldung sondern "Sie haben einen ungültigen Verweis angegeben bla bla bla..."

Probier mal folgendes (sichere vorher die aktuelle thread.php):

Öffne "thread.php" und suche nach:
code:
1:
2:
3:
4:
5:
6:
if ((!isset($postid) && !isset($threadid)) || $thread['closed'] == 3)
    error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
if (!checkpermissions("can_read_thread"))
    access_error();


=> Lösche es!

Suche weiter nach:
code:
1:
require('./global.php');


Füge darunter ein:
code:
1:
2:
3:
4:
if ((!isset($postid) && !isset($threadid)) || $thread['closed'] == 3)
    error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
if (!checkpermissions("can_read_thread"))
    access_error();


Gehts so? Augenzwinkern
SpahnRanche
Daanke fürs überprüfen, aber das verschieben hat nichts gebracht. Die selbe Fehlermeldung erscheint auch weiterhin.

SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT boardid, title FROM bb1_boards WHERE boardid IN ()
mysql error: 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 ')' at line 1
mysql error number: 1064
mysql version: 5.5.40-nmm1-log
php version: 5.3.28-nmm2
Date: 05.05.2015 @ 21:59
Script: /thread.php?threadid=5516
Referer:

---------

Schick mir mal die Original thread.php dann kann ich ja sehen ob es bei mir daran liegt. Ansonsten liegts irgendwo in der Datenbank. Der Fehler ist leider schon so lange drin und auch lange nicht aufgefallen, dass ich nicht weis an was es lag.
Revolutionary Act
Im Anhang findest du die originale thread.php
Sichere aber deine aktuelle!

Probiers mal aus und gib dann bitte bescheid ob's damit geht, oder nicht...

lg
Revolutionary Act
SpahnRanche
Die ist ja nur halb so groß mie meine. fröhlich Hab sie kannst wieder löschen, die Fehlermeldung ist nach wie vor vorhanden. Kannst mal noch die misc.php rüber werfen? Ansonsten weis ich auch nicht weiter. An den Template kann das doch nicht liegen?
Revolutionary Act
Häng mal deine global.php hier an!
An der misc.php liegt es nicht und ich würd gerne mal einen Blick in die global.php werfen da ich den Fehler dort vermute... Augenzwinkern
SpahnRanche
liegt bei, hab nur gedacht das es an der misc liegen kann, da in der misc.tpl 2x LANG_GLOBAL_ERROR_FALSELINK und in der misc.php 4x drin ist und in keiner anderen Tpl das Sprachpacket drin ist Augenzwinkern
Revolutionary Act
Also es liegt aufjedenfall an der global.php, weil wenn ich die originale nehme, funktioniert es
und wenn ich deine nehme dann passiert sowas wie bei dir... ^^

Was genau es ist kann ich dir gerade nicht sagen (vielleicht möchte ja nochmal jemand anderes drüberschauen) aber ich habe eine Lösung gebastelt, die hoffentlich funktioniert.

=> Sichere bitte deine aktuelle global.php <=

Dann öffne "global.php" und suche:
code:
1:
2:
3:
4:
5:
6:
if (isset($threadid) && isset($thread['visible']) && $thread['visible'] == 0 && !checkmodpermissions()) {
	error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
}
if (isset($postid) && isset($post['visible']) && $post['visible'] == 0 && !checkmodpermissions()) {
	error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
}


Füge darunter ein:
code:
1:
2:
if ($thread['visible'] == 0)
    error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));


Sollte (zumindest hat's in meinem Testboard) so funktionieren.
Falls es nicht funzt oder andere Fehler hervorruft, bitte melden...

Ansonsten bitte auch bescheidgeben wenn es funktioniert.
Vielen Dank! smile
Revolutionary Act
Ignoriere den letzten Post!

Wenn du den Code in die global.php einbaust kannst du nur noch
threads aufrufen die existieren und sonst keine Seite mehr im Board...

Mach anstelle dessen folgendes...

Öffne die "thread.php" und suche nach:
code:
1:
require('./global.php');
Füge darunter ein:
code:
1:
2:
3:
if ($thread['visible'] == 0) {
	error($lang->get("LANG_GLOBAL_ERROR_FALSELINK", array('$adminmail' => $adminmail)));
}

Nun müsste es funktionieren.
Gib bitte bescheid, ob es so klappt... Augenzwinkern
SpahnRanche
Du bist der Beste! Funktioniert. Freude
Revolutionary Act
Wunderbar,
danke für die Rückmeldung smile