#PHP

9개의 글
개발

정규표현식, 외우지 말고 조합하세요 — grep·PHP 실전 패턴

금요일 저녁, 고객사에서 회원 5만 명의 연락처 파일이 도착했습니다. 열어 보니 `010-1234-5678`, `010 1234 5678`, `01012345678`, `+82-10-1234-5678`이 뒤죽박죽 섞여 있습니다. "이걸 언제 다 손으로 고치지..." 이럴 때 30분이면 끝나는 도구가 정규표현식입니다. 정규표현식(Regular Expressi...

2026.07.12 · 읽기 4분 · 조회 1,250
정규표현식, 외우지 말고 조합하세요 — grep·PHP 실전 패턴
개발

PHP 시간이 9시간 어긋날 때 — 시간대(timezone) 제대로 잡기

"분명 방금 글을 올렸는데 작성 시간이 9시간 전으로 찍혀요." PHP로 웹을 만들다 보면 한 번쯤 마주치는 황당한 버그다. 기능은 멀쩡한데 시간만 어긋난다. 범인은 십중팔구 ==시간대(timezone)== 설정이다. 오늘은 PHP와 MySQL 사이에서 시간이 꼬이는 이유와, 깔끔하게 맞추는 방법을 실무 관점에서 정리한다. 왜 9시간이 어긋날까 PHP의 기...

2026.06.30 · 읽기 1분 · 조회 841
PHP 시간이 9시간 어긋날 때 — 시간대(timezone) 제대로 잡기
개발

한글이 ???로 깨졌다면 — MySQL utf8mb4, 진짜 원인은 따로 있다

분명히 잘 들어가던 한글 데이터가 어느 날 갑자기 `???`나 `한글` 같은 외계어로 바뀌어 보인 적 있으신가요. 게시판에 글을 쓰면 멀쩡한데, 터미널에서 덤프를 떴다가 다시 넣으면 죄다 깨지는 상황. 많은 개발자가 여기서 "테이블 문자셋을 utf8로 바꿨는데 왜 안 되지?"라며 몇 시간을 날립니다. > 한글 깨짐의 90%는 파일이 잘못된 게 아니라...

2026.06.25 · 읽기 6분 · 조회 638
한글이 ???로 깨졌다면 — MySQL utf8mb4, 진짜 원인은 따로 있다
개발

예약 글이 9시간 일찍 올라간 날 — PHP 타임존, 한 번에 이해하기

밤 11시에 예약해 둔 글이 있었습니다. 다음 날 오전 9시에 자동으로 올라가도록 맞춰 뒀죠. 그런데 아침에 일어나 보니 글은 이미 새벽에 올라가 있었고, 방문자 통계도 엉망이었습니다. 코드를 백 번 봐도 시간 계산에는 문제가 없었어요. 범인은 코드가 아니라 ==서버의 시간대(timezone) 설정==이었습니다. > 시간 버그의 90%는 '계산'이 아니라 ...

2026.06.24 · 읽기 6분 · 조회 963
예약 글이 9시간 일찍 올라간 날 — PHP 타임존, 한 번에 이해하기
개발

PHP mysqli, 문자열 이어붙이기 대신 prepared statement로 SQL 인젝션 막기

사용자 입력을 SQL에 직접 이어붙이면 SQL 인젝션에 노출된다. 결론부터 말하면 mysqli의 prepared statement(준비된 쿼리) 를 쓰면 값과 쿼리 구문이 분리되어 대부분의 인젝션을 원천 차단할 수 있다. 위험한 코드 ```php // 절대 이렇게 쓰지 말 것 $id = $_GET['id']; $sql = "SELECT FROM member...

2026.06.24 · 읽기 2분 · 조회 1,253
PHP mysqli, 문자열 이어붙이기 대신 prepared statement로 SQL 인젝션 막기
개발

날짜 계산만 하면 하루가 어긋나던 이유 — PHP DateTime 제대로 쓰기

"7일 뒤"를 계산했는데 결과가 하루씩 밀린 적, 한 번쯤 있으시죠? 저는 회원 쿠폰 만료일을 `strtotime`과 문자열로 대충 계산했다가, 월말과 윤년에서 보기 좋게 틀렸습니다. PHP에서 날짜를 안전하게 다루는 길은 생각보다 단순합니다. ==`DateTime` 클래스== 하나만 손에 익히면 됩니다. > 날짜는 '문자열'이 아니라 '객체'로 다뤄야 실...

2026.06.23 · 읽기 4분 · 조회 1,385
날짜 계산만 하면 하루가 어긋나던 이유 — PHP DateTime 제대로 쓰기
개발

PHP headers already sent 오류, 원인 3가지와 해결 (BOM·닫는태그·세션)

PHP에서 가장 자주 만나는 오류 중 하나가 `Warning: Cannot modify header information - headers already sent`다. 결론부터 말하면, HTTP 헤더(쿠키·세션·리다이렉트)를 보내기 전에 이미 본문(HTML, 공백, 출력)이 먼저 전송되었기 때문이다. 원인을 알면 대부분 1분 안에 해결된다. 왜 발생하나 H...

2026.06.23 · 읽기 3분 · 조회 1,572
PHP headers already sent 오류, 원인 3가지와 해결 (BOM·닫는태그·세션)
개발

MySQL 한글 깨짐, utf8mb4로 해결하는 순서 (PHP/임포트 포함)

MySQL에 한글을 저장했는데 글자가 `???` 나 깨진 문자로 보인 적 있으신가요? 원인은 대부분 문자셋(charset) 불일치입니다. 한 군데만 어긋나도 깨집니다. 이 글에서 어디를 맞춰야 하는지 순서대로 정리합니다. 결론부터: utf8 말고 utf8mb4 MySQL의 `utf8`은 사실 최대 3바이트만 저장하는 반쪽짜리라 이모지·일부 한자에서 문제가 ...

2026.06.23 · 읽기 3분 · 조회 1,060
MySQL 한글 깨짐, utf8mb4로 해결하는 순서 (PHP/임포트 포함)
개발

PHP require_once Failed opening required 오류, ROOT_PATH 경로 설계로 해결하기

PHP로 프로젝트를 만들다 보면 거의 한 번은 마주치는 오류가 있습니다. ``` Warning: require_once(.../config/config.php): failed to open stream: No such file or directory Fatal error: require_once(): Failed opening required '.../co...

2026.06.23 · 읽기 4분 · 조회 1,860