Lebkowski.info ,,Winning popularity contests since `85''

maciej lebkowski Z zamiłowania tworzę strony internetowe. Moje teksty mają na celu opisanie niektórych fragmentów internetu, którego ta strona jest częścią. Konserwatywny, pewny siebie, niekonwencjonalny - to wady czy zalety? Sprawdź! maciej łebkowski

poprzednia notka
Przepyszne linki
następna notka
Postwakacyjnie 2
Adresy
niezmienny adres
komentarze

Linki z referrerem

11 sierpnia 2005

Wstęp

Wraz z rozszerzaniem się internetu i powstawaniem nowych elementów tegoż, coraz częściej możemy trafić na sytuacje, w których nagłówek HTTP_REFERRER nie będzie niósł ze sobą żadnych informacji. Oto sposób, jak złagodzić brak tych danych w przypadku czytników RSS.


Treść notki

Większość osób, które interesują się webmasteringiem i prowadzą stronę domową przegląda swoje logi. Zastanówmy się nad sposobem, żeby w różnych środowiskach, przedstawiać różne linki, tak aby nawet bez informacji o stronie referującej, można było się domyślić, skąd internauta dostał dany adres.

Ja skupię się na kanałach RSS. Docelowo chcę osiągnąć treść, w której do linków będzie dodana informacja o jego pochodzeniu, np. przez dodanie zmiennej 'z_rss'. Do dzieła.

Bierzemy tekst i wyszukujemy w nim wszystkich wystąpień: href=(...). Teraz, każdy ze znalezionych linków parsujemy i sprawdzamy, czy zawiera już jakieś zmienne dla skryptu PHP czy nie, a potem zależnie od wyniku, dodajemy własne informacje. Funkcja wyszukująca to jedna linikja uzywając preg_replace_callback.

$txt = preg_replace_callback(',href="(http://.*)",','zamien_linka', TXT );

Teraz oczywiście definiujemy funkcję 'zamien_linka':

  function zamien_linka( $link ){
	$link = $link[1];
	$_u = parse_url( $link );
	if( empty( $_u['path'] ) ) $link.= '/';
	$res = $link . ( strpos( $link, '?' ) ? '&' : '?' ) 
		. FROM_RSS .'='.NASZ_SAJT;
	return sprintf( 'href="%s"', $res );
  }

(oczywiście stałe, pisane wielkimi literami, zostały zdefiniowane wcześniej). Przez tak skonstruowany skrypt przepuszczamy naszą treść, która docelowo idzie do kanału RSS. Na przykładzie widzimy, że każdy link w tekście został zamieniony - oprócz linków wewnętrznych, ale tymi może zajmę się później, albo dopisze jakiś komentarz, jak będę miał więcej czasu.
Publikujemy tekst na blogu.

Efekt? Jeśli ktoś korzystający z czytnika RSS kliknie na linka, to autor strony, na którą wejdzie internauta w logu zobaczy informację, że ktoś wszedł do niego po przeczytaniu wpisu ze strony Kowalskiego w czytniku RSS. Proste? Proste. Przydatne? Może trochę mniej, ale nie miałem czasu się zastanawiać nad tym, chciałem sobie coś zakodować. :-) Zapraszam do komentowania.

Komentarze

Masz coś ciekawego do dodania? Skontaktuj się ze mną prywatnie. Zerknij na metody kontaktu.

Strefa III Rzeczpospolitej – NIE dla Kaczystanu!