Links umwandeln (dringend!)

Support zum phpBB2 und zu MODs anderer Autoren.

Moderator: Supporter

Links umwandeln (dringend!)

Beitragvon Basti2003 » 23. Sep 2005 12:41

Hallo,

Ich muss alle Links, die im Nachrichtentext und Signatur eingegeben werden, umleiten.

Damit dort wirklich alle Variablen und Anker m,it nübergeben werden, muss ich mit der funktion rawurlencode arbeiten.

nun, diese Code stelle hier, wäre eigentlich genau richtig, um das anzuwenden - nur leider existiert die nicht!

http://www.amigalink.de/viewtopic.php?t=160

Ich habe diesen Mod installiert: http://www.phpbbhacks.com/download/3706

Kurz und knapp: In welcher Datei/an welcher Stelle wird die URL umgewandelt/erzeugt ? Wo kann ich eingreiffen um Veränderungen an dem Link vorzunehmen?

Hoffe, dass ich das Problem einigermaßen klar schildern konnte.

Danke,
Basti
Basti2003
 
Beiträge: 8
Registriert: 23. Sep 2005 12:35

Beitragvon AmigaLink » 23. Sep 2005 13:12

Ich verstehe erlichgesagt nur Bahnhof. :|
Mit dem Active Link Referrer Blocker MOD werden alle Links die, mittels BBCode in Beiträgen und Signaturen gesetzt werden, über safeurl.de geschickt. Was möchtest du noch???
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Basti2003 » 23. Sep 2005 13:18

Jap, genau.
Nun, ich möchte das über ein eigenes Script von mir schicken - und dabei sollen die Anker (also "#5465") nocht verloren gehen. Und das ist nur möglich, wenn ich die Domain mittels rawurlencode/decode bearbeite.

Also, ich muss einfach nur wissen, an welcher Stelle die URL "erzeugt" wird.
Ich stelle mir das ungefähr so vor:
Code: Alles auswählen
$url = $row[text] // oder sö ähnlich

$tpl[url] = rawurlencode($url); // und weitere Veränderungen... -> URL wird dem Template übergeben


Es geht mir also darum, letztendlich so eine URL zu erhalten:
Code: Alles auswählen
http://www.meinedomain.de/redirect.php?url=http%3A%2F%2Fwww.test.de%2Fforum%2Fviewtopic.php%3Fp%3D278860%26sid%3D8287d695b59bb0b2a6efac5d482a9619%23278860



Hoffe, es war nun verständlich - ist schwer zu erklären. Ich brauch einfach die Stelle, wo der Text der Nachricht aus der DB ausgelesen wird und der eingegebene Link"aufbereitet" wird
Basti2003
 
Beiträge: 8
Registriert: 23. Sep 2005 12:35

Beitragvon AmigaLink » 23. Sep 2005 13:33

Du denkst zu kompliziert. ;)
Du brauchst nur, in dem von dir verlinktem Active Link Referrer Blocker MOD, jedes http://en.safeurl.de/? gegen redirect.php?url= auszutauschen. :)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Basti2003 » 23. Sep 2005 14:31

Nein, soeinfach ist es leider nicht...

Angenommen jmd. würde diese URL eingeben: http://www.amigalink.de/viewtopi ... =2036#2036

So würde man dadurch folgendes erhalten:
redirect.php?url=http://www.amigalink.de/viewtopic.php?p=2036#2036

D.h. $url = http://www.amigalink.de/viewtopic.php?p=2036

Dieser Teil fehlt "#2036"
Außerdem gibt es Probleme, wenn eine URL mehrere Werte übergibt!

Daher möchte ich die vom Benutzer eingegebene URL mit rawurlencode umwandeln.


EDIT:
Nun gibt es in der includes/bbcode.php
durch den Mod diese Stellen:


Code: Alles auswählen
    $bbcode_tpl['url2'] = str_replace('{URL}', 'http://en.safeurl.de/?\\1', $bbcode_tpl['url']);
    $bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url2']);


Wobei die Variable irgendwie in der "\\1" drinnen steckt.
Ich brauche die URL aber als richtige Variable, damit ich die mit der Funktion bearbeiten kann - d.h. ich muss einen Schritt zurück gehen - wo die URL dieser "\\1" zugewiesen wird
Basti2003
 
