지은이 소개 ... 5 감사의 글 ... 6 옮긴이 소개 ... 7 옮긴이의 말 ... 8 들어가며 ... 24 01장 역동적인 웹 컨텐츠 ... 29 HTTP와 HTML: 버너스 리의 기본 개념 ... 30 요청/응답 절차 ... 31 PHP, MySQL, 자바스크립트, CSS가 뛰어난 이유 ... 34 PHP ... 35 MySQL ... 36 자바스크립트 ... 38 CSS ... 39 아파치 웹서버 ... 40 오픈 소스 ... 41 정리 ... 42 연습문제 ... 44 02장 개발 서버 설치 ... 45 WAMP, MAMP, LAMP는 무엇인가? ... 46 윈도우에 WAMP 설치 ... 46 설치 후 테스트 ... 53 WAMP 대체 방법 ... 56 맥 OS X에 MAMP 설치 ... 56 MySQL 설정 ... 59 설치 후 테스트 ... 61 리눅스에 LAMP 설치 ... 64 원격 접속 ... 65 로그인 ... 65 FTP 사용하기 ... 65 프로그램 편집기 ... 67 통합개발환경 ... 68 연습문제 ... 70 03장 PHP 소개 ... 71 HTML 내부에 PHP 포함 ... 72 PHP 파서 호출 ... 72 이 책의 예제 ... 73 PHP의 구조 ... 74 주석 ... 75 기본 문법 ... 76 변수의 이해 ... 77 연산자 ... 82 변수 대입 ... 85 다중 라인 명령어 ... 88 변수 입력 ... 91 상수 ... 92 echo와 print 명령어의 차이점 ... 93 함수 ... 94 변수 범위 ... 95 연습문제 ... 101 04장 PHP의 표현식과 흐름 제어 ... 103 표현식 ... 103 문자 형식과 변수 ... 105 연산자 ... 106 연산자 우선순위 ... 107 결합성 ... 109 관계형 연산자 ... 111 조건문 ... 115 If 문 ... 115 else 문 ... 117 elseif 문 ... 119 switch 문 ... 120 ? 연산자 ... 123 반복문 ... 124 while 문 ... 125 do...while 문 ... 127 for 반복문 ... 128 반복문 빠져나가기 ... 130 continue 문 ... 131 암묵적 형변환과 명백한 형변환 ... 132 PHP의 동적 링킹 ... 133 동적 링킹 동작 ... 134 연습문제 ... 135 05장 PHP 함수와 객체 ... 137 PHP 함수 ... 138 함수 정의 ... 140 변수 반환 ... 140 배열 반환 ... 143 참조로 전달 ... 143 전역 변수 반환 ... 145 변수 범위 다시 살펴보기 ... 146 파일 포함과 요구 ... 146 include 문 ... 147 include_once ... 147 require와 require_once ... 148 PHP 버전 호환성 ... 148 PHP 객체 ... 149 전문 용어 ... 150 클래스 정의 ... 151 객체 생성 ... 152 객체 접근법 ... 153 생성자 ... 156 메소드 작성법 ... 157 속성 선언 ... 159 상수 선언 ... 160 PHP 5의 속성과 메소드 ... 161 상속 ... 163 연습문제 ... 168 06장 PHP 배열 ... 169 기본 접근법 ... 169 배열의 숫자 인덱스 ... 170 연관 배열 ... 172 array 키워드를 사용한 대입 ... 173 foreach...as 루프 ... 174 다차원 배열 ... 176 배열 함수의 사용 ... 180 is_array ... 180 count ... 180 sort ... 181 shuffle ... 181 explode ... 182 extract ... 183 compact ... 184 reset ... 185 end ... 186 연습문제 ... 186 07장 실용적인 PHP ... 187 printf ... 187 자릿수 설정 ... 189 문자열 채우기 ... 191 sprintf ... 192 날짜와 시간 함수 ... 193 날짜 상수 ... 195 checkdate ... 196 파일 처리 ... 196 파일 존재여부 검사 ... 197 파일 생성 ... 197 파일 읽기 ... 199 파일 복사 ... 200 파일 이동 ... 201 파일 삭제 ... 201 파일 갱신 ... 202 다중 접근으로부터 파일 잠금 ... 203 전체 파일 읽기 ... 205 파일 업로드 ... 206 시스템 콜 ... 212 XHTML ... 213 XHTML의 이점 ... 214 XHTML 버전 ... 214 HTML과의 차이점 ... 214 HTML 4.01 문서 유형 ... 216 HTML5 문서 형식 ... 217 XHTML 1.0 문서 유형 ... 217 XHTML 검증 ... 218 연습문제 ... 219 08장 MySQL 소개 ... 221 MySQL 기본 ... 221 데이터베이스 용어 정리 ... 222 커맨드라인으로 MySQL 접근 ... 223 커맨드라인 시작 ... 223 커맨드라인 인터페이스 ... 227 MySQL 명령어 ... 229 데이터 타입 ... 234 인덱스 ... 246 인덱스 생성 ... 246 MySQL 데이터베이스 쿼리 ... 252 테이블 조인 ... 263 논리 연산자 ... 266 MySQL 함수 ... 267 phpMyAdmin으로 MySQL에 접근 ... 267 윈도우 사용자 ... 267 맥 OS X 사용자 ... 269 리눅스 사용자 ... 269 phpMyAdmin ... 269 연습문제 ... 271 09장 MySQL 정복하기 ... 273 데이터베이스 디자인 ... 273 기본 키: 키에서 관계형 데이터베이스로 ... 275 정규화 ... 275 첫 번째 정규 형식 ... 277 두 번째 정규 형식 ... 279 세 번째 정규 형식 ... 282 정규형을 사용하지 않는 경우 ... 285 관계 ... 286 일대일 ... 286 일대다 ... 287 다대다 ... 287 데이터베이스와 익명성 ... 289 트랜잭션 ... 289 트랜잭션 저장 엔진 ... 290 BEGIN ... 291 COMMIT ... 292 ROLLBACK ... 292 EXPLAIN ... 293 백업과 복구 ... 295 mysqldump ... 295 백업 파일 생성 ... 297 백업 파일로부터 복구 ... 299 CSV 포맷으로 데이터 덤프 ... 299 백업 계획 ... 300 연습문제 ... 301 10장 PHP를 사용해 MySQL에 접근 ... 303 PHP로 MySQL 데이터베이스 쿼리 ... 303 절차 ... 304 로그인 파일 생성 ... 304 MySQL 연결 ... 305 실용적인 예제 ... 312 $_POST 배열 ... 315 기록 지우기 ... 316 폼 출력 ... 316 데이터베이스 쿼리 ... 317 프로그램 실행 ... 318 실용적인 MySQL ... 319 테이블 생성 ... 319 테이블 묘사 ... 320 테이블 삭제 ... 321 데이터 추가 ... 322 데이터 추출 ... 323 데이터 갱신 ... 324 데이터 삭제 ... 324 AUTO_INCREMENT ... 325 쿼리 추가 실행 ... 327 SQL 인젝션 막기 ... 328 HTML 인젝션 막기 ... 333 연습문제 ... 335 11장 폼 처리 ... 337 폼 만들기 ... 337 제출된 데이터 추출 ... 339 옛날 방법에 의지하는 register_globals ... 340 기본 값 ... 341 입력 형식 ... 342 입력 보안 처리 ... 350 예제 프로그램 ... 352 연습문제 ... 355 12장 쿠키와 세션, 인증 ... 357 PHP의 쿠키 ... 357 쿠키 설정 ... 359 쿠키 접근 ... 360 쿠키 삭제 ... 361 HTTP 인증 ... 361 계정 이름과 암호 저장 ... 364 암호 보호 ... 365 세션 ... 370 세션 시작 ... 370 세션 끝내기 ... 374 세션 보안 ... 375 연습문제 ... 380 13장 자바스크립트 살펴보기 ... 381 자바스크립트와 HTML 텍스트 ... 382 문서 제목에 스크립트 사용 ... 384 오래된 비표준 브라우저 ... 384 자바스크립트 파일 포함 ... 385 자바스크립트 오류 디버깅 ... 386 주석 ... 389 세미콜론 ... 389 변수 ... 390 문자열 변수 ... 390 숫자형 변수 ... 391 배열 ... 391 연산자 ... 392 산술 연산자 ... 392 대입 연산자 ... 393 비교 연산자 ... 394 논리 연산자 ... 394 변수 증가와 감소 ... 394 문자열 연결 ... 395 이스케이프 문자 ... 395 변수 입력 ... 396 함수 ... 397 전역 변수 ... 398 지역 변수 ... 398 문서 객체 모델 ... 400 비호환 브라우저 ... 402 DOM ... 404 자기 진단 문제 ... 405 14장 자바스크립트의 표현식과 흐름제어 ... 407 표현식 ... 407 문자 형식과 변수 ... 408 연산자 ... 410 연산자 우선순위 ... 410 결합성 ... 411 관계형 연산자 ... 412 with 문 ... 415 onError ... 416 try...catch ... 418 조건문 ... 419 if 문 ... 419 switch 문 ... 420 ? 연산자 ... 422 반복문 ... 422 while 루프 ... 422 do...while 루프 ... 423 for 루프 ... 424 반복문 빠져나오기 ... 425 continue 문 ... 426 명백한 형변환 ... 427 연습문제 ... 427 15장 자바스크립트의 함수, 오브젝트, 배열 ... 429 자바스크립트 함수 ... 429 함수 정의 ... 430 값 반환 ... 432 배열 반환 ... 434 자바스크립트 오브젝트 ... 435 클래스 정의 ... 435 오브젝트 생성 ... 437 오브젝트 접근 ... 438 prototype 키워드 ... 438 자바스크립트 배열 ... 441 숫자형 배열 ... 441 연관 배열 ... 443 다중 배열 ... 444 배열 메소드 ... 445 연습문제 ... 451 16장 자바스크립트와 PHP 검증, 오류 처리 ... 453 자바스크립트로 사용자 입력 검증 ... 453 첫 번째 .html 문서 검증 ... 454 두 번째 .html 문서 검증 ... 456 정규 표현식 ... 460 메타 문자로 매칭 ... 461 난해한 문자 매칭 ... 461 괄호로 그룹 만들기 ... 463 문자 클래스 ... 463 몇 가지 복잡한 예제 ... 465 메타 문자 정리 ... 468 일반 변경자 ... 469 자바스크립트에 정규 표현식 ... 470 PHP에 정규 표현식 ... 471 PHP 검증 후 폼 재출력 ... 472 연습문제 ... 478 17장 Ajax ... 479 Ajax란 무엇인가? ... 480 XMLHttpRequest ... 481 POST 요청으로 Ajax 구현 ... 484 readyState 속성 ... 486 Ajax 과정의 서버 측 동작 ... 487 POST 대신 GET 사용 ... 489 XML 요청 보내기 ... 492 XML에 관해 ... 494 왜 XML을 사용하는가? ... 496 Ajax 프레임워크 ... 497 연습문제 ... 497 18장 CSS 소개 ... 499 스타일 시트 불러오기 ... 500 HTML 내부에서 스타일 시트 불러오기 ... 501 내장된 스타일 설정 ... 501 ID 사용하기 ... 502 클래스 사용하기 ... 502 CSS 규칙 ... 503 세미콜론 ... 503 여러 할당 ... 504 주석 ... 505 스타일 형식 ... 505 기본 스타일 ... 506 사용자 스타일 ... 506 외부 스타일 시트 ... 507 내부 스타일 ... 507 인라인 스타일 ... 507 CSS 셀렉터 ... 508 형식 셀렉터 ... 508 자손 선택자 ... 508 자식 선택자 ... 509 근접 형제 셀렉터 ... 511 ID 셀렉터 ... 511 클래스 셀렉터 ... 512 속성 셀렉터 ... 513 유니버설 셀렉터 ... 514 그룹으로 선택하기 ... 514 CSS 종속 ... 515 스타일 시트 생성자 ... 515 스타일 시트 방법 ... 516 스타일 시트 셀렉터 ... 517 〈div〉와〈span〉의 차이 ... 519 단위 ... 522 글씨체와 활판술 ... 524 font-family ... 524 font-style ... 525 font-size ... 525 font-weight ... 526 텍스트 스타일 관리 ... 526 장식 ... 526 공백 ... 527 정렬 ... 527 변환 ... 528 들여쓰기 ... 528 CSS 색 ... 529 짧은 색 문자열 ... 529 그라디언트 ... 530 엘리먼트 위치 선정 ... 531 절대 위치 ... 532 상대적인 위치 ... 532 고정된 위치 ... 532 위치 형식 비교 ... 533 수도 클래스 ... 534 수도엘리먼트 ... 537 단축 규칙 ... 538 상자 모델과 배치 ... 538 마진 설정 ... 539 경계 적용하기 ... 541 패딩 조절하기 ... 542 객체 내용 ... 544 연습문제 ... 544 19장 고급 CSS와 CSS3 ... 545 속성 선택자 ... 546 문자열의 일부를 일치하기 ... 546 box-sizing 속성 ... 548 CSS3 소개 ... 548 background-clip 속성 ... 549 background-origin 속성 ... 550 background-size 속성 ... 551 다중 배경 ... 552 CSS3 경계 ... 554 border-color 속성 ... 554 border-radius 속성 ... 555 상자 그림자 ... 558 엘리먼트 오버플로우 ... 559 다중 열 배치 ... 559 색과 투명도 ... 561 HSL 색 ... 562 HSLA 색 ... 563 RGB 색 ... 563 RGBA 색 ... 564 opacity 속성 ... 564 텍스트 효과 ... 564 text-shadow 속성 ... 565 text-overflow 속성 ... 565 word-wrap 속성 ... 566 웹 글씨체 ... 567 구글 웹 글씨체 ... 568 변형 ... 569 변환 ... 570 변환의 속성 ... 571 변환 기간 ... 571 변환 지연 ... 571 변환 시점 ... 572 속기 문법 ... 573 연습문제 ... 575 20장 자바스크립트에서 CSS 접근하기 ... 577 getElementById 함수 다시 살펴보기 ... 577 O 함수 ... 578 S 함수 ... 578 C 함수 ... 580 함수 포함하기 ... 581 자바스크립트에서 CSS 속성 접근하기 ... 582 몇 가지 일반 속성들 ... 583 다른 속성들 ... 584 인라인 자바스크립트 ... 586 this 키워드 ... 587 스크립트에서 이벤트를 객체에 붙이기 ... 588 다른 이벤트에 붙이기 ... 588 새로운 엘리먼트 추가하기 ... 590 엘리먼트 제거하기 ... 591 엘리먼트 추가와 제거의 다른 방법들 ... 592 인터럽트 사용하기 ... 593 setTimeout 사용하기 ... 593 타임아웃 취소 ... 595 setInterval 사용하기 ... 595 애니메이션을 위해 인터럽트 사용하기 ... 597 연습문제 ... 599 21장 종합 프로젝트 ... 601 소셜 네트워크 사이트 설계 ... 602 웹사이트에서 ... 602 functions.php ... 603 함수 ... 603 header.php ... 605 setup.php ... 607 index.php ... 609 signup.php ... 610 계정 이름 사용 가능성 ... 612 checkuser.php ... 613 login.php ... 614 profile.php ... 616 'About Me' 텍스트 추가 ... 617 프로파일 이미지 추가 ... 617 이미지 처리 ... 618 현재 프로파일 출력 ... 618 members.php ... 621 사용자 프로파일 보기 ... 621 친구 추가와 삭제 ... 622 모든 멤버 나열 ... 622 friends.php ... 625 messages.php ... 628 logout.php ... 632 styles.css ... 633 부록 A. 연습문제 해답 ... 637 부록 B. 온라인 자료 ... 655 부록 C. MySQL의 FULLTEXT 불용어 ... 659 부록 D. MySQL 함수 ... 663 찾아보기 ... 679