Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe und besinnliche Weihnachten!

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


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste
PHP Code parser Problem
#11
Ist das Problem durch ein Update entstanden, oder ist das Forum eine Neuinstallation?
Ich bin ehrlich gesagt noch nicht ganz weg davon, das es doch am Editor liegt.
Kannst Du mal die /jscripts/bbcodes_sceditor.js und das Template codebuttons mit dem Original vergleichen, ob es da evtl. Differenzen gibt.
Sind im Quellcode des Beitrages HTML-Fehler zu sehen?
Zitieren
#12
Seit wann das Problem wirklich besteht, das kann ich gar nicht sagen, denn der Beitrag mit dem PHP-Code besteht seit ewigen Zeiten. Das Problem ist mir aber erst jetzt aufgefallen. Überprüft habe ich es in einem alten 1.6er Forum, einem Forum, das von dieser 1.6er Version auf 1.8.22 geupdated wurde und einem anderen Forum mit der Version 1.8.22 das erstmalig mit 1.8.5 installiert und seitdem kontinuierlich geupdated wurde.
Was gegen ein Editor-Problem spricht: in den genannten Foren nutze ich sowohl den MyBB Editor aber auch den markItup-Editor von Stefan. Das Problem tritt unabhängig vom Editor auf.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#13
Hallo Jockl,

langsam geht mir das Wissen aus, um Dir konstruktiv helfen zu können. Wink 
Wird denn der Code - trotz des Fehlers - im Beitrag korrekt angezeigt?
Wenn ja, gibt es bei Dir irgendetwas Hausgemachtes (PlugIn, eigenes Template, Templateänderung etc.), was immer auf den ersten Beitrag eines Threads zugreift??
Könnte der Fehler evtl. dadurch entstehen und gar nicht durch den Beitrag selbst?

......alles nur noch Theorie.... Wink 

Grüße
Zitieren
#14
(06.01.2020, 19:32)Jockl schrieb: Der Fehler erscheint in zwei verschiedenen Foren (jeweils 1.8.22) nur dann wenn der o.a. PHP Code im ersten Beitrag eines Themas enthalten ist. Wenn ich den Code in ein bereits vorhandenes Thema als weiteren Beitrag einsetze, dann erscheint der Fehler nicht..... Undecided
Das klingt sehr danach als würde ein Plugin den Inhalt des ersten Beitrags zur Erstellung von Meta-Tags o.ä. verwenden und eine fehlerhafte Ausgabe erzeugen. Kaputte Meta-Tags passen nämlich zu der beschriebenen Ausgabe oberhalb des Forums.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#15
@StefanT
Das kann es tatsächlich sein....ich habe ein (von mir geschriebenes) Metatag Plugin mal "entsichert" und nun folgende Anzeige im showthread bekommen.
   
Zitieren
#16
@Sven
Damit sollte das Problem wohl eingegrenzt sein. Wink
Zitieren
#17
Krass, wie kommt man nur auf diese Idee!? Smile Von solchen Kirstallkugeln bräuchte ich bitte auch ein paar....

Ich habe tatsächlich ein eigenes Plugin am Laufen, das Metatags u.a. für die showthread.php mit dem nachfolgenden Code, den ich mal irgendwo hergezogen habe, erzeugt. Wenn ich diese Passage auskommentiere, dann ist der Fehler weg.....
PHP-Code:
case "showthread.php":
    
$tid intval($mybb->input['tid']);
    
$query $db->simple_select("threads""subject""tid = ".$tid."");
    
$threaddescription $db->fetch_array($query);
    
$query $db->simple_select("posts""message""tid = ".$tid." AND visible = '1' ORDER BY dateline ASC LIMIT 0,1");
    
$threadmessage $db->fetch_array($query);
    
// delete the attachment strings of the post
    
$threadmessage['message'] = preg_replace("#\[.*\]#isU",""$threadmessage['message']);
    
// deleting whitespaces, line feeds, returns etc.
    
$threadmessage['message'] = preg_replace("/\s+/"" "$threadmessage['message']);
    
// reduce the message down to 100 letters
    
if (strlen($threadmessage['message']) > 100) {
        
$threadmessage['message'] = substr($threadmessage['message'], 0100) . "...";
    }
    
$metadescription "<meta name='description' content='".$threaddescription['subject'].", ".$threadmessage['message']."' />";
break; 
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#18
Na ist doch Top, dass der Fehler gefunden wurde. Wink

Jockl, ersetze den Codeteil mal bitte durch:
PHP-Code:
case "showthread.php":
    $thread get_thread($mybb->get_input('tid'MyBB::INPUT_INT));
    $title htmlspecialchars_uni($thread['subject']);
    $query $db->simple_select("posts""message""pid = '{$thread['firstpost']}' AND visible = '1'");
    $firstpost $db->fetch_array($query);
    $description htmlspecialchars_uni($firstpost['message']);
    $description preg_replace("/(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?/i"""$description);
    $description preg_replace(array("/|[[\/\!]*?[^\[\]]*?]|/si""/(\r\n)+|\r+|\n+|\t+/i"), array(""" "), $description);
    $description trim($description);
    if(strlen($description) > 100)
    {
        $description my_substr($description0100).'...';
    }
    $metadescription "<meta name='description' content='".$title.", ".$description."' />";
break; 

Damit sollte es reibungslos klappen.
Zitieren
#19
Danke Dir, Sven, damit klappt's wunderbar! Smile
Und ich merke mal wieder wie sehr ich auf reguläre Ausdrücke stehe..... Sad
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#20
Das hat nichts mit den regulären Ausdrücken zu, hier hat das htmlspecialchars_uni gefehlt. Ich persönlich würde dieses allerdings erst am Ende einfügen, sonst besteht die Gefahr, dass HTML-Entities abgeschnitten werden können.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren