• Tidak ada hasil yang ditemukan

PowerPoint 프레젠테이션

N/A
N/A
Protected

Academic year: 2023

Membagikan "PowerPoint 프레젠테이션"

Copied!
24
0
0

Teks penuh

(1)

부록 . 웹 서버 구축하기

HTML5

웹 프로그래밍 입문

(

개정판

)

1

(2)

목차

A.1 웹 서버 시스템 A.2 PHP 사용하기

A.3 데이터베이스 연결하기

(3)

A.1 웹 서버 시스템

3

(4)

웹 서버의 구축

■ 웹 서버 컴퓨터 구축

웹 서버 소프트웨어 설치 및 실행

아파치 (Apache) 웹 서버가 대표적

■ 서버 실행 프로그램

HTML5 폼을 전달받아 처리

PHP, JSP, Python 등

■ 데이터베이스 시스템

서버 측에 데이터를 저장 및 효율적 관리

MySQL, SQL, Oracle 등

(5)

웹 서버 - 클라이언트 연결 구조

5

Web Servers Web Clients

TCP/IP HTTP

TCP/IP HTTP

Database 웹 서버 프로그램

웹 문서 HTML5, CSS JavaScript, XML PHP, Python

JSP

Web Browser HTML5, CSS,

JavaScript

URL (주소), 폼 입력 데이터

웹 문서 웹 문서,

서버 프로그램 파일 전송 (ftp )

(6)

PHP 작동 순서

Web Servers Web Clients

(Web Browser)

웹 서버 프로그램 (웹 페이지웹 문서 ) HTML5, CSS JavaScript

PHP, Python JSP, Javascript 파일 전송

프로그램 (ftp ) HTML5/CSS

PHP

Web Clients (Web Browser)

URL (html) 웹페이지 방문

HTML5/CSS 결과 페이지 HTML5/CSS

결과 페이지 2 HTML5/CSS

결과 페이지 1 HTML5/CSS

URL (php) 결과 페이지 HTML5/CSS upload

(7)

A.2 PHP 사용하기

7

(8)

웹 서버 프로그래밍 언어 , 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)

실행 결과

(html)

(9)

■ PHP 특징

윈도우 , 유닉스 , 리눅스 OS 에 아파치 웹 서버를 설치하여 사용

 LAMP(Linux Apache MySQL PHP), WAMP(Windows Apache MyS QL PHP)

다양한 데이터베이스에 대해 사용하기 간편한 인터페이스 제공

9

<!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>

(10)

PHP 시작하기 : 함수 , 변수

■ 함수

■ 변수 : $ 변수명

<html>

<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>

</html>

<body>

<p>PHP 요일 확인 예제</p>

<strong> Today is $week_day..

</strong><br/>

[Wed] Have a nice day!

$week_day =

“Wed”

(11)

간략한 PHP 문법

11

■ 주석 : // 혹은 /* … */

■ 출력 : print 혹은 echo

■ 변수

$ 를 붙여 변수로 사용 .

$variable_name

■ 데이터 타입

Boolean, Integer, Floating point, 문자열 ("abcdef” 혹은 'abcdef

‘)

문자열 붙이기 : . 연산자 ( 점 연산자 ), "abc"."def"  "abcd

ef"

■ 제어문 ( 선택문 , 반복문 )

 if, switch, whie, for 문 제공 됨

 C, Java 문법과 유사

(12)

간략한 PHP 문법

■ 함수 정의

function 함수이름 ( 매개변수 ) {

함수 정의 ;

return ( 반환값 );

}

■ 폼 입력 값

$_GET, $_POST 배열로 전달 받음

■ 배열

$arr = array();

$arr[] = "apple"; $arr[] = "grape"; $arr[] = "melon";

$arr = array("apple", "grape", "melon");

(13)

PHP 로 폼 다루기

13 Web Servers

웹 서버 프로그램 (웹 페이지웹 문서 ) HTML5, CSS JavaScript

**.PHP

Web Clients

URL (html)

웹페이지 (HTML5/CSS)

