По IP.
PS теги css и html -- лишние
набросал пример:
(не пускает всех, кто не из вайтлиста стран, для блеклиста придётся немного переписать)
<?php
if ( !checkAccess() ) {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
die("<h1>404</h1>Not found");
}
function checkAccess()
{
$ip = getIP();
return isAllowedIP($ip);
}
function isAllowedIP($ip)
{
$allowed_countries = array("RU", "UA", "BY", "KZ"); //разрешённые страны
$ip_info = getIPInfo($ip);
return ( in_array($ip_info["countryCode"], $allowed_countries) || in_array($ip_info["country"], $allowed_countries) );
}
function getIPInfo($ip)
{
$json = file_get_contents("http://ip-api.com/json/".$ip);
return json_decode($json, true);
}
function getIP()
{
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
return $_SERVER["HTTP_CLIENT_IP"];
} else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
return $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
return $_SERVER["REMOTE_ADDR"];
}
}