PHP
기본 정보
- 이름: PHP
- 원래 명칭: Personal Home Page
- 현재 의미: PHP: Hypertext Preprocessor
- 분류: 서버 사이드 스크립트 언어
- 주요 용도: 웹 개발, 백엔드 개발, CMS, 게시판, 쇼핑몰
- 관련 주제: #PHP #백엔드 #웹개발 #서버 #프로그래밍언어
개요
PHP는 웹 개발에 특화된 서버 사이드 프로그래밍 언어이다.
HTML 안에 PHP 코드를 삽입하여 동적 웹페이지를 만들 수 있으며, 데이터베이스와 연동해 게시판, 회원 시스템, 쇼핑몰, 관리자 페이지 등을 구현하는 데 많이 사용된다.
공식 PHP 사이트에서는 PHP를 “웹 개발에 특히 적합한 범용 스크립트 언어”라고 설명한다.
주요 특징
- 서버에서 실행됨
- HTML과 함께 사용하기 쉬움
- MySQL/MariaDB와 자주 함께 사용됨
- 문법이 비교적 단순함
- 웹호스팅 환경에서 지원이 넓음
- WordPress, 그누보드, XE, Drupal 등에서 사용됨
- 빠른 개발과 유지보수에 적합함
기본 문법
<?php
echo "Hello, PHP!";
?>
변수
$name = "구름";
$age = 30;
echo $name;
PHP 변수는 $ 기호로 시작한다.
조건문
if ($age >= 20) {
echo "성인입니다.";
} else {
echo "미성년자입니다.";
}
반복문
for ($i = 1; $i <= 5; $i++) {
echo $i;
}
배열
$fruits = ["apple", "banana", "orange"];
echo $fruits[0];
연관 배열
$user = [
"name" => "구름",
"role" => "developer"
];
echo $user["name"];
함수
function add($a, $b) {
return $a + $b;
}
echo add(3, 5);
폼 처리
$name = $_POST['name'] ?? '';
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
사용자 입력값을 출력할 때는 XSS 방지를 위해 htmlspecialchars()를 사용하는 것이 좋다.
데이터베이스 연동
PHP는 MySQL, MariaDB와 자주 함께 사용된다.
$pdo = new PDO(
"mysql:host=localhost;dbname=test;charset=utf8mb4",
"user",
"password"
);
실무에서는 mysqli보다 PDO를 사용하는 경우가 많다.
보안 주의사항
- SQL Injection 방지
- XSS 방지
- CSRF 방지
- 파일 업로드 검증
- 비밀번호 해시 처리
- 관리자 권한 체크
- 세션 보안 관리
비밀번호 해시
$hash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify($password, $hash)) {
echo "로그인 성공";
}
비밀번호는 직접 암호화 알고리즘을 만들기보다 password_hash()와 password_verify()를 사용하는 것이 안전하다.
PHP가 많이 쓰이는 곳
주요 프레임워크
- Laravel
- Symfony
- CodeIgniter
- CakePHP
- Slim
PHP와 함께 쓰이는 기술
장점
- 웹 개발 진입 장벽이 낮음
- 국내 웹호스팅 환경에서 지원이 좋음
- 게시판·쇼핑몰 개발에 적합함
- WordPress, 그누보드 등 실무 활용 사례가 많음
- 작은 기능을 빠르게 개발하기 좋음
단점
- 오래된 코드에서는 보안 취약점이 발생하기 쉬움
- 프로젝트 구조가 무너지기 쉬움
- 레거시 코드가 많은 편
- 최신 백엔드 언어에 비해 이미지가 오래된 언어처럼 인식되기도 함
실무 메모
PHP를 사용할 때는 다음을 기본으로 잡는 것이 좋다.
- PHP 8.x 이상 사용
- 문자셋은
utf8mb4 - DB 연결은 PDO 권장
- 입력값 검증 필수
- 출력값 이스케이프 필수
- 관리자 기능은 권한 체크 필수
- 파일 업로드는 확장자와 MIME 타입 검증
- 에러 메시지는 운영환경에서 숨김 처리
관련 문서
출처
- PHP 공식 홈페이지
- PHP 공식 매뉴얼
- 위키백과 「PHP」