HTML5 웹프로그래밍입문 부록. 웹서버구축하기 1
목차 A.1 웹서버시스템 A.2 PHP 사용하기 A.3 데이터베이스연결하기 2
A.1 웹서버시스템 3
웹서버의구축 웹서버컴퓨터구축 웹서버소프트웨어설치및실행 아파치 (Apache) 웹서버가대표적 서버실행프로그램 HTML5 폼을전달받아처리 PHP, JSP, Python 등 데이터베이스시스템 서버측에데이터를저장및효율적관리 MySQL, SQL, Oracle 등 4
웹서버 - 클라이언트연결구조 Web Servers Web Clients 웹문서, 서버프로그램파일전송 (ftp 등 ) 웹서버프로그램 PHP, Python Database JSP 웹문서 HTML5, CSS JavaScript, XML Web Browser HTML5, CSS, JavaScript HTTP HTTP TCP/IP 웹문서 TCP/IP URL ( 주소 ), 폼입력데이터 5
A.2 PHP 사용하기 6
웹서버프로그래밍언어, PHP PHP(PHP: Hypertext Preprocessor) 웹서버용스크립트언어 HTML 문서에서 <?php 와?> 안에스크립트를넣어사용 => PHP 스크립트가서버에서처리 => 결과인 HTML문서만브라우저에보여줌 <!DOCTYPE HTML> <html> <body> <?php print "<p> Hello PHP! </p>";?> </body> </html> 7
PHP 특징 윈도우, 유닉스, 리눅스 OS 에아파치웹서버를설치하여사용 다양한데이터베이스에대해사용하기간편한인터페이스제공 LAMP(Linux Apache MySQL PHP) WAMP(Windows Apache MySQL PHP) <!DOCTYPE HTML> <html> <head> <title> Hello PHP Example</title> </head> <body> <h2> PHP 예제 </h2> <?php print "<p> Hello PHP! </p>"; print "<p> Welcome to HTML5 Web Programming 입문 </p>";?> </body> </html> 8
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> 9
간략한 PHP 문법 항목 설명 주석 // 혹은 /* */ 변수데이터타입제어문, 반복문문자열붙이기연산자함수정의폼입력값 $ 를붙혀변수로사용. $varible_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 10
PHP 로폼다루기 <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> 11
<?php $k = $_GET["kind"]; $w = $_GET["keyword"];?> <p> 기사유형 (kind): <?php print $k;?> </p> <p> 키워드 (keyword) 는 [ <?php print $w;?> ] 입니다.</p> 변수 $w 의값을웹문서로출력한다. <?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> 12
A.3 데이터베이스연결하기 13
SQL 문 데이터베이스를다루기위한언어 데이터베이스생성, 테이블생성, 테이블에레코드읽기, 저장, 변경등을수행 query ( 질의 ) SQL 문으로기술된데이터베이스에대한요청 예, 이미생성된데이터베이스테이블에레코드삽입및접근 테이블에레코드삽입 : insert insert into 테이블이름 ( 컬럼이름 1, 컬럼이름 2,...) values ( 컬럼값 1, 컬럼값 2... ) 테이블에서레코드선택 : select select 컬럼이름 1, 컬럼이름 2,... 혹은 * from 테이블이름 where 조건 14
PHP 에서 MySQL 실행하기 1. MySQL 데이터베이스연결 $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> 15
<?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); id name food 정수 문자열 문자열 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; 16 // 음식별투표결과출력