Beiträge: 8
Registriert: 23. Sep 2005 12:35

Beitragvon AmigaLink » 23. Sep 2005 15:41

Ich setz hier jetzt einfach mal einen willkürlichen Link zu meinem anderem Board um dir etwas zu demonstrieren (intere Links werden ja hier umgewandelt):

ohne BBCode :arrow: http://www.essenmitfreude.info/board/vi ... t=90#25576
mit BBCode :arrow: http://www.essenmitfreude.info/board/viewtopic.php?t=11398&start=90#25576
mit BBCode :arrow: Und nochmal :)

Wie du siehst wird hier ebenfalls über ein weiteres script geleitet und es wird kein einziger Parameter abgeschnitten. Selbst die, von dir als Beispiel genannte, Anker-Sprungmarke bleibt erhalten. Es dürfte also eigentlich kein Problem geben!


Das //1 ist eine sogenannte Backreference des str_replace() Befehls und enthält den Wert des Platzhalters {URL} welcher wiederum hier
Code: Alles auswählen
   // matches an "xxxx://yyyy" URL at the start of a line, or after a space.
   // xxxx can only be alpha characters.
   // yyyy is anything up to the first space, newline, comma, double quote or <
   $ret = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);

   // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
   // Must contain at least 2 dots. xxxx contains either alphanum, or "-"
   // zzzz is optional.. will contain everything up to the first space, newline,
   // comma, double quote or <.
   $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
ermittelt wird. Die bbcode.php ist recht kompliziert und ich tue mich da auch immer wieder schwer daran, wenn ich darin arbeiten muss. Aber du kannst hier keine großartigen änderungen vornehmen, ohne die complette bbcode.php zu analysieren und gegebenfalls umzuschreiben. :?
Wie du aber an meinen obigen Linkbeispielen sehen kannst, ist das auch garnicht nötig! ;)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Basti2003 » 23. Sep 2005 16:52

Welchen Mod verwendest Du denn für die Weiterleitung und wie sieht deine redirect-Datei aus? (Ist das dieser "RLink"?)
Basti2003
 
Beiträge: 8
Registriert: 23. Sep 2005 12:35

Beitragvon AmigaLink » 23. Sep 2005 17:16

Ja, das ist der rLink. :)
Hier im Board ein wenig modifiziert, deswegen ist bei obigen Beispiellinks seine Funktion nicht zu sehen. Normalerweise werden durch den rLink alle Externen Links in einem Frame geöffnet um am obigem Bilschirmrand einen Text einzublenden, der besagt das AmigaLink.de nichts mit dem inhalt der verlinkten Seite zu tun hat. :)
Siehe z.B. hier => http://www.phpbbhacks.com
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon Basti2003 » 23. Sep 2005 17:49

Habe den auch mal eingebaut - leider funktioniert das mit den Ankern aber noch nicht.

Der Anker steht zwar oben in der URL, aber letztendlich springt der Browser nicht dahin.
Den Frame brauche ich auch nicht --> Wie sieht denn deine rlink.php aus? Sprich wie bekommst Du das hin, dass man mit Anker weitergeleitet wird?
Basti2003
 
Beiträge: 8
Registriert: 23. Sep 2005 12:35

Beitragvon AmigaLink » 23. Sep 2005 18:06

Das einzige was ich am rLink geändert habe, ist das er bei bestimmten Seiten (meinen) den Frame nicht anzeigt. Diese Funktion ist sogar Standartmäßig vorhanden, arbeitet aber normalerweise nur mit einer URL. :)
Ich hab jetzt gerade die Datei nicht verfügbar (bin am falschem Rechner), aber öffne mal deine rlink.php. Dort steht, irgendwo im erstem drittel der Datei, yourboard.ch. Das musst du nur gegen deinen Domain-Namen austauschen und schon erscheint der Frame nicht wenn du interne links setzt. :)

Was das anspringen der Anker betrifft. So liegt der fehler nicht an der Weiterleitung (wenn der Anker in der Adresszeile angegeben ist), sondern an der Zielseite.
Entweder sind dort keine Anker gesetzt (einige phpBB templates, die nicht auf subSilver basieren, setzen keine Anker), oder du hast die Seite nicht zuendeladen lassen.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Nächste

Zurück zu phpBB2 Support



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast