Best-club - портал хорошего настроения!
→◊ Библиотека ◊←
Меню сайта
  • Драмы
  • Ужасы
  • Фэнтези
  • Боевики
  • Мистика
  • Комедии
  • Триллеры
  • Мелодрамы
  • Фантастика
  • Мультфильмы
  • Приключения
  • Связь с админом
  • Список пользователей
  • Полная статистика сайта
  • ТОП наград
  • Переводчик
  • Конвертер величин
  • Проверка правописания
  • Раздача ICQ
  • Оставить отзыв о сайте
  • Раскрутка сайтов

  • Поиск по сайту
    Введите ключевое слово
    для поиска



    Статистика сайта




    ProfiSmart TOP webgari.com Рейтинг сайтов

    Каталог сайтов

    bodr_top
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Зарегистрировано:
    Всего: 1117
    Парней: 1070
    Девушек: 47
    Последний: molodoo

    Облако тегов
    Важная информация
    Главная » Статьи » Wap/Web Мастеру » PHP, Perl, ASP

    Преобразование IP адресов
    ip2int: Преобразование ip-адреса в число (которое можно хранить в PHP, помещать в MySQL и.т.д.) 

    int2ip: Преобразование числа в ip-адрес
    function int2ip($i) {
      $d[0]=(int)($i/256/256/256);
      $d[1]=(int)(($i-$d[0]*256*256*256)/256/256);
      $d[2]=(int)(($i-$d[0]*256*256*256-$d[1]*256*256)/256);
      $d[3]=$i-$d[0]*256*256*256-$d[1]*256*256-$d[2]*256;
      return "$d[0].$d[1].$d[2].$d[3]";
    }

    function ip2int($ip) {
      $a=explode(".",$ip);
      return $a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3];
    }

    Для чего надо преобразовать IP в число int ? Чтобы он занимал меньше места. IP в виде строки: "222.222.222.222" - 15 байт. В виде числа - 4
    байта. Это число можно писать в базу данных или переменную в PHP. В PHP 4 есть встроенные функции ip2long (аналог моей ip2int) и logn2ip, но
    они почему-то глючат (переводят ИП в отрицательные числа). Так что используйте мои, проверено - все работает на ура.
    Некоторые считают, что это не глюк, а фича. В любом случаее надо соблаюдать тип полей при вставке IP в базу: либo INT (для +/-),
    либо UNSIGNED INT (только +). 

    Если поняли смысл этой статьи, не забудьте сюда вернуться, т.к. хранить IP в виде строки - преступная :-) растрата ресурсов. 

    А еще можно переложить операции по переводу адресов на сам SQL. Запрос select INET_ATON("209.207.224.40") вернет соотвествующее число
    (3520061480). И наоборот, запрос select INET_NTOA(3520061480) вернет строку "209.207.224.40". SQL переведет IP/число намного быстрее, чем функция на PHP
    или встроенная ip2long. Разумеется, нужно не select'ы делать (отдельным запросом), а использовать приведенные SQL'ные функции прямо
    во время вставки/выборки.

    Категория: PHP, Perl, ASP | Добавил: Admin | Дата: 12.09.2009 | Просмотры: 1536 | Рейтинг:
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Вход на сайт
    Гость, добро пожаловать на best-club! Тапки в углу, пиво в холодильнике. Располагайся:) Для получения большего комфорта войди как пользователь или зарегистрируйся.



    Обмен музыкой [?]
    Открыть в новом окне

    Партнёры





    Опрос

    Вы впервые на нашем сайте?
    Всего ответов: 23

     
    Best-club team © 2008 - 2025

    SiteMap Партнёры и друзья Поддержать проект
    Третий Мир: Война Королей - Форум
    Администрация сайта не несёт ответственности за материалы опубликованные на сайте! Все материалы исключительно для ознакомления!
    Мини профиль