HTML5 웹 프로그래밍 입문(개정판) 부록. 웹 서버 구축하기
목차 A.1 웹 서버 시스템 A.2 PHP 사용하기 A.3 데이터베이스 연결하기
A.1 웹 서버 시스템
웹 서버의 구축 웹 서버 컴퓨터 구축 서버 실행 프로그램 데이터베이스 시스템 웹 서버 소프트웨어 설치 및 실행 아파치(Apache) 웹 서버가 대표적 서버 실행 프로그램 HTML5 폼을 전달받아 처리 PHP, JSP, Python 등 데이터베이스 시스템 서버 측에 데이터를 저장 및 효율적 관리 MySQL, SQL, Oracle 등
웹 서버-클라이언트 연결 구조 Web Servers Web Clients 웹 서버 프로그램 Database TCP/IP HTTP Database 웹 서버 프로그램 웹 문서 HTML5, CSS JavaScript, XML PHP, Python JSP 웹 문서, 서버 프로그램 파일 전송 (ftp 등) Web Browser HTML5, CSS, JavaScript URL (주소), 폼 입력 데이터
A.2 PHP 사용하기
웹 서버 프로그래밍 언어, PHP PHP(PHP: Hypertext Preprocessor) 웹 서버 용 스크립트 언어 HTML 문서에서 <?php 와 ?> 안에 스크립트를 넣어 사용 => PHP 스크립트가 서버에서 처리 => 결과인 HTML문서만 브라우저에 보여줌 <!DOCTYPE HTML> <html> <body> <?php print "<p> Hello PHP! </p>"; ?> </body> </html> <!DOCTYPE HTML> <html> <body> <p> Hello PHP! </p>"; </body> </html>
PHP 특징 윈도우, 유닉스, 리눅스 OS에 아파치 웹 서버를 설치하여 사용 다양한 데이터베이스에 대해 사용하기 간편한 인터페이스 제공 LAMP(Linux Apache MySQL PHP) WAMP(Windows Apache MySQL PHP) <!DOCTYPE HTML> <html> <body> <h2> PHP 예제 </h2> <?php print "<p> Hello PHP! </p>"; print "<p> Welcome to HTML5 Web Programming 입문 </p>"; ?> </body> </html> <body> <h2> PHP 예제 </h2> <p> Hello PHP! </p> <p> Welcome to HTML5 Web Programming 입문 </p> </body>
PHP 시작하기: 함수, 변수 함수 변수: $변수명 <body> <p>PHP 요일 확인 예제</p> <?php $week_day = date("D"); print "<strong> Today is $week_day.. </strong><br/>"; if ($week_day == "Fri") print "[$week_day] Have a nice weekend!"; elseif ($week_day == "Sun") print "[$week_day] Have a nice Sunday!"; else print "[$week_day] Have a nice day!"; ?> </body> $week_day = “Wed” <body> <p>PHP 요일 확인 예제</p> <strong> Today is $week_day.. </strong><br/> [Wed] Have a nice day! </body>
간략한 PHP 문법 항목 설명 주석 // 혹은 /* … */ 변수 $를 붙혀 변수로 사용. $variable_name 데이터 타입 Boolean, Integer, Floating point:, 문자열: "abcdefg” 혹은 'abcdefg' 제어문, 반복문 if, switch, while, for 문 제공됨 문자열 붙이기 연산자 . 연산자 "abc"."def" "abcdef" 함수 정의 function 함수이름 (매개변수…) { 함수 정의; return (반환값); } 폼 입력 값 $_GET, $_POST 배열로 전달 받음 배열 $arr = array(); $arr[] = "apple"; $arr[] = "grape"; $arr[] = "melon"; $arr = array("apple", "grape", "melon"); 출력 print 혹은 echo
PHP로 폼 다루기(1) <form> 에서 action, method 속성 예, <form action="formexample.php" method="GET"> 변수명은 name 속성값 GET 메소드의 경우 : $_GET["변수명"] POST 메소드의 경우 : $_POST["변수명"] <body> <p> form으로 PHP 프로그램 실행</p> <form action="formexample.php" method="GET"> 유형 선택 : <input type="radio" name="kind" value="news">구글 뉴스 <input type="radio" name="kind" value="blog">네이버 블로그 <input type="radio" name="kind" value="search">네이버 검색<br/> 키워드 입력 : <input type="text" name="keyword" size="15">=> <input type="submit" value="PHP 실행"> </form> </body> http://webclass.me/html5_2e/appendix/formexample.php?kind=search&keyword=%EB%B0%95%EC%A7%80%EC...
<p> form으로 데이터 전송 결과</p> <?php $k = $_GET["kind"]; $w = $_GET["keyword"]; ?> <p> form으로 데이터 전송 결과</p> <p> 기사 유형(kind): <?php print $k; ?> </p> <p> 키워드(keyword)는 [ <?php print $w; ?> ] 입니다.</p> <?php if ($k=="news") $result_url = "'http://www.google.co.kr/search?tbm=nws&q=$w'"; elseif ($k=="blog") $result_url = "'http://section.blog.naver.com/sub/SearchBlog.nhn?option.keyword=$w'"; elseif ($k=="search") $result_url = "'http://search.naver.com/search.naver?query=$w'"; <script type="text/javascript"> window.open(<?php print $result_url;?>); </script> window.open('http://search.naver.com/search.naver?query=$w'");
PHP로 폼 다루기(2) <h3>도서 대출 신청 양식</h3> <form action="formexample2.php" method="GET"> 대출 도서관 선택: <label> <input type="checkbox" name="seoul">서울도서관</label> <label> <input type="checkbox" name="cheonan">천안도서관</label> <label> <input type="checkbox" name="jeju">제주도서관</label> <br><br> 대출 기간 선택: <select name="duration"> <option value="1week"> 1주 </option> <option value="2week"> 2주 </option> <option value="4week"> 4주 </option> <option value="8week"> 8주 </option> </select> <br><br> 대출 시작 날짜: <input type="date" name="date"/> <br><br> 대출 시작 시간: <input type="time" name="time"/> <br><br> 포장 색상 선택: <input type="color" name="color"/> <br><br> <input type="submit" value="신청하기"> <input type="reset" value="리셋"> </form> http://webclass.me/.../appendix/formexample2.php? seoul=on&cheonan=on&duration=4week&date=2017-04-19&time=14%3A00&color=%23ff8080
seoul=on&cheonan=on& duration=4week& date=2017-04-19& time=14%3A00& color=%23ff8080 <h3>도서 대출 신청 결과</h3> <?php $period = $_GET["duration"]; $d = $_GET["date"]; $t = $_GET["time"]; $c = $_GET["color"]; ?> 대출 요청 도서관: if ($_GET["seoul"]=="on") print "서울도서관 "; if ($_GET["cheonan"]=="on") print "천안도서관 "; if ($_GET["jeju"]=="on") print "제주도서관"; <br> 대출 요청 기간: <?php print $period;?> <br> 대출 시작 날짜: <?php print $d;?> <br> 대출 시작 시간: <?php print $t;?> <br> 포장 색상 요청: <?php print $c;?> <h3>도서 대출 신청 결과</h3> 대출 요청 도서관: 서울도서관 천안도서관 <br> 대출 요청 기간: 4week <br> 대출 시작 날짜: 2017-04-19 <br> 대출 시작 시간: 14:00 <br> 포장 색상 요청: #ff8080
A.3 데이터베이스 연결하기
SQL 문 데이터베이스를 다루기 위한 언어 query (질의) 데이터베이스 생성, 테이블 생성, 테이블에 레코드 읽기, 저장, 변경 등을 수행 query (질의) SQL 문으로 기술된 데이터베이스에 대한 요청 예, 이미 생성된 데이터베이스 테이블에 레코드 삽입 및 접근 테이블에 레코드 삽입: insert insert into 테이블이름 (필드이름1, 필드이름2, . . .) values (필드값1, 필드값2 . . . ) 테이블에서 레코드 선택: select select 필드이름1, 필드이름2, . . . 혹은 * from 테이블이름 where 조건
PHP에서 MySQL 실행하기 1. MySQL 데이터베이스 연결 2. 질의(query) 요청 예, 선호도 조사 $db = new mysqli( 서버이름, 사용자계정이름, 비밀번호, DB이름); 2. 질의(query) 요청 $result = $db->query( SQL질의 ); 예, 선호도 조사 <p> 음식 선호도 조사</div> <form method="get" action="favorate_food.php"> <p> 이름을 입력해 주세요.</p> <input type="text" name="name"> <p> 좋아하는 음식을 선택해 주세요.</p> <input type="radio" name="food" value="korean">한식 <input type="radio" name="food" value="chinese">중식 <input type="radio" name="food" value="japanese">일식 <br/><br/> <input type="reset" value="초기화"/> <input type="submit" value="투표하기"/> </form>
if (mysqli_connect_errno()) { <?php $db = new mysqli("localhost", "webclass", "webclass1234", "favorate_food"); // 데이터베이스 연결 if (mysqli_connect_errno()) { print "Error: Could not connect to database server."; exit; } $name = $_GET["name"]; $food = $_GET["food"]; $q = "select * from vote where name = $name'"; $result = $db->query($q); if ($result->num_rows > 0) { // already voted, 입력한 이름으로 이미 투표했는지 확인 print "$name has already voted!"; } else { $q = "insert into vote (name, food) values ('$name', '$food')"; // 선호도 투표 결과 저장 $db->query($q); print "$name voted for $food"; print "<p> 음식 선호도 조사 결과 </p>"; $result = $db->query("select * from vote"); print "<br/> 총 투표자 수: ".$result->num_rows; $result = $db->query("select * from vote where food = 'korean'"); print "<br/> 한식: ".$result->num_rows; // 음식별 투표 결과 출력 $result = $db->query("select * from vote where food = 'chinese'"); print "<br/> 중식: ".$result->num_rows; … } ?> id name food 정수 문자열