책 한눈에 보기
항목 |
내용 |
도서명 |
Head First PHP&MySQL |
저자 |
린 베일리, 마이클 모리슨 |
키워드 |
PHP, MySQL, 웹 개발, 동적 페이지, 데이터베이스, 보안, 세션, 쿠키, 정규 표현식 |
“PHP와 MySQL의 결합은 정적인 웹에 생명을 불어넣는 핵심 기술이다.”
1. 딱딱한 페이지에 생명 불어넣기
- 순수 HTML로 만든 웹 페이지는 오직 정적인 정보만 제공하며, 내용 변경 시 직접 수정해야 함.
- PHP가 개입하면 서버에서 동적으로 HTML을 생성하여 사용자 맞춤 페이지를 제공할 수 있음.
- PHP 스크립트는 브라우저가 아닌 서버 환경에서 동작하며,
.php
확장자를 사용해야 실행됨.
- 변수명은 반드시
$
로 시작하며, mail()
함수를 통해 웹 양식 데이터를 이메일로 전송 가능.
- 이러한 구조 덕분에 사용자 입력, 서버 연산, 결과 반영이 하나의 흐름으로 처리됨.
2. MySQL 연결하기
CREATE DATABASE
와 CREATE TABLE
명령으로 데이터베이스와 테이블을 생성 가능.
- PHP와 MySQL을 연동하면 폼 데이터 전송 시 서버에서 자동으로 DB에 저장 가능.
- 연결 시에는 데이터베이스 주소, 사용자명, 비밀번호 등 접속 정보를 지정해야 함.
- PHP 내장 함수로 DB 연결, 쿼리 실행, 결과 반환이 이루어짐.
- 데이터 저장과 검색이 실시간으로 가능해져 동적인 서비스 구현이 가능함.
3. 현실적이고 실용적인 애플리케이션
!empty(변수)
는 변수가 비어있지 않음을, isset()
은 변수의 존재 여부를 확인함.
- 데이터 유효성 검증 시 두 함수를 적절히 조합하여 오류를 줄일 수 있음.
- 폼이 자기 자신을 참조하도록 하면 오류 발생 시 입력값이 유지되어 사용자 경험이 개선됨.
- 기본 키를 통해 각 데이터 행의 유일성을 보장하고,
WHERE
절을 사용해 안전한 삭제 가능.
- 이러한 기법은 데이터 무결성과 안정성을 확보하는 기본이 됨.
4. 파일에 저장된 데이터 사용하기
- 이미지는 DB에 직접 저장하기보다 파일로 저장하고 경로를 DB에 저장하는 것이 효율적임.
- 이 방식은 DB 부하를 줄이고 이미지 관리가 용이함.
$_SERVER['PHP_SELF']
는 현재 실행 중인 스크립트 경로를 반환하여 자기참조 폼 작성에 유용함.
$_FILES
배열은 업로드한 파일의 이름, 크기, 형식 등 세부 정보를 제공함.
- GET 방식은 URL로 데이터를 전달하지만, POST 방식은 폼 전송에 적합함.
5. 애플리케이션의 보안
- 관리자 페이지 보호를 위해 HTTP 인증을 활용하면 사용자명과 비밀번호를 요청할 수 있음.
- HTTP 인증은 헤더를 통해 인증 상태를 확인하고, 접근 권한을 제어함.
- 승인 링크를 두어 관리자가 승인 여부를 선택하도록 함으로써 불필요한 데이터 노출을 방지함.
trim()
함수로 입력 데이터의 앞뒤 공백을 제거하여 불필요한 오류를 줄임.
6. 개인화 웹 애플리케이션 제작하기
- 비밀번호는 암호화하여 저장하며, MySQL의
SHA()
함수는 단방향 해싱을 제공함.
- 쿠키는 클라이언트에 데이터를 저장하여 여러 페이지 간 데이터를 유지할 수 있음.
- 세션은 서버에 데이터를 저장하여 보안성을 높이며,
$_SESSION
배열로 접근 가능.
- 쿠키는 사용자 변경 가능성이 있어 완전한 신뢰가 어려운 반면, 세션은 서버에서 제어 가능함.
7. 문자열과 사용자 정의 함수
substr()
함수는 문자열 일부를 추출하며, 시작 위치와 길이를 지정할 수 있음.
%
를 포함한 LIKE
구문으로 특정 키워드가 포함된 모든 데이터를 검색 가능.
- 사용자 정의 함수로 반복되는 코드를 줄이고 유지보수를 쉽게 함.
switch-case
문은 조건 분기 시 유용하게 사용됨.
8. 정규 표현식
- 정규 표현식은 문자열 패턴을 정의하고, 입력 데이터와의 일치 여부를 검사함.
\d
, \w
, \s
등의 메타문자를 사용해 숫자, 문자, 공백 패턴을 지정 가능.
preg_match()
로 패턴 일치 여부를, preg_replace()
로 문자열 치환을 수행할 수 있음.
- 이를 통해 사용자 입력 데이터의 유효성을 강력하게 검증할 수 있음.
9. 데이터의 시각화, 그 이상
- CAPTCHA는 사용자가 사람인지 판별하는 이미지 기반 테스트임.
- GD 라이브러리는 동적으로 이미지를 생성·수정할 수 있는 PHP 함수 모음.
imagettftext()
로 원하는 폰트를 적용하여 이미지에 텍스트를 출력할 수 있음.
10. 배포와 웹 서비스
- RSS는 XML 기반 데이터 배포 방식으로, 사용자가 직접 웹사이트에 방문하지 않아도 콘텐츠를 받을 수 있음.
- PHP의
simplexml_load_file()
함수로 XML을 불러와 객체 형태로 처리 가능.
- RSS 포맷 변환 코드 작성 후에는 자동으로 구독자에게 배포됨.
마무리 생각
- PHP와 MySQL의 결합은 동적인 웹 서비스 구축의 핵심이며, 데이터 유효성 검증과 보안 설계가 필수임.
- 쿠키와 세션의 특성을 이해하고 상황에 맞게 선택하는 것이 중요함.
- Head First 시리즈의 직관적인 설명과 시각 자료가 학습 효율을 높여주었음.
💡 Quick Insight
- PHP는 서버 측 언어로서 동적 콘텐츠를 생성하고 DB와 상호작용함.
- MySQL은 데이터 저장·검색·관리에 최적화된 RDBMS임.
- 데이터 유효성 검증은 보안뿐 아니라 UX에도 직접적인 영향을 미침.
- 세션은 보안성이 높지만 서버 자원을 더 많이 사용함.
- 정규 표현식은 데이터 필터링의 강력한 도구임.