Проверка ip на вхождение в подсеть по маске в phpБывает так, что нужно обязательно проверить, пришел ли запрос с допустимого ip. Например при написании платежных модулей мы знаем, что запрос должен прийти с одного из банковских ip и нам обязательно нужно проверить этот ip, дабы исключить несанкционированный доступ злоумышленника. Когда у банка десяток заранее известных ip, решение сводится к банальной проверке if (in_array($ip, $ipArray)), но что делать, если таких ip может быть например 510? (реальный пример - банк Тинькофф присылает запросы с маски сети 91.194.226.0/23). В этом случае нужно проверять по маске.Я давно уже предпочитаю не изобретать велосипеды, а искать адекватные готовые решения и в этот раз тоже погуглил и нарыл отличное решение:protected function isCorrectIp($ip, $range): bool { list ($subnet, $bits) = explode('/', $range); if ($bits === null) { $bits = 32; } $ip = ip2long($ip); $subnet = ip2long($subnet); $mask = -1 << (32 - $bits); $subnet &= $mask; return ($ip & $mask) == $subnet; }Используем таким способом:if ( ! $this->isCorrectIp($ip, '91.194.226.0/23')) { $this->logWrite('wrong ip: '.$ip); die(); }ps. телеграм добавил возможность ставить реакции на посты, так что прошу использовать эту возможность, чтобы я понимал насколько интересна вам данная тема
Заметки программиста
@dev_blog
Блог fullstack php developer-аНемного о фрилансе, о саморазвитии, истории из жизни, интересные статьи про разработку и конечно же немного it юмора 😉Не забудь подписаться и включить уведомления.
Похожие каналы
Все →Последние посты

