PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann ich zwischen internen und externen Links unterscheiden.


Andree
30.01.2004, 21:04
Ich habe eine kleine Weiterleitungsseite auf meinem Forum eingebaut.

Klickt man auf einem geposteten Link innerhalb eines Beitrages wird zuerst diese Seite angezeigt.

Dazu habe ich in der Datei functions_bbcodeparse.php unter ####Start handle_bbcode_url ####
den Code:
// standard URL hyperlink
// standard URL hyperlink
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";

in folgenden geändert:
// standard URL hyperlink
return "<a href=\"http://mein_forum.de/goto.php?goto=".urlencode($rightlink)."\" target=\"_blank\">$text</a>";

Das Problem worüber ich mir den Kopf zerbreche ist, das meine "goto.php" auch für Links aufgerufen wird, welche keine externen Links sind, sondern auch für Links welche mit der URL "http://mein_forum.de" anfangen, also interne Links.
Das möchte ich allerdings verhindern.

Kann mir dabei jemand weiterhelfen. Ich bin absoluter Anfänger und steige bei diesem Abschnitt "Start handle_bbcode_url" in der functions_bbcodeparse.php leider nicht durch.

Vielleicht kann mir ja jemand einen Tipp geben.

Liebe Grüße
PcFreak

thakikka
31.01.2004, 20:55
ich habs so gelöst:

ersetze
return "<a href=\"$rightlink\" target=\"_blank\">$text</a>";

durch
if(!preg_match("/\b.avi|.mpg|.mpeg|.mov|.zip|.rar|.pdf|.exe|ksgemeinde.de|kampfschmusergemeinde.de|kampfschmuser-gemeinde.de|kampfschmuser.de|hundehaltung.de|hundehalter.de|hundeverordnungen.de|kampfhundeinnot.de\ b/", $rightlink)) {
return "<img src=\"images/link.gif\" alt=\"Externer Link (öffnet in neuem Fenster)\" width=\"8\" height=\"7\" border=\"0\">&nbsp;<a href=\"http://weiterleitung.hundehaltung.de/?$rightlink\" title=\"Externer Link (öffnet in neuem Fenster)\" target=\"_blank\"><span onMouseOver=\"self.status='$rightlink/'; return true;\" onMouseOut=\"self.status='';return true;\">$text</span></a>";
}
else {
return "<img src=\"images/link.gif\" alt=\"Externer Link (öffnet in neuem Fenster)\" width=\"8\" height=\"7\" border=\"0\">&nbsp;<a href=\"$rightlink\" title=\"Externer Link (öffnet in neuem Fenster)\" target=\"_blank\">$text</a>";
}

ist natürlich so für mein forum angepasst, erklärt sich aber für die abänderung für den eigenen bedarf sicher von selbst. vor jedem link wird hier übrigens zusätzlich noch eine grafik gestellt. kann bei bedarf entfernt werden. wenn in dem link entweder eine videodatei o.ä. oder ein interner link verwendet wird, dann wird der link ganz normal aufgerufen.

ich hoffe ich konnte helfen ;)

gruss
sebastian

Andree
31.01.2004, 21:05
Das werde ich mal ausprobieren. Vielen Dank.
Hatte schon fast gedacht, dass niemand eine Lösung dafür finden würde.

Noch einmal herzlichen Dank

PcFreak

Andree
01.02.2004, 15:13
Danke noch einmal für deinen Codeschnipsel.
Ich habe das nun entsprechend geändert und es funktioniert einfach fantastisch.

Vielleicht ist es erlaubt in dem Zusammenhang noch eine Frage zu stellen?

Ich leite bei externen Links nun auf eine Weiterleitungsseite um. Auf meinem Board ist es die goto.php.

In dieser (eigentlich handelt es sich dabei um reinen html code) wird der externe Link übergeben mit dem Befehl:
<?php echo $goto; ?>
Das funktioniert wunderbar.
Meine Frage ist, wie kann man in einem Template (in meinem Fall ein template mit den Namen goto) diese Linküberabe des letzten angelickten Link definieren.

Damit wäre für mich möglich eine wirkliche PHP Seite zu erstellen die auf das goto template zugreift?

Ein Beispiel wie ich es bis jetzt umgesetzt habe findet man hier auf meinem Board in diesem Beitrag: "Board im Moment geschlossen"

Dort einfach mal einen Link anklicken um die Weiterleitungsseite zu betrachten.

Ansonsten ist das ein Super Hack und ich denke das er vielleicht auch für andere interessant sein könnte.

Liebe Grüße
PcFreak