ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Shoutbox

Geschlossen
  1. #1
    User Pic
    Imperator Mitglied
    Registriert seit
    21.11.2011
    Beiträge
    36
    Beitragswertungen
    0 Beitragspunkte
    Guten morgen zusammen

    Ich habe ein kleines Problem mit meiner Shoutbox !
    Wenn Ich oder ein Gast was rein schreiben Zb. Grüße dann sieht das so aus
    grü&s zlig;e ?! Könnt es ja auf meiner Homepage sehen

    Könnt Ihr mir vielleicht sagen wie ich das weg bekomme ? Sieht ja nicht gerade wirklich Toll aus...

    Hoffe mir kann da jemand von euch weiter helfen

    Grüße und Danke
    Imp

    Meine HP: www.ws13-clan.de
    oft kopiert, doch nie erreicht
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    So wie ich das sehe, werden die Zeichen als HTML-Entity in die Datenbank gesetzt, was bedeutet, dass zb. ü = ü von 1 Zeichen auf 6 Zeichen wächst.

    Da dein BBCode nach 10 Zeichen eine Worttrennung durchführt (BBCode Admin/Einstellung) wird das Wort grüße, welches in folgender Form grüße gespeichert wird nach dem 10 Zeichen getrennt, also grü&s _ zlig;e, somit kann auch die Ausgabe nicht mehr funktionieren.

    Lösung die richtige Kodierung verwenden (DB-Tabelle/Script)


    Zuletzt modifiziert von Lord|Schirmer am 01.11.2012 - 10:11:20
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Imperator Mitglied
    Registriert seit
    21.11.2011
    Beiträge
    36
    Beitragswertungen
    0 Beitragspunkte
    Hallo Lord

    Kannst du mir vielleicht genau erklären wie man das macht , also die richtige Kodierung verwenden ? Ich habe davon 0 Plan ^^

    Vielleicht kannst du dir ja mal meine Datenbank per TeamViewer anschauen ?

    Danke
    oft kopiert, doch nie erreicht
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    Mach mal ein Bild von der DB-Shoutbox Tabelle und poste die boxes/shoutbox.php.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Imperator Mitglied
    Registriert seit
    21.11.2011
    Beiträge
    36
    Beitragswertungen
    0 Beitragspunkte
    Ich hab keine Ahnung wovon ich überall ein Bild machen soll ^^
    Wenn ich in die Datenbank gehen und dann auf Shoutbox sehe ich das hier

    gesperrtes Bild
    gesperrtes Bild

    Und hier einmal meine shoutbox.php

    <?php
    $ILCH_HEADER_ADDITIONS .= '
    <style type="text/css">
    <!--
    /* Bubble with an isoceles triangle
    ------------------------------------------ */
    .example-right {
    	position:relative;
    	padding:5px 5px;
    	margin:0;
    	color:#FFFFFF;
    	background:#EE0000; /* default background for browsers without gradient support */
    	
    	/* css3 */
    	-moz-border-radius:10px;
    	-webkit-border-radius:10px;
    	border-radius:10px;
    	/* NOTE: webkit gradient implementation is not as per spec */
    	background:-webkit-gradient(linear, left top, left bottom, from(#8B0000), to(#EE0000));
    	background:-moz-linear-gradient(top, #8B0000, #EE0000);
    	background:-o-linear-gradient(top, #8B0000, #EE0000);
    	background:linear-gradient(top, #8B0000, #EE0000);
    }
    /* display of quote author (alternatively use a class on the element following the blockquote) */
    .example-right + p {margin:5px 0 2em 40px; font-style:italic;}
    /* creates the triangle */
    .example-right:after {
    	content:"\00a0";
    	display:block; /* reduce the damage in FF3.0 */
    	position:absolute;
    	bottom:-30px;
    	left:10px;
    	width:0;
    	height:0;
            border-width:0px 15px 30px 0px;
            border-style:solid;
            border-color:transparent #EE0000;
           
    
            
    	
    }
    -->
    </style>
    <script language="JavaScript" type="text/javascript">
    <!--
    function klapp(div) { with(document.getElementById(div).style) { if(display=="none"){ display="inline"; } else { display="none"; }}}
    //-->
    <!--
    function simple_insert_sb(aTag,eTag) { var input = document.forms[\'shoutbox\'].elements[\'shoutbox_textarea\']; input.focus(); if(typeof document.selection != \'undefined\') { var range = document.selection.createRange(); var insText = range.text; range.text = aTag + insText + eTag;
    range = document.selection.createRange(); if (insText.length == 0) { range.move(\'character\', -eTag.length); } else { range.moveStart(\'character\', aTag.length + insText.length + eTag.length); } range.select(); } else if(typeof input.selectionStart != \'undefined\') { var start = input.selectionStart; var end = input.selectionEnd; var insText = input.value.substring(start, end); input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end); var pos; if (insText.length == 0) { pos = start + aTag.length; } else { pos = start + aTag.length + insText.length + eTag.length; } input.selectionStart = pos; input.selectionEnd = pos; }else{ var pos = input.value.length; var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:"); input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos); }}
    //-->
    <!--
    function insert_sb ( towrite ) { simple_insert_sb ( towrite, \'\' ); }
    //-->
    </script>
    ';
    function getsmilies_sb() {
      global $lang;
      $zeilen = 5; $i = 0;
    	$b = '<script language="JavaScript" type="text/javascript">function moreSmilies_sb() { var x = window.open("about:blank", "moreSmilies", "width=250,height=200,status=no,scrollbars=yes,resizable=yes"); ';
      $a = '';
      $erg = db_query('SELECT emo, ent, url FROM `prefix_smilies`');
    	while ($row = db_fetch_object($erg) ) {
        $b .= 'x.document.write ("<a href=\"javascript:opener.insert_sb(\''.addslashes(addslashes($row->ent)).'\')\">");';
        $b .= 'x.document.write ("<img style=\"border: 0px; padding: 5px;\" src=\"include/images/smiles/'.$row->url.'\" title=\"'.$row->emo.'\"></a>");';
        if ($i<10) {
          # float einbauen
          if($i%$zeilen == 0 AND $i <> 0) { $a .= '<br /><br />'; }
          $a .= '<a href="javascript:insert_sb(\''.addslashes($row->ent).'\')">';
          $a .= '<img style="margin: 2px;" src="include/images/smiles/'.$row->url.'" border="0" title="'.$row->emo.'"></a>';
        }
        $i++;
    	}
      $b .= ' x.document.write("<br /><br /><center><a href=\"javascript:window.close();\">'.$lang['close'].'</a></center>"); x.document.close(); }</script>';
      if ($i>10) { $a .= '<br /><br /><center><a href="javascript:moreSmilies_sb();">'.$lang['more'].'</a></center>'; }
      $a = $b.$a;
      return ($a);
    }
    
    // Copyright by Manuel
    // Support www.ilch.de
    defined ('main') or die ('no direct access');
    
    $datum=date("j.n.Y");
    $zeit=date(" H:i ");
    
    if (loggedin()) {
        $shoutbox_VALUE_name = $_SESSION['authname'];
    } else {
        $shoutbox_VALUE_name = 'Nickname';
    }
    if (has_right($allgAr['sb_recht'])) {
        if (!empty($_POST['shoutbox_submit']) AND chk_antispam ('shoutbox')) {
            $shoutbox_nickname = escape($_POST['shoutbox_nickname'], 'string');
            $shoutbox_nickname = substr($shoutbox_nickname, 0, 15);
            $shoutbox_textarea = escape($_POST['shoutbox_textarea'], 'textarea');
            $shoutbox_textarea = preg_replace("/\[.?(url|b|i|u|img|code|quote)[^\]]*?\]/i", "", $shoutbox_textarea);
            $shoutbox_textarea = strip_tags($shoutbox_textarea);
            if (!empty($shoutbox_nickname) AND !empty($shoutbox_textarea)) {
               db_query('INSERT INTO `prefix_shoutbox` (`nickname`,`textarea`) VALUES ( "<b>' . $shoutbox_nickname . ':</b><br>'.$datum.'|'.$zeit.'" , "' . $shoutbox_textarea . '" ) ');
            }
        }
        echo '<form action="index.php?' . $menu->get_complete() . '" method="POST" name="shoutbox">';
        echo '<input type="text" style="width: 95%" name="shoutbox_nickname" value="' . $shoutbox_VALUE_name . '" onFocus="if (value == \'' . $shoutbox_VALUE_name . '\') {value = \'\'}" onBlur="if (value == \'\') {value = \'' . $shoutbox_VALUE_name . '\'}" maxlength="15">';
        echo '<textarea style="width: 95%;overflow:auto;" rows="2" name="shoutbox_textarea"></textarea>';
        $antispam = get_antispam ('shoutbox', 0);
    	echo $antispam;
    	if (!empty($antispam)) {
    		echo '<br />';
    	}
        echo '<input type="submit" value="' . $lang['formsub'] . '" name="shoutbox_submit">';
    	echo '&nbsp;&nbsp;&nbsp;<a class="smalfont" href="javascript:void(0)" onfocus="if (this.blur) this.blur()" onclick="javascript:klapp(\'smile\')">Smilies</a>';
        echo '<div id="smile" style="display:none;"><br /><br /><center>'.getsmilies_sb().'</center></div></form><br />';
    }
    $erg = db_query('SELECT * FROM `prefix_shoutbox` ORDER BY id DESC LIMIT ' . (is_numeric($allgAr['sb_limit'])?$allgAr['sb_limit']:5));
    $class = 'Cnorm';
    while ($row = db_fetch_object($erg)) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
        echo '<blockquote class="example-right"><p>' . preg_replace('/([^\s]{' . $allgAr['sb_maxwordlength'] . '})(?=[^\s])/', "$1\n", bbcode($row->textarea)) . '</p></blockquote>
    			<p>' . $row->nickname . '</p>
    ';
    }
    echo '<a class="box" href="index.php?shoutbox">' . $lang['archiv'] . '</a>';
    
    ?>
    oft kopiert, doch nie erreicht
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    An sich sehe ich keinen Fehler.

    Als schnelle Lösung würde ich entweder die max. Wortlänge höher setzen oder sogar html_entity_decode() anwenden.

    zB.
    while ($row = db_fetch_object($erg)) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite');
    	$row->textarea = html_entity_decode($row->textarea);
        echo '<blockquote class="example-right"><p>' . preg_replace('/([^\s]{' . $allgAr['sb_maxwordlength'] . '})(?=[^\s])/', "$1\n", bbcode($row->textarea)) . '</p></blockquote>
                <p>' . $row->nickname . '</p>
    ';
    }

    ... habs nicht getestet.
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Imperator Mitglied
    Registriert seit
    21.11.2011
    Beiträge
    36
    Beitragswertungen
    0 Beitragspunkte
    gesperrtes Bild

    Kannst du mir vielleicht auch genau sagen was ich da hoch setzen muss ?

    die 30 oder die 100 ?

    Ich Checks einfach nit ^^ traurig
    oft kopiert, doch nie erreicht
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    sb_maxwordlength - sollte evtl. irgendwo im Adminbereich / Konfiguration des Moduls einstellbar sein. Also nicht in der Datenbank


    Zuletzt modifiziert von Lord|Schirmer am 01.11.2012 - 20:31:59
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Imperator Mitglied
    Registriert seit
    21.11.2011
    Beiträge
    36
    Beitragswertungen
    0 Beitragspunkte
    Du meinst wohl das hier

    gesperrtes Bild

    Gegen was sollte ich die 10 ersetzen ?
    oft kopiert, doch nie erreicht
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    Probieren evtl. 15 o. 20 so dass bei langen Wörtern die Shoutbox nicht gesprengt wird.
    rules :: doku :: faq :: linkus
    1 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Imperator Mitglied
    Registriert seit
    21.11.2011
    Beiträge
    36
    Beitragswertungen
    0 Beitragspunkte
    So hab jetzt 20 drinnen und es sieht schon viel besser aus :-)
    Lord vielen dank für deine Hilfe !
    oft kopiert, doch nie erreicht
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten