반응형

World Wide Web 6

[SQL] CIDR 목록 검색 예제(IPv4)

위키 엔진을 만들던 중 CIDR 차단 기능을 구현해야 하는데, 이걸 어찌할지 몰라 한참 고민하고 있었다. PHP 상에서 처리를 해야 하나 고민했지만 해답은 SQL에서 찾을 수 있었다. 문제 상황 나는 MariaDB를 운용하고 있었고, 테이블의 각 행에는 차단 대상으로 지정된 CIDR들이 등록되어 있었다. | id | target_ip | |—-|——————| | 1 | 1.2.3.4/32 | | 2 | 123.45.67.0/24 | | 3 | 123.45.0.0/16 | | 4 | 0.0.0.0/1 | 그리고 쿼리를 통해 접속한 IP가 차단 대상에 해당하는지 확인해야 한다. 그래서 특정 IP 주소를 포함하는 CIDR이 테이블 안에 있는지를 살펴야 한다. 검색 끝에 아래와 같은 쿼리를 찾았다. 원래는 CI..

World Wide Web 2021.06.21

[PHP] mbstring 없이 한글 문자열 다루기

보통 PHP에서 한글 글자수를 센다던가, substr을 통해 자른다던가, 한글자씩 분리한다던가 할 때 php-mbstring 확장을 사용한다. 만약 자신이 만들고 있는 PHP 앱이 빠른 속도를 요구한다면, mbstring 확장을 떨쳐 내는 것은 이를 위한 좋은 방법이 될 수 있다. 실제로 해외의 여러 커뮤니티에서도 mb_strlen() 등은 매우 느리다고 이야기하고 있고, 그래서 구글링 끝에 얻은 대안 두 개를 소개한다. 1. iconv_ php-iconv 모듈에 속해 있는데 대부분 내장이라 뭘 따로 설치할 필요는 없다.

[PHP 8] 시작과 끝 문자열 확인하기 - str_starts_with(), str_ends_with()

javascript에는 .startsWith()와 .endsWith() 라는 함수가 각각 시작과 끝 문자열을 반환해주는 기능을 한다. 그런데 PHP에는 이게 없어서 직접 기능을 구현해야 했다. 이 함수는 PHP 8에서 새롭게 추가된 기능인데, 문자열이 특정 문자로 시작하거나 끝나는지의 여부를 bool 형태로 반환한다. str_starts_with( string $haystack, string $needle ) str_ends_with( string $haystack, string $needle ) // 예제 $a = 'abcdefghi'; if(str_starts_with($a, 'a')){ echo 'Starts with a.'; }else{ echo 'NOT Starts with a.'; } if(s..

무료 DNS(네임서버) 소개 - DNSZi, LuaDNS

처음 웹 개발을 시작한 이후, 도메인 관리를 위해 오랫동안 무료 서비스인 DNSZi를 써 왔다. 이후, CAA 레코드와 DNSSEC 등을 적용할 마음이 생겨 AWS Route53이나 Cloudflare, DigitalOcean, Linode 등을 전전하다가 LuaDNS라는 곳을 찾게 되었다. 그래서 내가 지금까지 애용하고 있는(혹은 있던) 두 서비스를 소개하고자 한다. 1. DNSZi https://dnszi.com

World Wide Web 2021.01.09

PHP Lecture 2 - 변수

이번 글의 주제는 '변수'입니다. '변수'란 '어떤 관계나 범위 안에서 여러 가지 값으로 변할 수 있는 수'를 뜻합니다. (네이버 사전) 이제 PHP 상에서의 변수에 대해 알아보겠습니다. 1. 변수 선언 $variable = 'value'; $변수명 = '값'; 과 같이 새로운 변수를 선언할 수 있습니다. 2. 변수 재정의 1에서 설명드렸던 방법과 같이 $변수명 = '재정의 값'; 을 통해 변수를 재정의할 수 있습니다. 이렇게 하면 변수의 값이 변경됩니다. 3. 변수명 변수에 대해 짚고 넘어가야 할 점 중 하나는 변수명에 제약이 있다는 것입니다. 아래와 같은 이름의 변수는 사용할 수 없습니다. // 변수명에 숫자 사용 불가 $12345 = '12345'; // 변수명에 +, - 등의 연산자와 . , @ ..

PHP Lecture 1 - 시작

PHP란 무엇인가? 이 질문으로 시작해 보겠습니다. PHP는 웹 분야에서 주로 쓰이는 프로그래밍 언어의 하나로, 원래 Perseonal Home Page Tools의 약자로, 현재는 PHP - Hypertext Preprocessor 의 약자로 사용하고 있습니다. 이 언어는 TIOBE에서 선정한 2020년 10월 기준 검색어 점유율 상위 20개 프로그래밍 언어 중 8위를 차지했습니다. PHP의 주 특징 중 하나는 바로 서버 사이드 언어라는 것입니다. 본 블로그에서는 현재 최신 버전인 PHP 7.4를 기준으로 포스팅을 작성할 예정입니다. PHP 시작하기 웹 서버에서 PHP를 사용하기 위해서는 서버에 PHP가 설치되어 있어야 합니다. Ubuntu 20.04 / NGINX 기준으로 설명하겠습니다. NGINX는..

반응형