Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] [PHP] Доступ по диапазону IP - как?

Ответить
Настройки темы
[решено] [PHP] Доступ по диапазону IP - как?
D_Master


Сообщения: n/a

Профиль | Цитировать


Изменения
Автор: D_Master
Дата: 08-01-2009
Описание: не маска, а диапазон))
Всем привет!

Помогите пожалуйста: есть диапазон IP-адресов, можно ли каким-нибудь PHP-скриптом разрешить доступ к сайту только с этих IP? Использование MySQL не желательно

Отправлено: 13:37, 08-01-2009

 

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Маска IP-адресов - это типа 255.255.255.0? Или имеется в виду диапазон адресов?
Пример можно?

Отправлено: 14:00, 08-01-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

D_Master


Сообщения: n/a

Профиль | Цитировать


Цитата Coutty:
имеется в виду диапазон адресов? »
Coutty, ох, тупанул, да, диапазон
Вот с этих диапазонов нужно разрешить доступ, а со всех остальных - запретить.
читать дальше »
Код: Выделить весь код
62.33.83.0 - 62.33.83.255
62.33.133.0 - 62.33.133.255
83.234.84.0 - 83.234.86.255
83.234.120.0 - 83.234.123.255
87.103.160.0 - 87.103.167.255
90.188.32.0 - 90.188.63.255
92.124.192.0 - 92.124.223.255
92.126.128.0 - 92.126.129.255
92.126.132.0 - 92.126.135.255
212.0.64.0 - 212.0.95.255

Отправлено: 14:27, 08-01-2009 | #3


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

// я точно не помню, как в php массивы делаются. Кажется так.

// 1 и 2 цифры - 1 и 2 октеты адреса. 3 цифра - нижняя граница диапазона третьего октета, 4 цифра - верхняя граница диапазона 3 октета. 4 октет адреса не рассматриваем, т.к. он роли не играет.
$allowed = [
   [
62338383],
   [
6233133133],
   [
832348486],
   [
83234120123],
   [
87103160167],
   [
901883263],
   [
92124192223],
   [
92126132135],
   [
21206495]
];

$addr $_SERVER["REMOTE_ADDR"]; // получаем адрес клиента
$addr explode("."$addr); // разбиваем по октетам. Можно было объединить с 1 строкой.
for ($i 0$i count($allowed); $i++)
   {
   
// проверяем совпадение первого и второго октетов и находится ли третий октет в интервале от "3" до "4" элемента в массиве
   
if ($addr[0] == $allowed[$i][0] && $addr[1] == $allowed[$i][1] && $addr[2] >= $allowed[$i][2] && $addr[3] <= $allowed[$i][4]) 
      {
      
$access 'granted';// если совпало, даём доступ
      
break;
      }
   }

if (
$access != 'granted') exit ("Не пущу!");

// а дальше код, который для избранных 

Может быть есть и более простой путь, но мне он неизвестен)

Отправлено: 15:09, 08-01-2009 | #4

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


D_Master,
ну так просто надо брать
PHP код: Выделить весь код

$_SERVER['REMOTE_ADDR'

и сравнивать с нужными диапазонами,
(для преобразования адресов к цифрам используем ip2long).
А дальше поступаете, как при неверном пароле - например redirect куда-нибудь в безопасное место.

написала, не видя кода Coutty
(но с ip2long - проще )
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:13, 08-01-2009 | #5

D_Master


Сообщения: n/a

Профиль | Цитировать


Цитата mar:
ну так просто надо брать
Код: Выделить весь код
$_SERVER['REMOTE_ADDR']
и сравнивать с нужными диапазонами, »
Цитата mar:
(но с ip2long - проще ) »
mar, извините, не могли бы вы показать пример?

Отправлено: 15:52, 08-01-2009 | #6


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

function test_IP()

{
    
$IPs_arr = array
    (
        array(
'62.33.83.0',        '62.33.83.255'),
        array(
'62.33.133.0',        '62.33.133.255'),
        array(
'83.234.84.0',        '83.234.86.255'),
        array(
'83.234.120.0',    '83.234.123.255'),
        array(
'87.103.160.0',    '87.103.167.255'),
        array(
'90.188.32.0',        '90.188.63.255'),
        array(
'92.124.192.0',    '92.124.223.255'),
        array(
'92.126.128.0',    '92.126.129.255'),
        array(
'92.126.132.0',    '92.126.135.255'),
        array(
'212.0.64.0',        '212.0.95.255')
    );

    
$my_ip2long = @ip2long($_SERVER['REMOTE_ADDR']);

    foreach(
$IPs_arr as $IPs)
    {
        if
        (
            
$my_ip2long >= @ip2long($IPs[0]) &&
            
$my_ip2long <= @ip2long($IPs[1])
        )

        return 
true;
    }

    exit(
'здесь вам не тут!');
}

test_IP(); 

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:45, 08-01-2009 | #7

D_Master


Сообщения: n/a

Профиль | Цитировать


Sham, спасибо вам огромное!!! Все работает, цветет и пахнет

Отправлено: 19:45, 08-01-2009 | #8



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] [PHP] Доступ по диапазону IP - как?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Apache 2.2.8 + Php 5.2.6 + MySQL 5.0.51b (win) - не работает php v0f41k Вебмастеру 4 11-05-2008 22:08
MySQL - [решено] Как связать PHP и MYSQL Wasilij Программирование и базы данных 16 15-08-2007 10:37
[решено] как в PHP удалить сразу целое дерево папок? Vlad Drakula Вебмастеру 2 24-06-2006 13:57
[решено] как прочитать весь текстовый файл целиком? (в PHP) Vlad Drakula Вебмастеру 2 24-06-2006 13:51
Как в ZoneAlarm открыть доступ в сеть но закрыть доступ в инет kazarkin Защита компьютерных систем 1 04-01-2006 15:53




 
Переход