<MyRusakov.ru />

Профессиональная Web-разработка. Дизайн, код и автоматизация

Профессиональная Web-разработка. Дизайн, код и автоматизация

Это очень подробный курс из разряда "всё включено". Разбираются следующие темы: HTML, CSS, SCSS, JavaScript, PHP, SQL, Laravel, Nginx, PostCSS, npm, Vite, Vitest, Composer, PHPUnit, Prettier, Stylelint, ESLint, Pint, Larastan, Git, Agile, Scrum, Docker, Supervisord, Figma, Stitch AI, Confluence, Jira.

Рассчитан и на новичков, и на тех, кто уже знаком с основами, но хочет освоить полный цикл разработки.

Помимо самой теории, Вы увидите пример создания Web-проекта на 20 000 строк кода: от идеи и документации на Confluence через планирование на Jira, fullstack-разработку до деплоя на VPS.

Помимо уроков, курс содержит упражнения для закрепления знаний и финальное тестирование. А ещё Вы получите 5 полноценных Бонусных курсов: «GitLab под ключ», «Вёрстка сайта с нуля 2.0», «JavaScript с Нуля до Гуру 2.0», «PHP и MySQL с Нуля до Гуру 3.0» и «Laravel от А до Я».

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Получение данных об IP-адресе в Laravel

Получение данных об IP-адресе в Laravel

Доброго времени суток! Сегодня мы рассмотрим с Вами как получить данные об IP-адресе (страна, регион, провайдер) из логов веб-сервера. В данном случае логи веб-сервера уже занесены в базу, поэтому остается только написать скрипт, которые эти данные будет возвращать. Для анализа IP-адресов мы будем использовать сервис ipinfo, (50 тыс. бесплатных запросов в месяц).

Код метода контроллера:


public function getUsersIpInfo()
{

    $sql = "
        select 
            distinct 
                l.id,
                l.ip
        from webserver_logs l
        order by l.ip
    ";

    // делаем запрос в базу и полученный массив превращаем в коллекцию Laravel
    $rows = collect(DB::select($sql));

    // создаем контекст выполнения http-запроса
    $context = stream_context_create([
        'http' => [
            'timeout' => rand(1, 2),
        ]
    ]);

    // данная функция выполняет запрос на сервер и декодирует полученные JSON-данные
    $resp = file_get_contents(
        "https://ipinfo.io/$ip?token={ВАШ_АПИ_КЛЮЧ}", 
        false, $context
    );
    $getIpInfo = fn($ip) => json_decode($resp);

    // проходимся по списку полученных адресов и декодируем их в понятный формат
    return $rows->map(static function ($row) use ($getIpInfo) {
        $row->ip = $getIpInfo($row->ip);
        return $row;
    });
}

Примерный результат:


{
    "1.1.1.1": {
        "ip": "1.1.1.1",
        "hostname": "one.one.one.one",
        "anycast": true,
        "city": "Los Angeles",
        "region": "California",
        "country": "US",
        "loc": "34.0522,-118.2437",
        "org": "AS13335 Cloudflare, Inc.",
        "postal": "90076",
        "timezone": "America/Los_Angeles"
    },
    "8.8.8.8": {
        "ip": "8.8.8.8",
        "hostname": "dns.google",
        "anycast": true,
        "city": "Mountain View",
        "region": "California",
        "country": "US",
        "loc": "37.4056,-122.0775",
        "org": "AS15169 Google LLC",
        "postal": "94043",
        "timezone": "America/Los_Angeles"
    }
}

Вот таким образом можно получить данные об IP-адресе для последующего анализа, и при необходимости, блокировки, например.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (https://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: https://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: https://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.