MyBB.de Forum

Normale Version: Besucher sollen URLS nicht sehen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Michael schrieb:Folgende Funktion in der Datei inc/class_parser.php ist für die Umwandlung von URLs verantwortlich:
PHP-Code:
    function mycode_parse_url($url$name="")
    {
        if(!
preg_match("#^[a-z0-9]+://#i"$url))
        {
            
$url "http://".$url;
        }
        
$fullurl $url;

        
$url str_replace('&''&'$url);
        
$name str_replace('&''&'$name);

        if(!
preg_match("#[a-z0-9]+://#i"$fullurl))
        {
            
$fullurl "http://".$fullurl;
        }
        if(!
$name)
        {
            
$name $url;
        }
        
$name stripslashes($name);
        
$url stripslashes($url);
        
$fullurl stripslashes($fullurl);
        if(
$name == $url && $this->options['shorten_urls'] != "no")
        {
            if(
my_strlen($url) > 55)
            {
                
$name my_substr($url040)."...".my_substr($url, -10);
            }
        }

        
$name preg_replace("#&\#([0-9]+);#si""&#$1;"$name);
        
$name preg_replace("#&(?!\#[0-9]+;)#si""&"$name); // Fix & but allow unicode        
        
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        return 
$link;
    } 

Hallo zusammen,

habe den Code in die class_parser eingebaut. Bekomme zwar keine Fehlermeldung, aber auch kein Resultat. Rolleyes
An welcher Stelle genau muss der Code eingefügt werden?

Gruß,
StechusKaktus
Ich habe es nicht mehr eingebaut im Moment, aber soweit ich noch weiß musst du in der inc/class_parser.php

suchen nach
PHP-Code:
$fullurl $url

davor einfügen
PHP-Code:
global $mybb

suchen nach
PHP-Code:
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>"