<form action=“…/…/**.php” method=“…” >

<input …>

<input …>

<input type=“button” …>

</form>

결과 페이지 HTML5/CSS 결과 페이지

HTML5/CSS URL (../../**.php)

폼 입력 데이터 (GET방식 혹은 POST 방식)

(14)

PHP 로 폼 다루기 (1)

■ <form> 에서 action, method 속성

예 , <form action="formexample.php" method="GET">

변수명은 name 속성값

 GET 메소드의 경우 : $_GET[" 변수명 "]

 POST 메소드의 경우 : $_POST[" 변수명 "]

<body>

<p> form 으로 PHP 프로그램 실행</p>

<form action="formexample1.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">=&gt;

<input type="submit" value="PHP 실행">

</form>

</body>

http://webclass.me/html5_2e/appendix/formexa mple.php?kind=search&keyword=%EB

%B0%95%EC%A7%80%EC...

kind=sear ch keyword=“박지

formexample1.html

(15)

15

<?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>

formexample1.php

다음 슬라이드

(16)

<?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'");

formexample1.php (

계속

)

(17)

PHP 로 폼 다루기 (2)

17

<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/formexamp le2.php?

seoul=on&cheonan=on&duration=4week&

date=2017-04-19&time=14%3A00&color=

%23ff8080

seoul=on&cheonan

=on

duration=4wee k

date=2017-04- 19

formexample2.html

(18)

<h3>도서 대출 신청 결과</h3>

<?php

$period = $_GET["duration"];

$d = $_GET["date"];

$t = $_GET["time"];

$c = $_GET["color"];

?>

대출 요청 도서관:

<?php

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

seoul=on&cheonan=

on&

duration=4week&

date=2017-04-19&

time=14%3A00&

color=%23ff8080

formexample2.php

(19)

보충 - 폼 (3)

19

<form action="formexample3.php" method="GET">

대출 도서관 선택:

<label> <input type="checkbox" name="place[]" value="seoul">서울도서관

</label>

<label> <input type="checkbox" name="place[]" value="cheonan">천안도 서관</label>

<label> <input type="checkbox" name="place[]" value="jeju">제주도서관

</label> <br><br>

대출 기간 선택:

<select name="duration[]" multiple>

<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="submit" value="신청하기">

<input type="reset" value="리셋">

</form>

<h3>도서 대출 신청 결과</h3>

<?php

$city = $_GET["place"];

$period = $_GET["duration"];

?>

대출 요청 도서관:

<?php

for ($i=0; $i<count($city); $i++) print

$city[$i]." ";

?>

<br>

대출 요청 기간:

<?php

for ($i=0; $i<count($period); $i++) print

$period[$i]." ";

?>

formexample3.html

formexample3.php

(20)

A.3 데이터베이스 연결하기

(21)

SQL 문

■ 데이터베이스를 다루기 위한 언어

데이터베이스 생성 , 테이블 생성 , 테이블에 레코드 읽기 , 저장 , 변경 등을 수행

■ query ( 질의 )

SQL 문으로 기술된 데이터베이스에 대한 요청

 예 , 이미 생성된 데이터베이스 테이블에 레코드 삽입 및 접근

테이블에 레코드 삽입 : insert

 insert into 테이블이름 ( 필드이름 1, 필드이름 2, . . .) values ( 필드 값 1, 필드값 2 . . . )

테이블에서 레코드 선택 : select

 select 필드이름 1, 필드이름 2, . . .

 select * from 테이블이름 where 조건

21

(22)

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>

favorate_food.html

http://webclass.me/.../.../favorate_food .php?

name=heemin&food=korean

(23)

23

<?php

$db = new mysqli("localhost", "webclass", "webclass1234", "favorate_food"); //

데이터베이스 연결

if (mysqli_connect_errno()) {

print "Error: Could not connect to database server.";

exit;

}

mysqli_set_charset($db, "utf8");

$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 {

  … }

?>

Id (정수) name ( 문 자 )

food ( 문 자 )

p10654 sblim korean

p11237 heemin korean p13689 itdept japanese p16579 ictconv chinese

favorate_food.php

Database : favorate_food Table : vote

name=heemi n

food=korean

(24)

<?php …

$name = $_GET["name"];

$food = $_GET["food"];

  …

if ($result->num_rows > 0) { … } 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;

$result = $db->query("select * from vote where food = 'japanese'");

print "<br/> 일식: ".$result->num_rows;}

?>

Id (정수) name ( 문 자 )

food ( 문 자 )

p10654 sblim korean

p11237 heemin korean p13689 itdept japanese p16579 ictconv chinese

favorate_food.php (

계속

)

name=heemi n

food=korean

Database : favorate_food Table : vote

Referensi

Dokumen terkait