Camping_RIDER: Externen Link erkennen

Beitrag lesen

N'Abend Gunnar ;)

Und wie soll das gehen? Whitelist? Da stehen sicher nicht alle möglichen Protokolle drin.

Ach so. Vorher erwähntest du noch mailto etc.

Es ging ja darum, externe Links zu markieren. Je nachdem, was das Ding nachher leisten soll, möchte ich ja nur bestimmte Protokolle detektieren, bzw. dann je nachdem auch anders behandeln. Es ist daher nich unbedingt nötig ALLE Protokolle durchlaufen zu lassen. Sollen nur Weblinks detektiert werden (das habe ich hier implizit dann auch angenommen) reichen HTTP und HTTPS. Mailto und andere Protokolle könnten auch detektiert und dann anders behandelt werden (anderes Icon etc).

Jetzt gleichst du $b mit einer Liste aller möglichen Top-Level-Domains ab

Geht nicht. Es kommen ständig neue TLDs hinzu.

So in etwa hatte ich das befürchtet... Deshalb auch die extra-Nachfrage nach einer eleganteren Lösung. Anderer Vorschlag für diese Stelle in meiner Vorgehensweise:

Man könnte ja an dieser Stelle auch die PHP-Funktion gethostbyname benutzen (siehe Funktionsbeschreibung bei PHP.net) und im Fall einer nicht-erfolgreichen Anfrage darauf schließen, dass der Link intern ist, da der erste Link-Teil offensichtlich kein gültiger DNS-auflösbarer Name ist. Im Fall der erfolgreichen Anfrage könnte dann auch direkt auf die eigene Server-IP überprüft werden. Nachteil hier: Performance-Einbuße durch den zeitaufwändigen DNS-Lookup. Ob das tragbar ist oder nicht, muss jeder für sich entscheiden; das kommt sicher auch darauf an, wie oft eine solche Funktion tatsächlich verwendet wird. Sollte das angewandt werden, bitte den Kommentar von "Ome Ko" (war bei mir der erste) auf der verlinkten Seite beachten.

Vielleicht wäre diese Funktion auch etwas, das schon das gesamte Prozedere ein Stück weit ersetzen kann. Ich müsste ja nur eine geeignete Stelle im Link auswählen, die im Fall eines externen Links die externe Domain enthalten würde (also z.B. entferne evtl. vorhandenes Protokoll im Link und picke alles vor dem ersten Slash oder Linkende) und diesen einmal durch den DNS-Lookup jagen. Just Brainstorming...

Grüße und Dank für die Anmerkungen,

RIDER

--

Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller