Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 5 Gast/Gäste
ProPortal 2.6.2
Das ersetzen der beiden Expressions  [[:<:]]  und  [[:>:]] durch /b, //b, ///b, ////b oder durch '/\b"  (insgesammt 16 Vorkommen in der portal.php) führt dazu, das zwar kein Fehler mehr angezeigt wird, die Seite aber auch fast leer bleibt.
Was muss da genau hin? 

Im Original sehen diestellen so aus:
PHP-Code:
if($fetch_blocks $proportal->get_list("SELECT b.*, u.* FROM ".TABLE_PREFIX."portal_blocks b LEFT JOIN ".TABLE_PREFIX."users u ON(u.proportalupdate = b.id) WHERE b.zone='4' AND b.enabled='1' AND b.visible REGEXP '[[:<:]]".$mybb->user['usergroup']."[[:>:]]' AND b.id NOT IN (".$box_id .") ORDER BY b.position")) 
Zitieren
(17.09.2021, 15:35)[ExiTuS] schrieb: Es kann doch so schön sein, wenn die Webhoster derartige Änderungen rechtzeitig ankündigen, um vorbereitet zu sein.

Trotzdem weiß man nie, was auf einen zukommt und wo es sich letztlich auswirkt.  Rolleyes
Ich zumindest kann/könnte nur im Nachhinein Schadensbegrenzung betreiben. Wink
Zitieren
Da fühle ich mich bei meinen Hoster richtig gut aufgehoben. Ich kann von PHP 5.6.x bis PHP 8.0.x alle gegebenen PHP-Versionen einstellen. Ich habe im Account PHP auf 8.0.x eingestellt und in der .htaccess auf 7.4.x negiert. So kann ich nach und nach Testen und werde nicht einfach vor vollendete Tatsachen gestellt.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
Zitieren
@merano nicht /b //b ///b sondern \b \\b oder \\\b
oder die Lösung von Exitus von gestern verwenden; beide Optionen funktionieren bei mir
Zitieren
(17.09.2021, 16:49)bv64 schrieb: sondern \b \\b oder \\\b

Die Option \b und \\b funktionieren nicht bei mir, aber mit \\\b funktioniert es.

Vielen Dank!
Zitieren
Nochmal der Verständlichkeit halber...
Gewollt ist hier der Reguläre Ausdruck "\b", also Backslash+b.
Das Backslash ist ein Meta/Steuerzeichen und muss daher maskiert werden; innerhalb eines SQL RegExp erfolgt eine Maskierung durch ein doppeltes Backslash "\\".
Das ergibt: "\\" + "\b" = "\\\b" Smile

Beim Einsatz von MySQL würde ich dennoch die SQL-Funktion FIND_IN_SET() anstelle eines anfälligen REGEXP bevorzugen, weil es eben nicht solche Probleme auslöst.

[ExiTuS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
(16.09.2021, 16:07)[ExiTuS] schrieb: Probiere:

Code:
[...] AND FIND_IN_SET (".$mybb->user['usergroup'].",b.visible) AND [...]
Es wird über die portal.php diskutiert. Nett wenn Einige schreiben "Der Befehl funktioniert". Bin allem Anschein nach etwas begriffsstutzig.

Wie und wo genau soll der vorstehende SQL-Befehl eingebunden werden? Mit den [...] kann ich leider nichts anfangen.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
Zitieren
na dann machen wir es mal ordentlich:

Die Änderungen sind nur erforderlich, wenn MySQL 8 verwendet wird!

Original in der portal.php des ProPortal:

PHP-Code:
if($fetch_blocks $proportal->get_list("SELECT b.*, u.* FROM ".TABLE_PREFIX."portal_blocks b LEFT JOIN ".TABLE_PREFIX."users u ON(u.proportalupdate = b.id) WHERE b.zone='4' AND b.enabled='1' AND b.visible REGEXP '[[:<:]]".$mybb->user['usergroup']."[[:>:]]' AND b.id NOT IN (".$box_id .") ORDER BY b.position")) 

Lösung 1 mit Erhalt der REGEXP

PHP-Code:
if($fetch_blocks $proportal->get_list("SELECT b.*, u.* FROM ".TABLE_PREFIX."portal_blocks b LEFT JOIN ".TABLE_PREFIX."users u ON(u.proportalupdate = b.id) WHERE b.zone='4' AND b.enabled='1' AND b.visible REGEXP '\\\b".$mybb->user['usergroup']."\\\b' AND b.id NOT IN (".$box_id .") ORDER BY b.position")) 

Lösung 2 mit FIND_IN_SET:

PHP-Code:
if($fetch_blocks $proportal->get_list("SELECT b.*, u.* FROM ".TABLE_PREFIX."portal_blocks b LEFT JOIN ".TABLE_PREFIX."users u ON(u.proportalupdate = b.id) WHERE b.zone='4' AND b.enabled='1' AND b.visible AND FIND_IN_SET (".$mybb->user['usergroup'].",b.visible) AND b.id NOT IN (".$box_id .") ORDER BY b.position")) 

Die Originalfundstelle findet sich 8 mal in der portal.php und muss deshalb auch 8 mal geändert werden!



In der inc/plugins/proportalupdate.php

Original:
PHP-Code:
$updateboxen $db->simple_select("portal_blocks""id,file,visible,title,userusing,zone""enabled = '1' AND visible REGEXP '[[:<:]]".$mybb->user['usergroup']."[[:>:]]' AND userusing='1' ORDER BY zone ASC, position ASC"); 

Lösung 1 mit Erhalt von REGEXP

PHP-Code:
$updateboxen $db->simple_select("portal_blocks""id,file,visible,title,userusing,zone""enabled = '1' AND visible REGEXP '\\\b".$mybb->user['usergroup']."\\\b' AND userusing='1' ORDER BY zone ASC, position ASC"); 

Lösung 2 mit FIND_IN_SET

PHP-Code:
$updateboxen $db->simple_select("portal_blocks""id,file,visible,title,userusing,zone""enabled = '1' AND FIND_IN_SET (".$mybb->user['usergroup'].",visible) AND userusing='1' ORDER BY zone ASC, position ASC"); 
Zitieren
@bv64 , DANKE jetzt ist es auch deppensicher für mich zu verstehen :-)
Zitieren
Jetzt sind Interpretationsfehler zu Deinen Ausführungen ausgeschlossen worden. Sollte man möglichst immer so ausführen, spart Rückfragen und Zeit

Ich sage besten Dank für Deine Engagement.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an!  ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner] ♦ [PlugIns]
Zitieren