Page 1 of 1

Einrichten einer Blacklist

Posted: Sat May 16, 2009 1:52 pm
by maninweb
Hi zusammen...

ich habe ein etwas ungewöhlicheres Anliegen.

Und zwar möchte ich bestimmte User, die von einer bestimmten Website über einen Link bei mir landen
auf eine spezielle Hinweisseite leiten. Hab' mir auch schon ein PHP Script entwickelt, um den Referer
abzufragen usw. (IP's würden nicht gehen). Die Hinweisseite sollte nur einmalig erscheinen. D.h.
auf der Hinweisseite ist ein Link auf die normale Startseite meiner Website. Klickt der User darauf,
sollte er ganz normal meine Website nutzen können.

Hat einer eine Idee, wie ich's am effektivsten ins CMS eingebaut bekomme? Kann ich weitere Params
an die index.php weitergeben, ohne die Funktionalität des CMS zu stören? Oder weiss jemand einen
bessere Umsetzungsmöglichkeit?

Hintergrund des Ganzen ist nicht (!), dass ich Personen aussperren möchte, sondern eher darauf hinweisen
möchte, dass mein Angebot frei zugänglich ist sowie auch bleiben soll und wird. Steht dann auf der Hinweis-
seite (Es gibt gewisse Firmen, die die Links und Web-Adressen "vermarkten")


Danke & Gruß

Re: Einrichten einer Blacklist

Posted: Sat May 16, 2009 6:29 pm
by cyberman
maninweb wrote: Hab' mir auch schon ein PHP Script entwickelt, um den Referer abzufragen
Müsstest du theoretisch nicht, da Smarty ihn bereits kennt

Code: Select all

{$smarty.server.HTTP_REFERER}
Im Script (referercheck) würde ich den Referer mit einer Liste aus einer Textdatei (Blacklist) vergleichen. Bei einer Übereinstimmung könntest du eine Variable (referer) auf true oder 1 setzen und weisst diese dann Smarty zu.

Code: Select all

$smarty->assign('referer', $referer);
Der Check im Template könnte dann so aussehen

Code: Select all

{referercheck}
{if $referer == '1'}
  {redirect_page page='seiten-alias'}
{else}
  ... dein Template ...
{/if}

Re: Einrichten einer Blacklist

Posted: Sun May 17, 2009 9:55 am
by maninweb
Hi cyberman...

Danke für die Tipps, ich werd's mal ausprobieren. Finde ich sogar gut, dass dann die Hinweisseite im CMS liegen kann. Momentan war sie noch extern.

Gruß & schönen Sonntag.

Re: Einrichten einer Blacklist

Posted: Wed May 20, 2009 11:34 am
by maninweb
Hi nochmal...

ich hab's jetzt eingebaut, jedoch aufbauend auf Deinen Vorschlag ein bißchen anders gelöst.
Und zwar habe ich ein benutzerdefiniertes Tag "Referer" erstellt und beispielhaft diesen Code eingebaut...

Code: Select all

//	Vars...
	
	$Block   =  0;
	$Keys    =  array();
	
//	Addresses...
	
	$Keys[0] = "adresse1";
	$Keys[1] = "adresse2";
	$Keys[2] = "adresse3";
	$Keys[3] = "adresse4";
	
//	Get...
	
	$Referer  = strtolower($_SERVER['HTTP_REFERER']);
	$Address = strtolower(gethostbyaddr($_SERVER['REMOTE_ADDR']));
	
//	Check...
	
	if (strpos($Referer, strtolower("maninweb")) < 1)
	{
		foreach ($Keys as $Value) 
		{
    			if (strpos($Referer, strtolower($Value)) !== false || 
    			    strpos($Address, strtolower($Value)) !== false)
			{
				$Block = 1; break;
			}
		}
	}

//	Assign

	$smarty->assign('Block', $Block);
Danach in das Template direkt ganz oben folgendes eingebaut...

Code: Select all

{Referer}
{if $page_alias != "die_hinweis_seite"}{if $Block == '1'}{redirect_page page='die_hinweis_seite'}{/if}{/if}
Damit wird dann auch ausgeschlossen, dass der User in einer Schleife läuft. Die Addressen kann man dann
aus einer Textdatei oder so einlesen, das ist aber kein Problem.

Grüße