목차
제1부 기초 다지기
제1장 설치 가이드 = 27
리눅스ㆍ유닉스에서의 설치 = 28
MySQL 설치하기 = 28
Apache 설치하기 = 29
PHP 설치하기 = 30
Windows에서의 설치 = 31
MySQL 설치하기 = 32
Apache 설치하기 = 34
PHP 설치하기 = 36
매킨토시 OS X에서의 설치 = 38
MySQL 설치하기 = 40
PHP 설치하기 = 40
문제해결 = 42
제2장 MySQL 설치하기 = 43
MySQL의 현재와 미래 = 44
MySQL 구하기 = 44
리눅스, 유닉스에서 MySQL 설치하기 = 44
매킨토시에서 MySQL 설치하기 = 46
Windows에서 MySQL 설치하기 = 48
문제해결 = 54
기본적인 보안 지침 = 55
MySQL의 실행 = 55
MySQL 연결의 보안 = 56
MySQL 권한 시스템 = 57
2단계 인증 절차 = 57
유저 권한 다루기 = 59
유저 추가하기 = 59
권한 삭제하기 = 61
제3장 Apache 설치하기 = 65
Apache 서버의 현재 버전과 향후 버전 = 66
자신에게 맞는 설치 방법 선택하기 = 66
소스 코드로 설치하기 = 66
바이너리로 설치하기 = 67
리눅스, 유닉스에서 Apache 설치하기 = 67
소스 코드 다운로드하기 = 67
소스 코드 압축 풀기 = 68
빌드를 위한 준비 = 68
빌드 및 설치 = 68
매킨토시 OS X에서 Apache 설치하기 = 70
Windows에서 Apache 설치하기 = 70
Apache 설정 파일 구조 = 73
지시어 = 73
컨테이너 = 74
조건 컨테이너 = 76
ServerRoot = 77
폴더별 설정 파일 = 77
Apache 로그 파일 = 78
access_log 파일 = 78
error_log 파일 = 79
그 밖의 파일들 = 79
Apache 관련 명령 = 79
Apache 서버 바이너리 = 80
Apache 컨트롤 스크립트 = 81
Apache 서버의 실행 = 81
설정 파일 검사하기 = 81
Apache 실행하기 = 82
문제해결 = 83
다른 웹 서버가 실행중인 경우 = 84
포트를 사용할 권한이 없는 경우 = 84
접근이 거부된 경우 = 84
잘못된 그룹 설정 = 84
제4장 PHP 설치하기 = 87
PHP의 현재 버전과 향후 버전 = 88
리눅스, 유닉스에서 Apache와 연동할 PHP 설치하기 = 88
리눅스, 유닉스에서의 PHP 설정 옵션 = 90
리눅스, 유닉스에서 Apache 연동하기 = 91
매킨토시 OS X에서 PHP 설치하기 = 92
Windows에서 PHP 설치하기 = 93
Windows에서 PHP와 Apache 연동하기 = 94
php.ini의 기본 = 95
설치 검사 = 96
설치 문제에 대한 도움 얻기 = 97
PHP 스크립트의 기초 = 98
PHP 블록 = 99
echo 문장과 print() 함수 = 101
HTML과 PHP의 결합 = 101
PHP 코드에 주석 넣기 = 103
제2부 PHP 구조
제5장 PHP 구성요소 = 109
변수 = 110
global 변수와 슈퍼전역 변수 = 111
데이터 타입 = 112
settype() 함수로 타입 변환하기 = 114
캐스팅으로 타입 바꾸기 = 116
타입 검사는 왜 해야 하는가? = 118
연산자와 식 = 118
대입 연산자 = 119
산술 연산자 = 120
연결 연산자 = 120
복합 대입 연산자 = 121
정수 타입 변수를 위한 자동 증감 연산자 = 122
비교 연산자 = 123
논리 연산자를 사용하여 복잡한 조건식 만들기 = 124
연산자 우선순위 = 125
상수 = 127
미리 정의된 상수 = 128
제6장 PHP 흐름제어 = 133
흐름 전환 = 134
if 문장 = 134
if 문장과 함께 else 절 사용하기 = 135
if 문장과 함께 elseif 절 사용하기 = 136
switch 문장 = 137
?: 연산자 사용하기 = 139
루프 = 140
while 문장 = 140
do ... while 문장 = 141
for 문장 = 142
break 문장으로 루프에서 빠져나오기 = 144
continue 문장으로 반복 생략하기 = 146
중첩된 루프 = 147
코드 블록과 브라우저 출력 = 149
제7장 함수 = 155
함수란 무엇인가? = 156
함수 호출하기 = 156
함수 정의하기 = 158
유저가 정의한 함수로부터 값 반환하기 = 160
변수의 범위 = 161
global 문장을 사용하여 변수에 접근하기 = 162
static 문장을 사용하여 상태 기억하기 = 164
인자에 대한 탐구 = 166
인자에 기본값 지정하기 = 166
참조에 의한 인자 전달 = 168
함수의 존재 검사하기 = 169
제8장 배열 = 175
배열이란 무엇인가? = 176
배열 만들기 = 176
연상 배열 생성하기 = 177
다차원 배열 생성하기 = 178
여러 가지 배열 관련 함수들 = 180
제9장 오브젝트 = 185
오브젝트 생성하기 = 186
오브젝트의 프로퍼티 = 187
메소드 = 189
생성자 = 191
상속 = 191
제3부 PHP 코드 정복
제10장 스트링, 날짜, 시간 = 197
포맷에 따라 스트링 만들기 = 198
printf() = 198
필드 너비 지정하기 = 202
인자 교환 = 205
서식이 적용된 스트링 저장하기 = 207
PHP에서의 스트링 탐색 = 207
스트링 인덱스 = 207
strlen() 함수로 스트링 길이 알아내기 = 208
strstr() 함수를 이용한 스트링 검색 = 208
strpos() 함수를 이용한 스트링 검색 = 209
substr() 함수를 이용한 스트링 추출 = 209
strtok() 함수로 스트링 토큰화하기 = 210
PHP에서의 스트링 조작 = 212
trim(), ltrim(), strip_tags() 함수로 스트링 정리하기 = 212
substr_replace() 함수를 이용한 스트링 부분 교체 = 212
str_replace() 함수를 이용한 부분 스트링 교체 = 214
대ㆍ소문자 변환 = 215
wordwarp()과 nl2br() 함수를 사용한 텍스트 래핑 = 216
explode() 함수를 사용한 스트링 배열 만들기 = 218
PHP의 날짜와 시간 관련 함수들 = 218
time() 함수로 날짜 얻기 = 219
getdate() 함수로 타임스탬프 변환하기 = 219
date() 함수로 타임스탬프 변환하기 = 220
mktime() 함수를 사용하여 타임스탬프 만들기 = 223
checkdate() 함수로 날짜 검사하기 = 224
그 밖의 스트링, 날짜, 시간 함수들 = 224
제11장 폼 = 229
간단한 입력 폼 만들기 = 230
배열을 사용한 폼 = 231
한 페이지에서 HTML과 PHP를 함께 사용하기 = 234
상태 저장을 위해 숨겨진 필드 사용하기 = 236
리다이렉션 = 238
폼과 메일 전송 = 240
mail() 함수를 사용하기 위한 시스템 설정 = 240
폼 생성하기 = 241
메일을 보내는 스크립트 = 242
HTML을 사용한 메일 포맷 = 244
파일 업로드 = 246
파일 업로드 폼 만들기 = 246
파일 업로드 스크립트 = 247
제12장 쿠키와 세션 = 251
쿠키란 무엇인가? = 252
쿠키의 해부 = 252
PHP에서 쿠키 설정하기 = 253
쿠키 지우기 = 255
세션 함수 개관 = 256
세션 시작하기 = 256
세션 변수 사용하기 = 257
쿼리 스트링으로 세션 ID 전달하기 = 262
세션의 파괴와 변수의 해제 = 262
등록된 유저 환경에서의 세션 = 263
등록된 유저 다루기 = 263
유저의 개인 설정 다루기 = 263
제13장 파일과 폴더 = 267
include()를 이용하여 파일 포함하기 = 268
포함된 문서로부터 값을 반환하기 = 269
제어 구조에서 include() 문장 사용하기 = 270
include_once() 사용하기 = 271
include_path 지시어 = 272
파일 검사 = 273
file_exist() 함수를 이용한 존재 검사 = 273
파일인가? 폴더인가? = 273
파일 권한 검사하기 = 274
filesize() 함수로 파일 크기 알아내기 = 274
파일의 날짜 정보 얻기 = 275
여러 가지 파일 검사를 수행하는 함수 만들어보기 = 275
파일의 생성과 삭제 = 277
쓰기, 읽기, 덧붙이기를 위한 파일 열기 = 277
파일 읽기 = 278
fgets() 함수와 feof() 함수를 사용하여 행 읽기 = 279
fread() 함수를 사용하여 원하는 만큼 데이터 파일 읽기 = 280
fgetc() 함수를 사용하여 문자 단위로 파일 읽기 = 282
파일 쓰기 또는 덧붙이기 = 283
fwrite()와 fputs() 함수를 이용한 파일 쓰기 = 284
flock() 함수를 이용한 잠금 = 285
폴더 다루기 = 286
mkdir() 함수로 폴더 생성하기 = 286
rmdir() 함수로 폴더 삭제하기 = 286
opendir() 함수로 폴더 열기 = 287
readdir() 함수로 폴더의 내용 읽기 = 287
popen() 함수로 파이프 열기 = 289
exec() 함수로 외부 명령 실행하기 = 292
system() 혹은 passthru()로 명령 실행하기 = 293
제14장 이미지 = 299
이미지 생성 절차 이해하기 = 300
색상 = 300
이미지와 관련된 PHP 설정 변경 = 300
추가 라이브러리 설치하기 = 301
새로운 이미지 그리기 = 302
도형과 선 그리기 = 302
색상 채우기 = 304
파이 차트 그리기 = 306
기존의 이미지 수정하기 = 310
유저 입력으로 이미지 생성하기 = 313
제4부 PHP와 MySQL의 통합
제15장 데이터베이스 디자인 절차의 이해 = 323
좋은 데이터베이스 디자인의 중요성 = 324
관계의 종류 = 324
일대일 관계 = 325
일대다 관계 = 326
다대다 관계 = 327
정규화란 무엇인가? = 329
플랫 테이블의 문제점 = 329
제1정규형 = 330
제2정규형 = 331
제3정규형 = 332
디자인 절차의 준수 = 332
제16장 SQL의 기초 = 337
MySQL 데이터 타입 = 338
숫자 데이터 타입 = 338
날짜와 시간 타입 = 340
스트링 타입 = 341
테이블 생성 문법 = 342
INSERT 명령 사용하기 = 343
INSERT에 대한 고찰 = 343
SELECT 명령 사용하기 = 345
SELECT의 결과 정렬 = 346
결과 제한 = 347
WHERE 절 사용하기 = 348
WHERE 절에서 연산자 사용하기 = 349
LIKE로 스트링 비교하기 = 350
다수의 테이블에서 검색하기 = 350
JOIN 사용하기 = 353
서브 쿼리 사용하기 = 355
UPDATE 명령을 사용하여 레코드 수정하기 = 356
조건적 UPDATE = 357
UPDATE에서 기존의 컬럼 값 사용하기 = 358
REPLACE 명령 사용하기 = 359
DELETE 명령 사용하기 = 360
조건적 DELETE = 361
MySQL에서 자주 사용되는 스트링 함수들 = 362
길이 함수와 스트링 연결 함수 = 363
잘라내기와 패딩 함수 = 365
위치 관련 함수 = 367
부분 스트링 함수 = 368
스트링 조작 함수 = 369
MySQL의 날짜와 시간 함수들 = 370
날짜 다루기 = 370
달과 연도 다루기 = 373
주 다루기 = 374
시, 분, 초 다루기 = 375
날짜와 시간 포맷하기 = 377
날짜 계산 = 379
기타 함수와 변환 기능 = 382
제17장 트랜잭션과 저장 프로시저 = 389
트랜잭션이란? = 390
트랜잭션의 기본 문법 = 390
트랜잭션 예제 = 391
저장 프로시저란 무엇인가? = 393
저장 프로시저의 기본 문법 = 394
제18장 PHP와 MySQL의 연동 = 397
MySQL과 MySQLi 함수 = 398
PHP에서 MySQL에 연결하기 = 398
연결 맺기 = 398
쿼리 실행하기 = 400
에러 메시지 얻기 = 401
MySQL의 데이터 다루기 = 402
PHP로 데이터 삽입하기 = 402
PHP로 데이터 검색하기 = 405
PHP의 기타 MySQL 함수들 = 408
제5부 필수 프로젝트
제19장 메일링 리스트 = 413
가입 메커니즘 구현하기 = 414
가입자 테이블 만들기 = 414
가입 폼 만들기 = 415
메일 메커니즘 구현하기 = 421
제20장 온라인 주소록 = 427
테이블 설계와 생성 = 428
메뉴 만들기 = 431
레코드 추가를 위한 메커니즘 = 432
레코드 검색을 위한 메커니즘 = 437
레코드 삭제를 위한 메커니즘 = 445
레코드에 부가 정보 추가하기 = 447
제21장 포럼 게시판 = 457
데이터베이스 테이블 설계하기 = 458
폼과 스크립트 만들기 = 458
논제 목록 출력하기 = 463
논제와 관련된 글 출력하기 = 467
논제에 글 추가하기 = 471
제22장 온라인 상점 = 477
데이터베이스 테이블의 설계와 생성 = 478
store_categories 테이블에 레코드 삽입하기 = 480
store_items 테이블에 레코드 삽입하기 = 480
store_item_size 테이블에 레코드 추가하기 = 481
store_item_color 테이블에 레코드 삽입하기 = 482
카테고리와 상품 출력하기 = 482
상품 출력하기 = 486
제23장 장바구니 = 491
데이터베이스 테이블 설계 = 492
장바구니 구현 = 494
장바구니에 상품 추가하기 = 497
장바구니 보기 = 499
장바구니의 상품 삭제하기 = 502
결제 방법과 절차 = 503
결제 폼 만들기 = 503
결제하기 = 504
제24장 달력 = 507
간단한 달력 만들기 = 508
유저 입력 검사하기 = 508
HTML 폼 만들기 = 509
달력 테이블 만들기 = 511
달력에 이벤트 추가하기 = 515
달력 라이브러리 만들기 = 523
제25장 접근 제어 = 533
인증 개요 = 534
클라이언트 인증 = 534
Apache 인증 모듈 = 535
파일 기반 인증 = 537
데이터베이스 기반 접근 제어 = 539
Apache의 접근 제어 = 540
접근 규칙 만들기 = 540
접근 규칙 평가하기 = 542
접근 규칙의 결합 = 543
HTTP 메소드에 따른 접근 제한 = 544
쿠키를 사용한 접근 제어 = 545
인증을 위한 유저 테이블 만들기 = 546
로그인 폼과 스크립트 만들기 = 547
인증 쿠키 검사하기 = 550
제26장 로그와 모니터링 = 555
Apache의 표준 접근 로그 = 556
무엇을 로그로 남길 것인가? = 556
파일에 접근 로그 남기기 = 560
프로그램으로 로그 남기기 = 561
Apache 표준 에러 로그 = 562
파일에 에러 로그 남기기 = 562
외부 프로그램으로 에러 로그 보내기 = 562
syslog 데몬의 인자 = 562
LogLevel 지시어 = 563
Apache 로그 관리하기 = 563
호스트 네임 변환 = 564
로그 순환 = 564
로그 합치기와 나누기 = 565
로그 분석 = 565
에러 로그 모니터링 = 566
데이터베이스에 로그 남기기 = 566
데이터베이스 테이블 만들기 = 566
PHP로 테이블에 로그 추가하기 = 567
샘플 리포트 만들어보기 = 568
제27장 애플리케이션 로컬라이즈 = 573
국제화와 로컬라이즈 = 574
문자 집합 = 574
개발환경의 변화 = 576
Apache의 설정 변경 = 576
PHP 설정 변경 = 576
MySQL 설정 변경 = 577
로컬라이즈된 페이지 구조 만들기 = 577
제28장 XML 다루기 = 585
XML이란 무엇인가? = 586
기본적인 XML 문서 구조 = 586
DOM 함수를 사용하여 XML에 접근하기 = 588
SimpleXML 함수를 사용하여 XML에 접근하기 = 591
제6부 관리와 튜닝
제29장 Apache 퍼포먼스 튜닝과 가상 호스트 = 599
확장성 = 600
운영체제의 제한 = 600
성능 관련 Apache 설정 = 602
ApacheBench를 사용한 부하 테스트 = 604
성능 튜닝 = 606
파일을 메모리로 매핑하기 = 606
부하 분산 = 607
캐슁 = 607
전송 데이터 줄이기 = 607
네트워크 설정 = 608
공격 방어 = 608
로봇 = 608
가상 호스트 구현하기 = 609
IP 기반 가상 호스트 = 610
이름 기반 가상 호스트 = 611
대량의 가상 호스트 = 613
제30장 보안 웹 서버 = 617
보안의 필요성 = 618
SSL 프로토콜 = 618
기밀성 = 618
무결성 = 620
인증 = 621
SSL 도구 얻기 및 SSL 도구 설치하기 = 623
OpenSSL = 623
mod_ssl 모듈 = 625
인증서 관리하기 = 626
키 쌍 만들기 = 626
인증서 서명 요청 만들기 = 627
직접 서명한 인증서 만들기 = 628
SSL 설정 = 629
서버 시작하기 = 630
제31장 MySQL의 최적화와 튜닝 = 633
최적화된 플랫폼 만들기 = 634
benchmark() 함수 = 634
MySQL 시작 옵션 = 635
중요한 시작 파라미터 = 636
테이블 구조 최적화하기 = 637
퀴리 최적화하기 = 638
FLUSH 명령 사용하기 = 639
SHOW 명령 사용하기 = 640
데이터베이스와 테이블에 대한 정보 가져오기 = 642
테이블 구조에 대한 정보 가져오기 = 643
시스템 상태 가져오기 = 645
제32장 소프트웨어 업그레이드 = 649
버전 관리 = 650
업그레이드 시점 = 650
MySQL 업그레이드 = 651
Apache 업그레이드 = 652
업그레이드 없이 Apache 수정하기 = 652
PHP 업그레이드 = 653
PECL과 PEAR를 이용한 PHP 확장 = 653
찾아보기 = 655