Youtube-ähnliche Ländersperre mit PHP
Jeder kennt sie, jeder hasst sie, Meldungen wie Dieses Video ist in deinem Land nicht verfügbar signalisieren, dass bestimmte Inhalt nur landesspezifisch verfügbar sind. In diesem Artikel schauen wir uns an, wie man solche Ländersperren umsetzen kann, dabei soll natürlich niemand dazu animiert werden, diese auch einzusetzen ;)
Aus welchem Land kommt ein Besucher?
Die interessanteste Frage die sich stellt ist natürlich, aus welchem Land kommt ein bestimmter Besucher?
Dazu verwenden wir die PHP Klasse Ip2Country welche bereits in einem älteren Artikel, IP Adresse einem Land zuordnen mit PHP und MySQL, vorgestellt wurde. Dieses Tutorial sollte auch zuerst gelesen werden, da die hier vorstellte Ländersperre auch auf Ip2Country basiert.
Ländersperre mit PHP
Da nun alle notwendigen Voraussetzungen geklärt sind, kann es auch direkt an die Programmierung der PHP Funktion gehen. Wenn einem eine Funktion nicht ausreicht oder man sowieso objektorientiert programmiert, dann kann man natürlich auch eine extra Klasse erstellen.
function isAllowed($blocked=false) {
if(!$blocked) return true;
// _once ist wichtig, um zu verhindern dass die Klasse
// mehrfach inkludiert wird
require_once 'phpip2country.class.php';
//Datenbankinformationen, muss angepasst werden
$dbConfigArray = array(
'host' => 'localhost', // host name
'port' => 3306, //3306 -default mysql port number
'dbName' => 'ip_to_country', //Datenbankname
'dbUserName' => 'ip_to_country', //Benutzername
'dbUserPassword' => 'AhdxKMdLH5g', //Password
'tableName' => 'ip_to_country', //Tabellenname
);
//Ip2Country Objekt erzeugen
$phpIp2Country = new phpIp2Country($_SERVER[‘REMOTE_ADDR’],$dbConfigArray);
$country = $phpIp2Country->getInfo(IP_INFO);
$country = $country['CNTRY'];
if(!in_array($country, $blocked)) {
return true;
}
return false;
}
Die Funktion gibt je nachdem, ob das Land des Besuchers erlaubt ist oder nicht, entweder true oder false zurück. Der Parameter $blocked ist entweder false, das bedeutet, dass alle Länder erlaubt sind, oder ein Array mit Ländescodes der Länder die nicht erlaubt sind. Wobei man die entsprechenden Ländercodes z.B. auf Countrycode.org findet (Countrycodes mit 3 Buchstaben, also POL für Polen).
Wenn man eine Website komplett für deutsche Besucher sperren möchte, sieht das Ganze folgendermaßen aus:
if(!isAllowed(array('DEU'))) {
exit;
}
Oder man möchte ein bestimmtes Video nur Besuchern aus Polen zeigen:
if(!isAllowed(array('POL'))) {
echo 'Porn video....'
} else {
echo 'Teletubbies...';
}
Fazit
Aus lizenz- oder jugendschutzrechtlichen ist man in manchen Situation gezwungen, Besucher bestimmter Länder auszuschließen. Mit Hilfe von Ip2Country kann eine solche Sperre wie wir gesehen haben, auch ohne größeren Aufwand umgesetzt werden.