Statistik |
Beiträge: 144.534 (Täglich: 19,19 )
Themen: 16.701
Mitglieder: 13.209
Neuestes Mitglied: zitronentee.
Ausl. d. letzten Minute: 125%
Ausl. d. letzten 5 Minuten: 122%
Ausl. d. letzten 15 Minuten: 136%
Aktulle Uhrzeit: 11:18
Freier Webspace: 4.04 TB
PHP-Version: 7.4.33
|
|
|
Leere Posts nach Forenupdate |
|
Leere Posts nach Forenupdate |
|
Servus,
da mich mein Hoster zu einem Update auf PHP5.6 "gezwungen" hat, habe ich mich mal dran gemacht. Fehlermeldungen konnte ich, dank den vielen Beiträge hier, weites gehend beseitigen.
Nun habe ich das Problem mit den Umlauten ! Sobald im Post ein Umlaut vorkommt, wird der Post nicht angezeigt. Das gilt leider auch für Threads und PN's...
Ich denke das es mit mysqli und dem chartset zu tun hat... bion im Netz auf folgendes gestossen...
code: |
1:
|
mysqli_set_charset("ISO-8859-1", $db); |
|
Könnte das mein Problem lösen ?
Wenn ja, wo müsste ich das einbinden ?
Für Eure Hilfe... danke im Voraus
Gruß Rene
|
|
14.12.2016 21:50 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.776.048
Nächster Level: 266.777.854
|
|
|
15.12.2016 19:38 |
|
|
|
RE: Leere Posts nach Forenupdate |
|
Hi,
leider war das nicht der Fehler... ich muss dazu sagen das ich etliche Hacks eingebaut habe. Daher habe ich mal versucht einzelne Hacks zu deinstallieren. Als ich folgenden Abschnitt aus der Thread.php löschte, war der Beitrag wieder sichtbar.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
|
// Guest post kürzung by BlackStone Start
$bls_check = 0;
require("./acp/lib/bs_gk_options.inc.php");
$bls_guestboardid = explode (",", $bls_guestboard);
$bls_threadid_aus = explode (",", $bls_threadid_aus);
global $thread;
if($bls_guestglobal == 1)
{
if((in_array($thread['boardid'], $bls_guestboardid, false)== True) || $bls_guest_globaluse == 1)
{
if (in_array($posts['threadid'], $bls_threadid_aus, false)== false)
{
if ($wbbuserdata['userid'] == 0) {
$posts['message'] = preg_replace ("/\[(.*)]/siU",'',$posts['message']);
$posts['message'] = substr($posts['message'], 0, $gk_length);
$posts['message'] = $posts['message']."....";
$posts['message'] = $posts['message'].makehreftag("register.php", $gk_linktext,'');
$posts['message'] = $this->parse->doparse($posts['message'], $posts['allowsmilies'], 1, 1, $posts['allowimages']);
}else{$bls_check = 1;}
}else{$bls_check = 1;}
}else{$bls_check = 1;}
}else{$bls_check = 1;}
if ($bls_check == 1) {
// use postcache if possible
if ($posts['cache']) $posts['message'] = $this->parse->parseCache($posts['cache']);
else $posts['message'] = $this->parse->doparse($posts['message'], $posts['allowsmilies'], $posts['allowhtml'], $posts['allowbbcode'], $posts['allowimages']);
}
// Guest post kürzung by BlackStone ende
|
|
Der Post wird als Gast korrekt gekürzt und angezeigt. Sobald ich eingeloggt bin, ist der Beitrag verschwunden.
Jetzt sind allerdings noch die Namen der Bords mit Umlauten und die Threads mit Umlauten unsichtbar...
... ich suche weiter
|
|
15.12.2016 20:49 |
|
|
|
RE: Leere Posts nach Forenupdate |
|
|
Zitat: Original von Viktor
Hallo,
du kannst mal folgendes versuchen.
In einem Board was ich letztens auf PHP7 umgestellt habe hat es so geklappt.
Editiere die Datei "acp/lib/functions.php".
Suche:
code: |
1:
2:
3:
|
else return htmlspecialchars($text);
|
|
Ersetze mit:
code: |
1:
2:
3:
|
else return htmlspecialchars($text, ENT_COMPAT,'ISO-8859-1', true);
|
|
Gruß
Viktor
|
|
|
Hallo,
Ich möchte ja nichts sagen, aber auf diese Art sollte man es im "WoltLab Burning Board 2" nicht machen.
Das "WoltLab Burning Board 2" arbeitet mit der "Konstanten" ENCODING.
Diese muss richtig eingestellt werden, dann wird auch die richtige Funktion in der "htmlconverter()"-Funktion aufgerufen.
Im Falle des "WoltLab Burning Board 2", sollte es eigentlich IMMER die "htmlentities()"-Funktion sein.
Nur in sehr seltenen Fällen wird die "htmlspecialchars()"-Funktion mit Ihren Standardwerten aufgerufen.
Darum sollte es eigentlich nicht nötig sein hier nachzubessern.
edit:
@cleetus
Wenn du den Teil löscht, wird dir "$posts['message']" direkt von der Datenbank übernommen.
Ich nehme mal an, dass darin enthaltene "BBCodes" nicht mehr umgewandelt werden?
Dein Problem liegt eigentlich ganz klar bei der "htmlconverter()"-Funktion, wo auch Viktor angesetzt hatte, nur dass er nur eine der Funktionen darin betrachtet hatte...
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Schrimm: 15.12.2016 21:42.
|
|
15.12.2016 21:17 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.776.048
Nächster Level: 266.777.854
|
|
Hallo Schrimm,
ich habe bei einem Board was ich auf PHP7 umgestellt habe das Problem.
Alles was Umlaute hat wird nicht mehr angezeigt.
Nur wenn ich es wie oben mache wird alles richtig angezeigt.
Das ist die Funktion:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
|
/**
* htmlconverter function
*
* @param string text
*
* @return string encoded text
*/
function htmlconverter($text) {
global $phpversion;
$charsets = array('ISO-8859-1', 'ISO-8859-15', 'UTF-8', 'CP1252', 'WINDOWS-1252', 'KOI8-R', 'BIG5', 'GB2312', 'BIG5-HKSCS', 'SHIFT_JIS', 'EUC-JP');
if (version_compare($phpversion, '4.3.0') >= 0 && in_array(wbb_strtoupper(ENCODING), $charsets)) return @htmlentities($text, ENT_COMPAT, ENCODING);
elseif (in_array(wbb_strtoupper(ENCODING), array('ISO-8859-1', 'WINDOWS-1252'))) return htmlentities($text);
else return htmlspecialchars($text);
}
|
|
Wie kann ich es denn besser machen das es klappt.
Gruß
Viktor
__________________
Ein kluger Mann widerspricht keiner Frau. Er wartet, bis sie es selbst tut.
... beim Käfer (WBB2) konnte man noch selber schrauben,
beim neuen Golf (WBB3) muß man fast schon in die Werkstatt wenn man das "Wischwasser" nachfüllen muss!
Da fast keiner mehr hier Postet gibt es ab sofort keinen Support mehr per PN.
|
|
15.12.2016 22:55 |
|
|
|
Hallo,
Die Frage ist:
Warum wird dieser Teil nicht ausgeführt:
php: |
1:
|
if (version_compare($phpversion, '4.3.0') >= 0 && in_array(wbb_strtoupper(ENCODING), $charsets)) return @htmlentities($text, ENT_COMPAT, ENCODING); |
|
Die PHP Version ist >4.3.0, da du ja sagst es ist PHP 7.0.0 in Verwendung.
Er dürfte eigentlich gar nicht in die anderen "if"-Teile hineinspringen.
edit:
Denn in deinem Falle, geht er in den "else"-Teil, was bedeutet, dass irgendetwas mit den Bedingungen nicht stimmt.
__________________
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Schrimm: 15.12.2016 23:06.
|
|
15.12.2016 23:05 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.776.048
Nächster Level: 266.777.854
|
|
|
Zitat: Original von Schrimm
Hallo,
Die Frage ist:
Warum wird dieser Teil nicht ausgeführt:
php: |
1:
|
if (version_compare($phpversion, '4.3.0') >= 0 && in_array(wbb_strtoupper(ENCODING), $charsets)) return @htmlentities($text, ENT_COMPAT, ENCODING); |
|
Die PHP Version ist >4.3.0, da du ja sagst es ist PHP 7.0.0 in Verwendung.
Er dürfte eigentlich gar nicht in die anderen "if"-Teile hineinspringen.
edit:
Denn in deinem Falle, geht er in den "else"-Teil, was bedeutet, dass irgendetwas mit den Bedingungen nicht stimmt. |
|
|
Hallo,
jo da hast du auch Recht.
Ich muss das mal weiter analysieren.
Gruß
Viktor
__________________
Ein kluger Mann widerspricht keiner Frau. Er wartet, bis sie es selbst tut.
... beim Käfer (WBB2) konnte man noch selber schrauben,
beim neuen Golf (WBB3) muß man fast schon in die Werkstatt wenn man das "Wischwasser" nachfüllen muss!
Da fast keiner mehr hier Postet gibt es ab sofort keinen Support mehr per PN.
|
|
16.12.2016 20:00 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.776.048
Nächster Level: 266.777.854
|
|
|
16.12.2016 22:30 |
|
|
|
|
Zitat: Original von Viktor
|
Zitat: Original von Schrimm
Hallo,
Wenn du die PHP 7 - Releaseversion verwendest, kann es eigentlich nur an der Konstanten "ENCODING" liegen.
Dasselbe gilt wahrscheinlich auch für dein "Umbruch"-Problem
|
|
|
Hallo,
jo und das suche ich noch alles.
Ich habe schon wieder ein Fehler im wBB2.3 gefunden was schon immer da war.
Da muss ich mal vielen Testen.
Gruß
Viktor
|
|
|
Hallo,
Was für einen Fehler denn?
__________________
|
|
16.12.2016 22:33 |
|
|
|
Hallo,
bei mir passieren merkwürdige Dinge...
Wenn ich als Gast auf meine Startseite gehe, sehe ich in der Top10 Box die letzten 10 Beiträge... logge ich mich ein, sehe ich nur noch einen Teil der Beiträge ?!?!?
Bin ein wenig überfordert, was muss ich denn ändern, um das BBCode Problem in den Griff zu bekommen.
@Viktor
Beim ersten Versuch 2 Screenshots anzuhängen, bekam ich folgende Fehlermeldung
--> Parse error: syntax error, unexpected end of file in /var/www/virtual/v-gn.de/htdocs/wbb/global.php on line 33
Gruß Rene
Dateianhänge: |
1.jpg (16,14 KB, 105 mal heruntergeladen) 2.jpg (19 KB, 106 mal heruntergeladen)
|
|
|
16.12.2016 22:36 |
|
|
|
Hallo cleetus,
Das ist sehr wahrscheinlich ebenfalls das "Umlaute"-Problem, da es sich nicht um dieselben Themen handelt (siehe Anzahl der Klicks).
__________________
|
|
16.12.2016 22:39 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.776.048
Nächster Level: 266.777.854
|
|
|
Zitat: Original von Schrimm
|
Zitat: Original von Viktor
|
Zitat: Original von Schrimm
Hallo,
Wenn du die PHP 7 - Releaseversion verwendest, kann es eigentlich nur an der Konstanten "ENCODING" liegen.
Dasselbe gilt wahrscheinlich auch für dein "Umbruch"-Problem
|
|
|
Hallo,
jo und das suche ich noch alles.
Ich habe schon wieder ein Fehler im wBB2.3 gefunden was schon immer da war.
Da muss ich mal vielen Testen.
Gruß
Viktor
|
|
|
Hallo,
Was für einen Fehler denn? |
|
|
Hallo,
in der Datei "global.php" ist der Code drin.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
|
define('ENCODING', $lang->get('LANG_GLOBAL_ENCODING'));
$supportedCharsets = array('UCS-4', 'UCS-4BE', 'UCS-4LE', 'UCS-2', 'UCS-2BE', 'UCS-2LE', 'UTF-32', 'UTF-32BE', 'UTF-32LE', 'UCS-2LE',
'UTF-16', 'UTF-16BE', 'UTF-16LE', 'UTF-8', 'UTF-7', 'ASCII', 'EUC-JP', 'SJIS', 'EUCJP-WIN', 'SJIS-WIN', 'ISO-2022-JP', 'JIS', 'ISO-8859-1',
'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-10',
'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'BYTE2BE', 'BYTE2LE', 'BYTE4BE', 'BYTE4LE', 'BASE64', '7bit', '8bit', 'UTF7-IMAP');
if (in_array(wbb_strtoupper(ENCODING), $supportedCharsets) && extension_loaded('mbstring') && version_compare($phpversion, '4.3.0') >= 0) {
define('USE_MBSTRING', true);
}
else {
define('USE_MBSTRING', false);
}
|
|
Da wird "wbb_strtoupper" aufgerufen und in der Funktion wird nach "USE_MBSTRING" abgefragt was aber noch nicht gesetzt ist.
Ich habe das in meiner Log-Datei gesehen.
Wenn ich die Zeile in das ändere gibt es keine Fehlermeldung mehr.
code: |
1:
2:
3:
|
if (in_array(strtoupper(ENCODING), $supportedCharsets) && extension_loaded('mbstring') && version_compare($phpversion, '4.3.0') >= 0) {
|
|
Einfach nur da "wbb_strtoupper" durch "strtoupper" ersetzen.
Ich muss nur noch schaen ob das nicht wieder wo anders Probleme macht.
Gruß
Viktor
__________________
Ein kluger Mann widerspricht keiner Frau. Er wartet, bis sie es selbst tut.
... beim Käfer (WBB2) konnte man noch selber schrauben,
beim neuen Golf (WBB3) muß man fast schon in die Werkstatt wenn man das "Wischwasser" nachfüllen muss!
Da fast keiner mehr hier Postet gibt es ab sofort keinen Support mehr per PN.
|
|
16.12.2016 22:44 |
|
|
|
Hallo,
Wenn du es dort änderst, kannst du es hier auch ändern:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
/**
* htmlconverter function
*
* @param string text
*
* @return string encoded text
*/
function htmlconverter($text) {
global $phpversion;
$charsets = array('ISO-8859-1', 'ISO-8859-15', 'UTF-8', 'CP1252', 'WINDOWS-1252', 'KOI8-R', 'BIG5', 'GB2312', 'BIG5-HKSCS', 'SHIFT_JIS', 'EUC-JP');
if (version_compare($phpversion, '4.3.0') >= 0 && in_array(strtoupper(ENCODING), $charsets)) return @htmlentities($text, ENT_COMPAT, ENCODING);
elseif (in_array(strtoupper(ENCODING), array('ISO-8859-1', 'WINDOWS-1252'))) return htmlentities($text);
else return htmlspecialchars($text);
} |
|
edit:
Wobei es sich wohl nur um ein "Notice" handelt.
Da kommt die "gutmüdigkeit" von PHP zu tragen.
Ist die Konstante nicht gesetzt, schlägt die "if"-Bedigung fehl und der "else"-Teil wird ausgeführt, was nichts anderes ist als die "strtoupper()"-Funktion.
Alternativ kannst du auch die Konstantenvariante von "isset()", also "defined()" verwenden und das Problem sollte auch gelöst sein.
__________________
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Schrimm: 16.12.2016 23:05.
|
|
16.12.2016 22:56 |
|
|
Viktor
Administrator
Zeige Viktor auf Karte
Dabei seit: 15.08.2003
Beiträge: 31.570
363 Filebase-Einträge
Alter: 66 Jahre
Herkunft: NRW wBB-Version: wBB2.3 PHP-Version: 7.4.33 MySQL-Version: 10.5.19-MariaDB Wo bist du gehostet?: eigener Server
Bewertung:
Level: 71 [?]
Erfahrungspunkte: 237.776.048
Nächster Level: 266.777.854
|
|
|
Zitat: Original von Schrimm
Hallo,
Wenn du es dort änderst, kannst du es hier auch ändern:
php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
/**
* htmlconverter function
*
* @param string text
*
* @return string encoded text
*/
function htmlconverter($text) {
global $phpversion;
$charsets = array('ISO-8859-1', 'ISO-8859-15', 'UTF-8', 'CP1252', 'WINDOWS-1252', 'KOI8-R', 'BIG5', 'GB2312', 'BIG5-HKSCS', 'SHIFT_JIS', 'EUC-JP');
if (version_compare($phpversion, '4.3.0') >= 0 && in_array(strtoupper(ENCODING), $charsets)) return @htmlentities($text, ENT_COMPAT, ENCODING);
elseif (in_array(strtoupper(ENCODING), array('ISO-8859-1', 'WINDOWS-1252'))) return htmlentities($text);
else return htmlspecialchars($text);
} |
|
|
|
|
Hallo,
ich habe es jetzt mal in mein Testboard unter PHP7 getestet.
Wenn ich es nicht ändere werden lange URL's umgebrochen.
Wenn ich es in der Datei "global.php" ändere werden jetzt lange URL's nicht umgebrochen.
Seit wBB2 sucht man den Fehler und das soll jetzt die Lösung sein.
Gruß
Viktor
__________________
Ein kluger Mann widerspricht keiner Frau. Er wartet, bis sie es selbst tut.
... beim Käfer (WBB2) konnte man noch selber schrauben,
beim neuen Golf (WBB3) muß man fast schon in die Werkstatt wenn man das "Wischwasser" nachfüllen muss!
Da fast keiner mehr hier Postet gibt es ab sofort keinen Support mehr per PN.
|
|
16.12.2016 23:02 |
|
|
|
Hallo,
Ja, das stimmt.
Dies ist auch nur eine Vermutung von mir, da ich aktuell nicht weiß, inwiefern "strlen()" dafür verantwortlich ist.
Wenn du den Link nun noch viel länger machst, müsste wieder ein "Umbruch" erscheinen.
Falls nicht, dann hat "strlen()" wohl keinen Einfluss darauf.
__________________
|
|
16.12.2016 23:26 |
|
|
|
|
|
|