2010-05-06 6 views
7

Ich baue einige Widgets für eine Wohltätigkeitsorganisation. Aufgrund einiger Logo-Lizenzierung Malarkey, muss ich eine Möglichkeit finden, nur weiß gelisteten Websites den Code ausführen, oder eine Fehlermeldung (oder etwas ähnliches) anstelle des Widgets senden.Erlaube nur bestimmten Domains, einen iFrame zu laden

Wir müssen iFrames verwenden, da einige Seiten sie bereits eingebettet haben. Im Idealfall wäre eine PHP-Lösung am besten, aber JS ist in Ordnung, wenn es sein muss.

Also, der eine Liner; Kann ich die Domain, in der sich der iFrame befindet, überprüfen und verschiedene Inhalte senden?

Ich frage mich, was sind die Chancen, dies zu tun in der Lage, ...

Antwort

5

Sie die HTTP_REFERER Header verwenden können.

<?php 

$allowed_domains = array(
     'a-good-domain.com', 
     'another-nice-one.org', 
     ); 

$allowed = false; 
foreach ($allowed_domains as $a) { 
    if (preg_match("@https?://$a/.*@", $_SERVER['HTTP_REFERER'])) { 
     $allowed = true; 
    } 
} 

if ($allowed) 
    echo "Nice domain"; 
else 
    echo "Ugly domain"; 
+1

Sie sollten wirklich einen Hash dafür verwenden. Es ist nicht nötig, auf diese Weise "$ allowed_domains" zu durchlaufen. – friedo

+0

Super! Das funktioniert perfekt. :) – PaulAdamDavis

+0

Kann HTTTP_REFERER Header gefälscht werden? Wenn ja, wäre es nicht sicher, sich auf diesen Header zu verlassen. – ramkumar

Verwandte Themen