2 verbinden wie? <a zu [URL]...

  • Hey, ich habe da mal 2 Fragen


    1. Wie kann ich am einfachsten die beiden verbinden?


    2. biss her hab ich imma <a href... eingeben so das er den Link erkennen tut wie schreib ich aba am einfachsten eine Funktion das er den heisen tut und das den auch erkennen tut?


    Wäre nett wen mir da wer helfen kann


    Mit Freundlichen Grüßen
    Kifkat
    //edit keiner ne idee?

    Einmal editiert, zuletzt von Kevin B. ()

  • Der Zug macht tut! Ein LKW oder Auto vielleicht auch noch. Aber ein Link?


    Ich gehe davon aus, dass du einen URL-BBCode suchst, richtig? Die einfachste Lösung wäre mit Regulären ausdrücken, am besten liest du dich darüber mal schlau. Ich war dennoch so frei, einen ganz simplen Lösungsvorschlag anzufertigen.

    PHP
    function parseURL($text) {
            return preg_replace( "/\[url\=(.*)\](.*)\[\/url\]/i", "<a href=\"$1\">$2</a>", $text); // Ersetzt alle Treffer auf den Regulären Ausdruck (erstes Argument) in $text (= Eingabe; letztes Argument) durch einen A-Tag ($1 ≙ der Adresse, $2 ≙ dem Titel; zweites Argument)
    }


    //Edit: Oder meinst du Smiley-Codes?
    // Edit²: Variable $tag zu $text geändert, fuction zu function. Es leben die Tippfehler!

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

    2 Mal editiert, zuletzt von dead ()

  • PHP
    fuction parseURL($text) {
            return preg_replace( "/\[url\=(.*)\](.*)\[\/url\]/i", "<a href=\"$1\">$2</a>", $tag); // Ersetzt alle Treffer auf den Regulären Ausdruck (erstes Argument) in $text (= Eingabe; letztes Argument) durch einen A-Tag ($1 ≙ der Adresse, $2 ≙ dem Titel; zweites Argument)
    }

    Bitte niemals niemals niemals so
    Überlege mal, was passiert, wenn jemand

    Code
    [url=index.php" onLoad="alert("Hallo");]<script>alert("Hallo");</script>[/url]

    eingibt...
    Ist nicht böse gemeint, aber... bitte merken :thumbup:

  • Was passiert? Es wird der ganze Rattenschwanz als A-Tag ausgegeben, da Funktion Text() im Startpost.
    Ist nicht böse gemeint, aber... bitte lesen :thumbup:

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Was passiert? Es wird der ganze Rattenschwanz als A-Tag ausgegeben, da Funktion Text() im Startpost.
    Ist nicht böse gemeint, aber... bitte lesen :thumbup:

    Trotzdem...


    (.*) sagt ja "jedes Zeichen", also auch

    Code
    " onLoad="alert("Hallo");

    Hat man jetzt folgenden Text eingegeben:

    Code
    [url=index.php" onLoad="a#ert('Hallo');]Hallo[/url]

    Kommt dabei folgendes raus:

    Code
    <a href="index.php" onLoad="alert('Hallo');">Hallo</a>


    Noch mal als buntes Bild:


    Und falls sich das immer noch nicht überzeugt hat:


    http://www.functions-online.com/preg_replace.html
    Ganz oben folgendes eingeben:

    Code
    /\[url\=(.*)\](.*)\[\/url\]/i

    In der Mitte folgendes eingeben:

    Code
    <a href="$1">$2</a>

    Und in das Textfeld eingeben:

    Code
    [url=index.php" onLoad="alert('Hallo');]Hallo[/url]


    Um das zu verhindern, musst du dafür sorgen, dass im ersten keine Anführungsstriche kommen ( ^ -> Verneinung ) und im zweiten keine kleiner-als


    Dann hat dein Code auch noch ein problem, wenn man folgendes eingibt:

    Code
    [url=index.php]Link 1[/url] [url=index.php]Link 2[/url]

    Das wird nämlich zu [code]<a href="index.php]Link 1[/url] [url=index.php">Link 2</a>[/code] Um das zu fixxen, musst du deinem Pattern ein "u" anhängen

  • Das mag zwar unschön aussehen, ist aber kein Sicherheitsproblem. Um dieses Problem wirklich umgehen zu können, müsste man das mit einem Callback-Match machen, der nachprüft, da hilft ein Quotes verbieten alleine wenig. Im übrigen ist das auch dem BB-Code-Parser des WCF egal. <script>alert("Hallo");</script>


    Das mit dem U am Ende hatte ich tatsächlich vergessen, tut mir Leid. Also müsste /i zu /iU geändert werden.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Das mag zwar unschön aussehen, ist aber kein Sicherheitsproblem. Um dieses Problem wirklich umgehen zu können, müsste man das mit einem Callback-Match machen, der nachprüft, da hilft ein Quotes verbieten alleine wenig. Im übrigen ist das auch dem BB-Code-Parser des WCF egal. <script>alert("Hallo");</script>

    Ah, ich glaube, wir haben uns falsch verstanden ^^
    Anführungszeichen haben eigentlich sowieso nichts in der URL zu tun und ich hatte das nur vorgeschlagen, damit man nicht aus dem href-Attribut "ausbrechen" kann ;)
    Bei dem zweiten hätte ich dann auf das Verbieten von "<" gesetzt, damit man da keine HTML-Tags einbauen kann
    Das währe dann noch etwas einfacher, wobei eigentlich nicht ^^


    tut


    :D