Bei internen Links SID anhängen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Bei internen Links SID anhängen?

Beitrag 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.
Benutzeravatar
area57
Mitglied
Beiträge: 2111
Registriert: 26.12.2005 19:43
Wohnort: Berlin
Kontaktdaten:

Beitrag von area57 »

Moin,

schau mal hier rein KB:72 letzter Abschnitt

Windows - Ein Slangebegriff der Indianer: Weißer Mann starrt durch Glasscheibe auf Sanduhr
In a world without walls - Who need's windows and gates???
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag 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. :roll:
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag von Xwitz »

Wenn die SID mit $SID los geht und mit einem Komma abgetrennt wird, dann lautet der Geguläre Ausdruck wie folgt:

Code: Alles auswählen

/$SID(.*?),/
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag 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"
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag 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.
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag 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.
Xwitz
Mitglied
Beiträge: 1104
Registriert: 21.06.2005 21:41

Beitrag 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. :wink: Oder was sagst Du, Yoda? :wink:
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag 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. :roll:
Antworten

Zurück zu „Coding & Technik“