ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Link bzw.URL in Shoutbox autoumbenennen

Geschlossen
  1. #1
    User Pic
    wor Mitglied
    Registriert seit
    05.03.2008
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Hallo an alle,

    ich hätte da eine Frage bezüglich der Shoutbox. Wir benutzen diese hier externer Link Natürlich angepasst und etwas modifiziert aber im großen und ganzen ist es diese hier.

    Ich möchte wissen ob es möglich ist die Links/URL's die bei uns gepostet werden
    1. Anklickbar zu machen und
    2. Automatisch umbennen in z.B. LINK

    Beispiel:
    der Link der gepostet wird sieht so aus
    http://www.site4free.tk/users/stopfer/$pics/lustig.jpg

    Und so LINK soll es in der Shoutbox raus kommen wenn man auf senden drückt. Und wenn man dann auf den LINK klickt kommt man zu der Adresse.

    Shoutbox Code:
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
    <?php
    #   Copyright by Manuel Staechele
    #   Support www.ilch.de
    
    defined ('main') or die ( 'no direct access' );
    
    function shoutboxsmileys($string){
       $smileys = array( ':)' => ':happy:#@#-_-_-#@#g035.gif', ':(' => ':sad:#@#-_-_-#@#0008.gif', ':-O' => ':eek:#@#-_-_-#@#0004.gif', ';)' => ':zwinker:#@#-_-_-#@#0012.gif', ':D' => ':grinsen:#@#-_-_-#@#0022.gif', ':S' => ':traurig:#@#-_-_-#@#a050.gif',  ':*' => ':traurig:#@#-_-_-#@#a0120.gif', ':\'(' => ':frown:#@#-_-_-#@#a0315.gif', ':P' => ':*g*:#@#-_-_-#@#a010.gif', ':8' => ':cool:#@#-_-_-#@#a095.gif' );
      foreach ($smileys as $icon => $info) {
        list($emo, $url) = explode('#@#-_-_-#@#', $info);
        $string = str_replace($icon,'<img src="include/images/sBsmileys/'.$url.'" border="0" alt="'.$emo.'" title="'.$emo.'" />',$string);
      }
      return $string;
    }
    
    
    
    
      $shoutbox_VALUE_name2 = getenv("REMOTE_ADDR");
      $datum=date("j.n.Y");
      $zeit=date(" H:i ");
      $time=date("j-n-Y H:i");
    
      if ( loggedin() ) {
        $shoutbox_VALUE_name = $_SESSION['authname'];
      } else {
        $shoutbox_VALUE_name = 'Nickname';
      }
      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`,`time`,`ip`) VALUES ( "'.$shoutbox_nickname.'" , "'.$shoutbox_textarea.'"  , "'.$time.'" , "'.$shoutbox_VALUE_name2.'") ' );
    	  }
      }
      if (has_right($allgAr['sb_recht'])){
      echo '<form action="index.php" method="POST" name="shoutbox">';
      echo "<center><br> $datum $zeit <br>IP:<b> $shoutbox_VALUE_name2</b><br>";
      echo '<input type="text" size="15" name="shoutbox_nickname" value="'.$shoutbox_VALUE_name.'" onFocus="if (value == \''.$shoutbox_VALUE_name.'\') {value = \'\'}" onBlur="if (value == \'\') {value = \''.$shoutbox_VALUE_name.'\'}" maxlength="15">';
      
      echo '<br /><textarea style="width: 80%" cols="15" rows="2" name="shoutbox_textarea"></textarea><br />';
      echo '<hr>';
      echo '<script language="JavaScript" type="text/javascript" src="include/includes/js/bbcode.js"></script>';
      echo '<a href="javascript:put_sb(\':)\')"><img src="include/images/sBsmileys/g035.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':(\')"><img src="include/images/sBsmileys/0008.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':-O\')"><img src="include/images/sBsmileys/0004.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\';)\')"><img src="include/images/sBsmileys/0012.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':D\')"><img src="include/images/sBsmileys/0022.gif" border ="0"/></a><br>';
      echo '<a href="javascript:put_sb(\':S\')"><img src="include/images/sBsmileys/a050.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':P\')"><img src="include/images/sBsmileys/a010.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':\\\'(\')"><img src="include/images/sBsmileys/a0315.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':8\')"><img src="include/images/sBsmileys/a095.gif" border ="0"/></a>';
      echo '<a href="javascript:put_sb(\':*\')"><img src="include/images/sBsmileys/a0120.gif" border ="0"/></a><br />';
      echo '<hr>';
    	echo get_antispam ('shoutbox', 0);
      echo '<input type="submit" value="'.$lang['formsub'].'" name="shoutbox_submit">';
    	echo '</form>';
      }
      echo '<table width="90%" class="border" cellpadding="2" cellspacing="1" border="0">';
      $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 '<tr class="'.$class.'"><td align="left"><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td class="shoutbox"><center>'.$row->time.'<br /><b>'.$row->nickname.':</b></center></td></tr></table>'.shoutboxsmileys(preg_replace( '/([^\s]{'.$allgAr['sb_maxwordlength'].'})(?=[^\s])/', "$1\n", $row->textarea)).'</td></tr>';
    
      }
      echo '</table><a class="box" href="index.php?shoutbox">'.$lang['archiv'].'</a>';
    
    ?>


    Ich hoffe es ist möglich den die Links die bei uns des öfteren gepostet werden zersprengen die Box und das sieht einfach nur sch.... aus. Und wenn man es mit der Zeichenanzahl macht dann wird der Link unbrauchbar und nicht alle bemerken die Leerzeichen darin.

    Danke schon mal und einen Schönen Tag noch lächeln

    betroffene Homepage: vetus-clan.de
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    she Mitglied
    Registriert seit
    13.11.2010
    Beiträge
    1.115
    Beitragswertungen
    82 Beitragspunkte
    $row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);


    ZEILE 68
    Google+ shelfinger.eu
    Das Wissen verfolgt mich - doch ich bin schneller!
    2 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    wor Mitglied
    Registriert seit
    05.03.2008
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Klappt super vielen dank. Das einzige was ich noch ändern würde wäre das es in einem extra Fenster oder Tab aufgeht aber das müsste ich schaffen. Wenn nicht dann melde ich mich noch mal. zwinker
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Forcey Mitglied
    Registriert seit
    19.09.2010
    Beiträge
    411
    Beitragswertungen
    66 Beitragspunkte
    $row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1' target="_blank">LINK</a>", $row->textarea);


    Achso, She, habs versucht in show_post.php einzubinden, kein erfolg^^ Hast da auch ne Idee parat?
    Wär dir dankbar!

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    # check ob ein fehler aufgetreten ist.
    check_forum_failure($forum_failure);
    
    # toipc als gelesen markieren
    $_SESSION['forumSEE'][$fid][$tid] = time();
    
    $title = $allgAr['title'].' :: Forum :: '.$aktTopicRow['name'].' :: Beitr&auml;ge zeigen';
    $hmenu  = $extented_forum_menu.'<a class="smalfont" href="index.php?forum">Forum</a><b> &raquo; </b>'.aktForumCats($aktForumRow['kat']).'<b> &raquo; </b><a class="smalfont" href="index.php?forum-showtopics-'.$fid.'">'.$aktForumRow['name'].'</a><b> &raquo; </b>';
    $hmenu .= $aktTopicRow['name'].$extented_forum_menu_sufix;
    $design = new design ( $title , $hmenu, 1);
    $design->header();
    
    
    # Topic Hits werden eins hochgesetzt.
    db_query('UPDATE `prefix_topics` SET hit = hit + 1 WHERE id = "'.$tid.'"');
    
    # mehrere seiten fals gefordert
    $limit = $allgAr['Fpanz'];  // Limit
    $page = ($menu->getA(3) == 'p' ? $menu->getE(3) : 1 );
    $MPL = db_make_sites ($page , "WHERE tid = ".$tid , $limit , 'index.php?forum-showposts-'.$tid , 'posts' );
    $anfang = ($page - 1) * $limit;
    
    $antworten = '';
    if (($aktTopicRow['stat'] == 1 AND $forum_rights['reply'] == TRUE) OR ($_SESSION['authright'] <= '-7' OR $forum_rights['mods'] == TRUE)) {
      $antworten = '<b>[ <a href="index.php?forum-newpost-'.$tid.'">'.$lang['answer'].'</a> ]</b>';
    }
    
    $class = 'Cmite';
    
    $tpl = new tpl ( 'forum/showpost' );
    $ar = array (
      'SITELINK' => $MPL,
      'tid' => $tid,
    	'ANTWORTEN' => $antworten,
    	'TOPICNAME' => $aktTopicRow['name']
    );
    $tpl->set_ar_out($ar,0);
    $i = $anfang +1;
    $ges_ar = array ('wurstegal', 'maennlich', 'weiblich');
    $erg = db_query("SELECT geschlecht, prefix_posts.id,txt,time,erstid,erst,sig,avatar,posts FROM `prefix_posts` LEFT JOIN prefix_user ON prefix_posts.erstid = prefix_user.id WHERE tid = ".$tid." ORDER BY time LIMIT ".$anfang.",".$limit);
    while($row = db_fetch_assoc($erg)) {
    
    	$class = ( $class == 'Cnorm' ? 'Cmite' : 'Cnorm' );
    
    	# define some vars.
    	$row['sig'] = ( empty($row['sig']) ? '' : '<br /><hr style="width: 50%;" align="left">'.bbcode($row['sig']) );
    	$row['TID'] = $tid;
    	$row['class'] = $class;
    	$row['date'] = date ('d.m.Y - H:i:s', $row['time'] );
    	$row['delete'] = '';
    	$row['change'] = '';
    	if (!is_numeric($row['geschlecht'])) { $row['geschlecht'] = 0; }
    	if (file_exists($row['avatar'])) { $row['avatar'] = '<br /><br /><a border="0" href="index.php?user-details-'.$row['erstid'].'"><img border="0" width="120" src="'.$row['avatar'].'" alt="User Pic" border="0" /></a><br />'; }
    	elseif ($allgAr['forum_default_avatar']) { $row['avatar'] = '<br /><br /><img src="include/images/avatars/'.$ges_ar[$row['geschlecht']].'.jpg" alt="User Pic" border="0" /><br />'; }
     	else { $row['avatar'] = ''; }
        $row['rang']   = userrang ($row['posts'],$row['erstid']);
    	$row['txt']    = (isset($_GET['such']) ? markword(bbcode ($row['txt']),$_GET['such']) : bbcode ($row['txt']) );
    	$row['i']      = $i;
        $row['page']   = $page;
    
    	if ( $row['posts'] != 0 ) {
    		$row['erst'] = '<a href="index.php?user-details-'.$row['erstid'].'"><b>'.$row['erst'].'</b></a>';
    	} elseif ( $row['erstid'] != 0 ) {
            $row['rang'] = 'gel&ouml;schter User';
        }
    
    	if ($forum_rights['mods'] == TRUE AND $i>1) {
    	  $row['delete'] = '<a href="index.php?forum-delpost-'.$tid.'-'.$row['id'].'">'.$lang['delete'].'</a>';
    	}
    	if ( $forum_rights['reply'] == TRUE AND loggedin() ) {
    	  $row['change'] = '&nbsp;<a href="index.php?forum-editpost-'.$tid.'-'.$row['id'].'">'.$lang['change'].'</a>';
    	}
    	$row['posts']  = ($row['posts']?'<br />Posts: '.$row['posts']:'').'<br />';
    	$tpl->set_ar_out($row,1);
    
      $i++;
    }
    
    $tpl->set_ar_out( array ( 'SITELINK' => $MPL, 'ANTWORTEN' => $antworten ) , 2 );
    
    if (loggedin()) {
      if ($menu->get(3) == 'topicalert') {
        if (1 == db_result(db_query("SELECT COUNT(*) FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid),0)) {
          db_query("DELETE FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid);
        } else {
          db_query("INSERT INTO prefix_topic_alerts (tid,uid) VALUES (".$tid.", ".$_SESSION['authid'].")");
        }
      }
    
      echo 'Optionen:';
      if (1 == db_result(db_query("SELECT COUNT(*) FROM prefix_topic_alerts WHERE uid = ".$_SESSION['authid']." AND tid = ".$tid),0)) {
        echo '<br />- <a href="index.php?forum-showposts-'.$tid.'-topicalert">'.$lang['nomailonreply'].'</a><br />';
      } else {
        echo '<br />- <a href="index.php?forum-showposts-'.$tid.'-topicalert">'.$lang['mailonreply'].'</a><br />';
      }
    }
    
    if ( $forum_rights['mods'] == TRUE ) {
      $tpl->set ( 'status', ($aktTopicRow['stat'] == 1 ? $lang['close'] : $lang['open'] ) );
    	$tpl->set ( 'festnorm', ($aktTopicRow['art'] == 0 ? $lang['fixedtopic'] : $lang['normaltopic'] ) );
    	$tpl->set('tid',$tid);
    	$tpl->out(3);
    }
    $design->footer();
    ?>



    Zuletzt modifiziert von Forcey am 03.11.2011 - 12:28:58
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    wor Mitglied
    Registriert seit
    05.03.2008
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    @ Forcey

    ZitatZitat geschrieben von Forcey

    $row->textarea = preg_replace("#((http|https)+(://)+(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})?(?:[S])*)#i","<a href='$1' target="_blank">LINK</a>", $row->textarea);




    dieser Code funktioniert nicht da ist ein Fehler drin frag mich aber nicht wo ich denke es liegt an den Gänsefüßen bei target="_blank" aber wie gesagt nur eine Vermutung, und wenn du diesen Code bei deiner show_post.php eingefügt hast wirst du auch eine Fehlermeldung bekommen. Benutze den Code von She der funktioniert um den Fehler auszuschließen den dein Code hat, sollte es nicht gehen dann liegt es an was anderem zwinker

    Das ist aber nicht der Grund warum ich schreibe, ich habe was festgestellt und zwar:

    man kann einen Link auf 3 Verschiedene weisen schreiben und nur eine wird mit diesem Code ersetzt:

    1. http://www.diezieladresse.de <--- Wird ersetzt alles Super
    2. http://diezieladresse.de <--- Passiert nichts
    3. www.diezieladresse.de <--- Passiert auch nichts

    Nun dachte ich kein Problem und machte das daraus:
    $row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
    $row->textarea = preg_replace("#((http|https)+(\://)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
    $row->textarea = preg_replace("#((www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);


    Nun ja so einfach ist es doch nicht denn jetzt ersetzt er schon die Links aber das sieht dann so aus

    wenn man das eingibt:
    http://www.diezieladresse.de
    kommt in der BOX das raus und der den ich unterstrichen habe ist anklickbar
    LINK'>LINK'>LINK
    und wenn man drauf klickt kommt diese Adresse:
    http://www.vetus-clan.de/<a href= also ganz was anderes

    Wenn man das eingibt:
    http://diezieladresse.de
    ist allen korrekt, der Link wird ersetzt als LINK und die Zieladresse ist auch die richtige.

    Und wenn man es so eingibt:
    www.diezieladresse.de

    Wird der Link richtig ersetzt als LINK, aber die Zieladresse wenn man drauf klickt wird falsch erzeugt.

    http://www.vetus-clan.de/www.diezieladresse.de

    Ich habe keine Ahnung warum er davor www.vetus-clan.de einsetzt das hat doch keiner gesendet woher nimmt er sich diese Information ? genau das gleiche beim Beispiel Nr.1 Da stimmt gar nicht mehr.

    Wäre cool wenn einer da eine Lösung hätte oder ist es so gar nicht möglich alle Arten von Links abzudecken ?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Forcey Mitglied
    Registriert seit
    19.09.2010
    Beiträge
    411
    Beitragswertungen
    66 Beitragspunkte
    Was du brauchst ist n "if, else if" und so abfrage

    Hab grad nciht die Zeit dafür, aber kannst ja selbst probieren. ist eigentlich ganz simpel im prinzip "wenn X dann Y" "wenn nicht X dann Z". da gibs viele möglichkeiten.

    Uhm

    $row->textarea = preg_replace("#((http|https)+(://)+(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})?(?:[S])*)#i","<a href='$1' target=\"_blank\">LINK</a>", $row->textarea);


    probier mal so.

    >Neue Code Funktion NERVT.


    Zuletzt modifiziert von Forcey am 04.11.2011 - 23:12:33
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    wor Mitglied
    Registriert seit
    05.03.2008
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Sorry war etwas durch was anderes abgelenkt aber jetzt kann ich es mal weiter versuchen.

    Also als erstes PHP kannich nicht ich kann nur einen fertigen Code durch viel Experementieren irgendwie meistens anpassen lachen aber von Grund auf was zu bauen da reicht es bei mir nicht.

    Was ich zu If, elseif gefunden habe ist das:

    
    if ($a > $b) {
        echo "a is größer als b";
    } elseif ($a == $b) {
        echo "a ist gleich groß wie b";
    } else {
        echo "a ist kleiner als b";
    }


    So ISt es Gewünscht würde ich sagen aber wie es richtig in PHP schreiben das weiss ich nicht.

    
    if ((http|https)+(://)+(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})) {
        $row->textarea = preg_replace("#((http|https)+(\://)+(www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
    } elseif ((http|https)+(://)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})) {
        $row->textarea = preg_replace("#((http|https)+(\://)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
    } else ((www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})){
        $row->textarea = preg_replace("#((www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","<a href='$1'>LINK</a>", $row->textarea);
    }


    So in etwa könnte ich mir das Vorstellen aber ich bin mir sicher das funktioniert so nicht !!! zwinker
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    RedSunset Mitglied
    Registriert seit
    29.05.2009
    Beiträge
    173
    Beitragswertungen
    4 Beitragspunkte
    So funktionierts :

    	$row->textarea = preg_replace ("#(http|https)+(://)+(www\.)#i", "http://", $row->textarea);
    	if (preg_match("#(http|https)+(://)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})#i", $row->textarea)) {
    		$row->textarea = preg_replace("#((http|https)+(\://)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","[URL=$1]LINK[/URL]", $row->textarea);
    	} 
    	if (preg_match("#(www.)+([a-zA-Z0-9-]+.)+([a-zA-Z]{2,4})#i", $row->textarea)){
    		$row->textarea = preg_replace("#((www\.)+([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})?(?:[\S])*)#i","[URL=$1]LINK[/URL]", $row->textarea);
    	}


    Achtung: Links ersetzen ^^ Bei mir läuft es über den BBCOde.
    1 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    wor Mitglied
    Registriert seit
    05.03.2008
    Beiträge
    49
    Beitragswertungen
    0 Beitragspunkte
    Perfekt !!! vielen Dank !!! lachen
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten