Скриптик
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- рядовой
- Сообщения: 30
- Зарегистрирован: 2008-05-07 19:42:18
- Контактная информация:
Скриптик
Всем привет! Помогите пожалуйста скриптиком.
Нужно чтобы скриптик инклудил хтмлку из файла в страницу, если у юзера который пришёл на эту страницу IP-адрес любой, кроме 10.0.0.0 192.168.0.0.
Долго искал, но так и не осилил.
Спасибо!
Нужно чтобы скриптик инклудил хтмлку из файла в страницу, если у юзера который пришёл на эту страницу IP-адрес любой, кроме 10.0.0.0 192.168.0.0.
Долго искал, но так и не осилил.
Спасибо!
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- рядовой
- Сообщения: 30
- Зарегистрирован: 2008-05-07 19:42:18
- Контактная информация:
Re: Скриптик
всё-таки осилил.
вот что у меня получилось:
вот что у меня получилось:
Код: Выделить всё
<?
function getip()
{
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
$ip = getenv("HTTP_CLIENT_IP");
elseif (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
elseif (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
elseif (!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
function ip_vs_net($ip,$network,$mask){
if (((ip2long($ip))&(ip2long($mask)))==ip2long($network)){
return 1;
}else{
return 0;
}
}
$ipn = getip();
if (ip_vs_net("$ipn","10.0.0.0","255.0.0.0")){
print "con<BR>";
} elseif (ip_vs_net("$ipn","72.16.0.0","255.255.0.0")){
print "con<BR>";
} elseif (ip_vs_net("$ipn","192.168.0.0","255.255.255.0")){
print "con<BR>";
} else {
print "nocon<BR>";
}
?>
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Скриптик
в пхп нет беззнакового целого числа, поэтому всё не так радужно как бы тебе хотелосьdrill писал(а):(ip2long($ip))&(ip2long($mask)
Код: Выделить всё
var_dump(ip2long('127.255.255.255'));
var_dump(ip2long('128.0.0.0'));
---------------
int(2147483647)
int(-2147483648)
Код: Выделить всё
var_dump(sprintf('%u', ip2long('127.255.255.255')));
var_dump(sprintf('%u', ip2long('128.0.0.0')));
---------------
string(10) "2147483647"
string(10) "2147483648"
Ну это так, небольшой ликбез

-
- рядовой
- Сообщения: 30
- Зарегистрирован: 2008-05-07 19:42:18
- Контактная информация:
Re: Скриптик
не совсем понял, мой скриптик работает или нет?
как сделать чтобы он работал правильно?
этот я составил из двух кусков других скриптов которые нашёл с помощью гугла
как сделать чтобы он работал правильно?
этот я составил из двух кусков других скриптов которые нашёл с помощью гугла
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Скриптик
скажи, а чего тебе надо добиться?
-
- рядовой
- Сообщения: 30
- Зарегистрирован: 2008-05-07 19:42:18
- Контактная информация:
Re: Скриптик
есть сайт, у которого 80% посетителей из сетки, и 20% из инета. Хочу повесить на сайт контекстную рекламу, но хочу показывать её только тем кто из инета. Тем кто из сетки рекламу показывать не хочу.
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Скриптик
гуд, ща чего-нить подмахнём 

-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Скриптик
Код: Выделить всё
<?
function applyNetMask($ip, $mask)
{
if ( is_string($ip ) ) $ip = ip2long($ip );
if ( is_string($mask) ) $mask = ip2long($mask);
return long2ip(sprintf('%u', $ip & $mask));
}
function isLocalIp( $ip )
{
if ( '192.168.0.0' === applyNetMask($ip, '255.255.0.0') ) return true;
if ( '10.0.0.0' === applyNetMask($ip, '255.0.0.0' ) ) return true;
if ( '127.0.0.0' === applyNetMask($ip, '255.0.0.0' ) ) return true;
if ( '72.16.0.0' === applyNetMask($ip, '255.255.0.0') ) return true;
return false;
}
echo '<pre>';
echo '192.168.56.12 is ', isLocalIp('192.168.56.12') ? 'local' : 'world', PHP_EOL;
echo '127.123.41.21 is ', isLocalIp('127.123.41.21') ? 'local' : 'world', PHP_EOL;
echo '79.45.67.12 is ', isLocalIp('79.45.67.12' ) ? 'local' : 'world', PHP_EOL;
echo '10.23.42.122 is ', isLocalIp('10.23.42.122' ) ? 'local' : 'world', PHP_EOL;
?>
-----------------------------------------
192.168.56.12 is local
127.123.41.21 is local
79.45.67.12 is world
10.23.42.122 is local

-
- рядовой
- Сообщения: 30
- Зарегистрирован: 2008-05-07 19:42:18
- Контактная информация:
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Скриптик
Гм... даж статью небольшую накидал, чтоб не потерять -))) http://anton-pribora.ru/articles/php-net-mask/
хотя там инфы, по идее, вагон и маленькая тедежка с этими ip
хотя там инфы, по идее, вагон и маленькая тедежка с этими ip
- Alex Keda
- стреляли...
- Сообщения: 35418
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Скриптик
а я на php.net в камментах функцию нашёл...zg писал(а):Гм... даж статью небольшую накидал, чтоб не потерять -))) http://anton-pribora.ru/articles/php-net-mask/
хотя там инфы, по идее, вагон и маленькая тедежка с этими ip
немного универсальней:
Код: Выделить всё
function net_match($network, $ip) {
// determines if a network in the form of 192.168.17.1/16 or
// 127.0.0.1/255.255.255.255 or 10.0.0.1 matches a given ip
$ip_arr = explode('/', $network);
$network_long = ip2long($ip_arr[0]);
$x = ip2long($ip_arr[1]);
$mask = long2ip($x) == $ip_arr[1] ? $x : 0xffffffff << (32 - $ip_arr[1]);
$ip_long = ip2long($ip);
// echo ">".$ip_arr[1]."> ".decbin($mask)."\n";
return ($ip_long & $mask) == ($network_long & $mask);
}
Убей их всех! Бог потом рассортирует...
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: Скриптик
жестоко... -))) но если маска будет больше 32, то будет фигня.lissyara писал(а):long2ip($x) == $ip_arr[1] ?
- Alex Keda
- стреляли...
- Сообщения: 35418
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Скриптик
когда будет - тогад перепишется.
на данный момент я живьём их не видел, хотя по слухам на каналах уже внедряют....
на данный момент я живьём их не видел, хотя по слухам на каналах уже внедряют....
Убей их всех! Бог потом рассортирует...