Привет, друзья! Стыдно, что совсем забил на блог, но так сложились обстоятельства. За это время много всего изменилось в моей жизни. Из глобального - переезд в другой город, другую страну. Теперь я живу в Питере и кайфую от этого города. После моего родного провинциального Тирасполя, тут я почувствовал себя живым😊 Ритм жизни совершенно иной, много интересного вокруг - красивые места, развлечения. Но есть и обратная сторона медали - расстояния.. Когда тебе куда-то нужно поехать, это занимает достаточно много времени. И этого времени постоянно не хватает. А писать сюда просто так, для галочки, или постоянно делиться контентом из других каналов - это не мое.За это время было много интересных проектов, постоянно приходится обучаться новому и расти. Не будешь следить за тенденциями - вылетишь нафиг с трассы😄 Из-за пандемии количество желающих войти в айти увеличилось, из-за чего увеличился и демпинг. А клиент не всегда понимает, чем час условного сеньора стоимостью за 2к отличается от часа джуна за 700 р. За этот год суммарное количество пользователей моих ботов переросло 100к и это очень радует! Вот так мое хобби начало приносить пассивный доход. Да немного, но по крайней мере окупается сервер и остаётся ещё на вкусняшки))Хочу всем пожелать в Новом 2022 году крепкого здоровья, имхо, сейчас это как никогда важно. А ещё желаю вам удачи и упорства! Двигайтесь к намеченной цели и все получится! Пусть в новом году жизнь станет хоть немного, но лучше, проще, легче, позитивнее. Пусть исполнятся заветные мечты. С наступающим Новым годом!🍾🍾🍾🎊🎊🎊🎄🎄🎄
Такими темпами скоро от программистов совсем откажутся 😁https://tproger.ru/news/ii-pomoshhnik-dlja-razrabotchikov-predstavila-microsoft/
Установка свежей версии Node.js за минутуБывает такое, что на сервере или в docker контейнере устанавливается старая версия Node.js, а для корректной работы скриптов нужна свежая. Так случилось и у меня - в docker по умолчанию ставилась 10я версия node, а нужна была минимум 12!После недолгого "гугления" нашел лучший, на мой взгляд, вариант, которым и решил поделиться. Для этого мы будем использовать утилиту nvm - Node Version Manager. Инструкцию пишу под linux. Итак, в консоли запускаем команду:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bashПосле этого устанавливаем желаемую версию node, например 14.17.0:nvm install v14.17.0В случае успеха мы увидим что-то вроде этого:Now using node v14.17.0 (npm v6.14.13)Вот и все) Теперь мы можем использовать свежую версию Node.js🤟
https://tproger.ru/news/opublikovan-spisok-iz-10-maksimalno-poleznyh-github-repozitoriev/
Чем занято место в linux?Рано или поздно любой человек сталкивается с тем, что места на его компьютере или сервере становится недостаточно. Хуже всего, когда это происходит на сервере с работающими сайтами)) Из-за нехватки места на сервере начинает отваливаться mysql, некорректно работают скрипты, начинают сыпаться многочисленные ошибки. В такие моменты нужно быстро найти в чем проблема и решить эту проблему. Для анализа занятого места в linux есть множество утилит, в том числе и графических. Но когда у нас нет места, а утилита еще не установлена - это становится проблемой. В моем случае сервер был занят на 98% и жутко лагал. Но эти свободные 2% мне дали возможность установить утилиту и провести анализ, затем почистить место.Утилита ncdu - очень маленькая, но при этом достаточно функциональная, чтобы провести анализ, пробежаться по дереву файлов и сразу в ней удалить лишнее! Вначале устанавливаем ее через консольДля Debian систем (rpm-пакеты) (в т.ч. Ubuntu) командой apt-get install ncduДля Red Hat систем (dpkg-пакеты) командой yum install ncduЗатем запускаем команду ncdu и ждем результатов анализа. Дальше при необходимости бегаем по дереву файлов/папок и смотрим где у нас то, что можно удалить. Удалить можно прямо в утилите, выделив нужный файл или папку и нажав на клавиатуре dВот список всех доступных команд:d — удалить выбранный файл или папку с файлами;n — отсортировать файлы и папки по имени;s — отсортировать файлы и папки по объему занимаемого места;t — показывать сначала папки, затем файлы;g — режим отображения (в процентах, графически, комплексно);a — режим отображения (размер файла, занятое место на жестком диске)e — включить/отключить отображение скрытых файлов;i — показать дополнительную информацию о папке или файле;r — заново пересчитать занимаемое место;q — выйти из программы;Программа очень удобная, простая и выполняет задачу по анализу и освобождению свободного места полностью, рекомендую ее к использованию! 👍
Когда я пытаюсь разобраться в коде, написанном позавчера.
Mail запустил прикольный сервис для совместного написания кода. Можно использовать без регистрации и писать на нескольких языках.Сервис поддерживает Python 3.8, Java 11, C++ 17, PHP 7.4, Node JS 14, Go 1.15, Erlang OTP 23, Rust 1.51 и Swift 5.3.3. Обещают добавить позже ещё больше языков.Подсветка синтаксиса кода, результат выполнения кода, вывод ошибок - удобно для проведения интервью👍https://interview.cups.online/
Часто для нормальной работы всяких парсеров, граберов, ботов нужны прокси, причем не какие-то бесплатные паблик прокси, а нормальные, которые будут стабильно работать. Для большинства сайтов хватает ipv6 прокси, которые стоят на порядок дешевле, чем ipv4.Я для этих целей использую proxy6.net, работаю с ними уже третий год и абсолютно доволен качеством и невысоким ценником. Российский IPv6 на месяц обойдется всего в 25.2 рублей! Это копейки на самом деле, учитывая сколько проблем решает использование прокси)) И кстати, по купону 8x1XPVCLQV можно получить 5% скидку на покупку новых прокси. Пользуйтесь на здоровье! 😊
Привет, друзья! Коллекция моих ботов пополнилась очередным музыкальным ботом @imuzzbot. Вот за что я люблю телеграм - так это за всё😁 И общаться в нем удобно, и стикеры зачётные, и ботов делать одно удовольствие. Боты телеграм для меня наверное больше как хобби, заработка на них почти нет, так на оплату сервера и на пиво с рыбкой. Но я испытываю огромный кайф от того, что ими пользуются десятки тысяч человек. Кайф от того, что моя работа несёт какую-то пользу для других людей. В конце концов не все в этом мире только про деньги😉 Нужно что-то делать и для общества.Поэтому стараюсь всегда делать ботов максимально простыми и удобными, без лишнего функционала, который будет вводить в заблуждение пользователей или тормозить работу.
Хорошая шпаргалка по PHP
https://dev.to/rickavmaniac/my-beloved-php-cheat-sheet-7dl

Памятка для заказчиков 😁
Про "войтишников"В последнее время все чаще сталкиваюсь с людьми, которые идут в IT только ради денег. Сейчас очень популярно стало «войти в айти». Огромное количество бесплатных и платных курсов, предлагающих за 2 часа стать гуру программирования, только подогревают интерес новичков.Вот только есть один маааленький нюанс, хотя если разобраться, не один.. Но для начала, вам должно это нравиться! Если вы хотите войти в айти только из-за денег - ничего из этого не получится)) Вы потратите время, нервы и бросите это дело. Те, кто говорят, что зарабатывать программистом легко - врут. Мозг настолько устает, что иногда уже перестаешь понимать где реальность.. А ещё, в зависимости от сферы IT, нужно обладать определенными качествами. Если вы хотите стать программистом - нужно иметь математический склад ума, уметь анализировать, прогнозировать, продумывать различные варианты возможных ситуаций. Если решите стать дизайнером - нужно обладать хорошим вкусом, следить за трендами и вообще быть творческим человеком. И тд. и тп...И запомните, деньги в айти есть, но до них нужно дорасти, как и в любой другой сфере. А если вам кто-то обещает чудо курс, после которого вы начнёте получать тысячи $ - вас тупо разводят 😁 В начале своей карьеры я делал работу и бесплатно, ради опыта, дополнительно зарабатывая положительные отзывы от довольных клиентов. Я очень любил то, что делаю и это очень помогло мне в профессиональном росте. Удачи вам, друзья, и занимайтесь тем, что вам нравится! 😉