danach einfügen
PHP-Code:
} else {
        $link "<span style=\"color: red;\">Um diesen Link zu sehen musst du dich registrieren</span>";
    
Hi Susanne,

nix zu machen. Keine Fehler, kein Ergebnis.
Bräuchte wohl doch nochmal den kompletten Abschnitt.
Danke dir trotzdem schonmal.
Doch, es geht, ich habe es gerade ausprobiert. Hier mal für dich der ganze Teil, der ersetzt werden muss

PHP-Code:
function mycode_parse_url($url$name="")
    {
        if(!
preg_match("#^[a-z0-9]+://#i"$url))
        {
            
$url "http://".$url;
        }
        
$fullurl $url;

        
$url str_replace('&amp;''&'$url);
        
$name str_replace('&amp;''&'$name);

        if(!
preg_match("#[a-z0-9]+://#i"$fullurl))
        {
            
$fullurl "http://".$fullurl;
        }
        if(!
$name)
        {
            
$name $url;
        }
        
$name stripslashes($name);
        
$url stripslashes($url);
        
$fullurl stripslashes($fullurl);
        if(
$name == $url && $this->options['shorten_urls'] != "no")
        {
            if(
my_strlen($url) > 55)
            {
                
$name my_substr($url040)."...".my_substr($url, -10);
            }
        }

        
$name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode        
        
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        return 
$link;
    } 

gegen

PHP-Code:
function mycode_parse_url($url$name="")
    {
        if(!
preg_match("#^[a-z0-9]+://#i"$url))
        {
            
$url "http://".$url;
        }
        global 
$mybb;
        
$fullurl $url;

        
$url str_replace('&amp;''&'$url);
        
$name str_replace('&amp;''&'$name);

        if(!
preg_match("#[a-z0-9]+://#i"$fullurl))
        {
            
$fullurl "http://".$fullurl;
        }
        if(!
$name)
        {
            
$name $url;
        }
        
$name stripslashes($name);
        
$url stripslashes($url);
        
$fullurl stripslashes($fullurl);
        if(
$name == $url && $this->options['shorten_urls'] != "no")
        {
            if(
my_strlen($url) > 55)
            {
                
$name my_substr($url040)."...".my_substr($url, -10);
            }
        }
        if($mybb->user['uid'] != "0") {
        
$name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode        
        
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        } else {
        $link "<span style=\"color: red;\">Um diesen Link zu sehen musst du dich registrieren</span>";
    }
        return 
$link;
    } 
prima,

ich danke dir!
der Text erscheint jetzt. kA wo jetzt der Unterschied zu meinen Versuchen liegt. Smile
Jetzt muss ich nur noch auf die Reg-Seite verweisen. Ich denke das krieg ich aber hin.

Gruß,
StechusKaktus

Edit: jetzt klappts wie gewünscht. Smile
Das mit den zuletzt von Susanne beschriebenen Änderungen in der /inc/class_parser.php funktioniert ja einwandfrei. Das habe ich nun in einem Forum eingebaut.

Wie kann ich es ermöglichen, dass trotzdem noch evtl. vorhandene Links in der Signatur angezeigt werden? Dabei ist es erstmal egal, ob in den Signaturen aller User oder nur in der Signatur einzelner User. Es würde auch nichts ausmachen, wenn in Posts einzelner User alle URLs trotzdem angezeigt würden (also in Beitrag&Signatur).

Ich wollte meinen Sponsoren ermöglichen Links anzubringen, die auch von Gästen und Suchmaschinen gelesen/verfolgt werden können (mindestens in der Signatur).

Gruß
Boardie05
Vorschlag (nicht getestet!): Öffne die Datei inc/functions_post.php und suche nach:
PHP-Code:
        $sig_parser = array(
            
"allow_html" => $mybb->settings['sightml'],
            
"allow_mycode" => $mybb->settings['sigmycode'],
            
"allow_smilies" => $mybb->settings['sigsmilies'],
            
"allow_imgcode" => $mybb->settings['sigimgcode'],
            
"me_username" => $post['username']
        ); 
Ersetzen durch:
PHP-Code:
        $sig_parser = array(
            
"allow_html" => $mybb->settings['sightml'],
            
"allow_mycode" => $mybb->settings['sigmycode'],
            
"allow_smilies" => $mybb->settings['sigsmilies'],
            
"allow_imgcode" => $mybb->settings['sigimgcode'],
            
"me_username" => $post['username'],
            
"show_urls" => "yes"
        
); 
Suche in der Datei inc/class_parser.php nach:
PHP-Code:
function mycode_parse_url($url$name="")
    
Darunter einfügen:
PHP-Code:
global $options
Suche nach:
PHP-Code:
        if($mybb->user['uid'] != "0") {
            $name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode        
            $link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        } else {
            $link "<span style=\"color: red;\">Um diesen Link zu sehen musst du dich registrieren</span>";
        
Ersetzen durch:
PHP-Code:
        if($mybb->user['uid'] != "0" || $options['show_urls'] == "yes") {
            $name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode        
            $link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        } else {
            $link "<span style=\"color: red;\">Um diesen Link zu sehen musst du dich registrieren</span>";
        
Danke Michael!

Es funktioniert, mit einer kleinen Änderung:

Die Variable $options ist wohl weiter oben in der Klasse schon definiert, deshalb habe ich folgendes nicht hinzugefügt:
PHP-Code:
global $options

und diesen Teil, muss man dann wohl so schreiben:
PHP-Code:
if($mybb->user['uid'] != "0" || $this->options['show_urls'] == "yes") {
            
$name preg_replace("#&amp;\#([0-9]+);#si""&#$1;"$name); // Fix & but allow unicode        
            
$link "<a href=\"$fullurl\" target=\"_blank\">$name</a>";
        } else {
            
$link "<span style=\"color: red;\">Um diesen Link zu sehen musst du dich registrieren</span>";
        } 

Die Änderung in der /inc/functions_post.php habe ich aber eins zu eins übernommen. Wie gesagt: So klappt es bei mirCool

Danke für die schnelle Antwort!

Gruß
Boardie05
Seiten: 1 2 3 4