Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Авторизация IP с маской.


Автор: Dima85 2.1.2010, 12:31
Есть такая конструкция:
Тоесть если IP из списка зашел на сайт появляется сообщение ОК.
Код

$config_range_ip = "61.105.202.109,81.254.61.18"; // 
$ip_user = $_SERVER['REMOTE_ADDR'];

if (in_array($ip_user,explode(",",$config_range_ip))) {
    $message = "ОК";}
}


Помогите немного усовершенствовать его. Тоесть если в списке есть *
Пример:
Код

$config_range_ip = "61.105.202.*,81.254.61.18"; // 


Значит надпись "ОК" должна появляться при входе любых IP начинающихся с 61.105.202.

Автор: bars80080 2.1.2010, 13:02
Код

    function compareip($ip, $ar) {
        $ex = explode('.', $ip.'');
        foreach($ar as $aq) {
            $ap = explode('.', $aq.'');
            $fg = true;
            for($i = 0; $i < 4; $i++) { if($ap[$i] != '*' && $ap[$i] != $ex[$i]) { $fg = false; break; }}
            if($fg) { return true; }
        }
        return false;
    }

$ip = getenv('REMOTE_ADDR');
$allowIP = array('61.105.202.*','81.254.61.18');

compareip($ip, $allowIP)

Автор: Dima85 2.1.2010, 15:43
Как-то все сложно. А проще конструкций не существует?  smile 

Автор: Ипатьев 2.1.2010, 16:21
Чтобы писать конструкции попроще, надо очень много знать.
Такие люди почти не ходят на форум.

К примеру, некоторые знают, что IP адрес - это, на самом деле, число...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)