Seite 1 von 2
Bei internen Links SID anhängen?
Verfasst: 13.01.2007 21:17
von bgx
Wie kann ich es anstellen, das bei internen Links, die in den Posts verwendet werden, die SID mit angehängt wird?
Hab schon in der bbcode.php gesucht, aber keine rechte Lösung gefunden. Kann mir nicht vorstellen, das sich darüber noch keiner Gedanken gemacht hat.
Verfasst: 14.01.2007 00:12
von area57
Moin,
schau mal hier rein KB:72 letzter Abschnitt
Verfasst: 14.01.2007 10:41
von bgx
Danke, es hat geklappt!
Hab es nun so gelösstin der bbcode.php:
Code: Alles auswählen
global $board_config, $userdata, $HTTP_GET_VARS;
$session_id = $HTTP_GET_VARS['sid'];
if (!preg_match('/^[A-Za-z0-9]*$/', $session_id))
{
$session_id = '';
}
$local_url = '<a rel="nofollow" href="'. $server_protocol . $server_name . $server_port .'rlink/rlink.php?url=' . $server_protocol . $server_name . $server_port;
// OPTIONAL
// Use this line if you want to include the script path as well.
// To use this line simply remove the two / from the beginning.
//$local_url = '<a href="' . $server_protocol . $server_name . $server_port . $script_path;
// Now look to see if that string is found in the text. Note that
// the first step done (in other functions) before processing the
// post text is to add one extra space, so we don't need to worry
// about the case where a URL might be in the very first position.
// It won't. :-)
$start_url = strpos(strtolower($text), $local_url);
while ($start_url)
{
// First identify the end of the URL by finding the >
$last_found_pos = $start_url + 1;
$end_url = strpos ($text, '>', $last_found_pos);
$url_len = $end_url - $start_url + 1;
// Next get a copy of the URL from <a href="... to closing >
$my_url = substr($text, $start_url, $url_len);
// replace target wtih null string
$my_local_url = str_replace('target="_blank"', '', $my_url);
// replace target wtih null string
if ($session_id !='')
$my_local_url = str_replace('rules.php', 'rules.php?sid='.$userdata['session_id'], $my_local_url);
Nun stellt sich mir nurnoch die Frage, wie ich folgende URLs, da ich SEO Urls hab umschreiben kann:
topic,134,-test.html muß zu topic,134,$SID,-test.html
und
topic,134,15,-test.html muß zu topic,134,15,$SID,-test.html
Wie stelle ich das an, da sich die Forennummer bzw. die Seitenzahl ja ändern kann?
Ich weiß, das es mit preg_replace gehen muß hab es aber leider nicht so mit den regulären Ausdrücken.

Verfasst: 14.01.2007 13:41
von Xwitz
Wenn die SID mit $SID los geht und mit einem Komma abgetrennt wird, dann lautet der Geguläre Ausdruck wie folgt:
Verfasst: 14.01.2007 14:07
von bgx
Die sid beginnt leider nicht mit sid. Ich möchte sie auch nicht ausfiltern, sondern sie soll ja in die URL integriert werden.
also wie oben schon geschrieben ersetze "topic,134,15,-test.html" mit "topic,134,15,{session_id},-test.html"
Verfasst: 14.01.2007 16:42
von Xwitz
Wenn du es schaffst aus t=134 ein ,134 zu machen, warum schafst Du es dann nicht aus sid=91350 ein ,91350 zu machen?
Wozu dann SEO Urls (für angemeldete user) noch gut sein sollen frage ich mich aber.
Verfasst: 14.01.2007 17:21
von fanrpg
Xwitz hat geschrieben:Wozu dann SEO Urls (für angemeldete user) noch gut sein sollen frage ich mich aber.
Wenn sie Themen extern verlinken, dann sie dort auch umgeschrieben.
Verfasst: 14.01.2007 17:54
von bgx
@xwitz: Danke für deine Hilfe!
fanrpg hat die Systematik verstanden!
Ich werd mich dann wohl oder übel mit viel Try and Error selber dran versuchen, mich in die große Welt der regulären Ausdrücke vorzuwagen.
Verfasst: 14.01.2007 19:11
von Xwitz
SEO URLs sollen für Suchmaschinen eindeutig und für User ansehnlich und wieder auffindbar sein. Wenn man die sid einbaut (der Zweck ist mir klar, darum geht es nicht), dann ist auch eine url mit html am Ende nicht mehr ansehnlich. Das meinte ich.
Wird mit so einer URL verlinkt (manuell durch einen user), dann zeigt jeder Link mit einer anderen sid auf eine andere url, außer es findet eine Weiterleitung auf die urls ohne sid statt. Wenn auch die Ansehnlichkeit nicht gegeben ist, dann kann man die SEO URLs auch gleich weglassen und eingehende originale Links mit sid auf eine url ohne sid weiterleiten. Wo ist der Nutzen der SEO URL geblieben? Oder soll statt dem "test" ein mögliches Suchwort in die url? Das wäre der einzige Vorteil der übrig bleibt.
bgx hat geschrieben:fanrpg hat die Systematik verstanden!
Jetzt fehlt nur noch die Semantik.

Oder was sagst Du, Yoda?

Verfasst: 14.01.2007 19:39
von bgx
@xwitz: Ich gebe dir da soweit ja auch recht! Aber ich möchte eigentlich nicht mein komplettes Forum umschreiben, nur das es anders hinhaut.
Was ich damit erreichen möchte ist folgendes:
Wenn jemand keine Cookies im Forum an hat fliegt er ja raus, sobald er auf nen Link ohne Sid drückt. Wenn ich jetzt in einem Posting schreibe, das das Thema schonmal behandelt worden ist, möchte ich das der User nicht gleich rausfliegt, wenn er danach schauen möchte.
Meine Seourls sind schon etwas älter und deshalb steht die sid in der Url.
Wärst du so nett und könntest mir helfen, damit ich die preg_replace Anweisung nach meinen Wünschen hinbekomme?
Ich könnte es mir natürlich leicht machen indem ich es folgendermaßen Löse:
Code: Alles auswählen
$my_local_url = str_replace(',-', ','.$userdata['session_id'].',-', $my_local_url);
Nur es könnte ja aus welchen Gründen auch immer sein, das ich in nem Link das ",-" irgendwie drin hab und dann würde das auch umgeschrieben werden und das möchte ich vermeiden indem ich es so löse:
Code: Alles auswählen
$my_local_url = str_replace('topic,{1-9}', 'topic,{1-9}'.$userdata['session_id'], $my_local_url);
Aber wie gesagt, mit den regulären Ausdrücken hab ich es nicht so.
