1 / 62

쿠키와 세션

8 장. 쿠키와 세션. 학습 목표. 쿠키의 개념에 대하여 이해한다 쿠키를 생성하고 삭제하는 방법을 익힌다 세션 개념을 이해하고 쿠기와의 차이점을 이해한다 세션의 초기화 , 생성 , 삭제하는 방법을 익힌다 . 등록된 세션 변수의 사용법을 익힌다. 주요 학습 내용. 01. 쿠키 02. 세션. 쿠키란 ?. 01. 로그인한 다음 사이트의 어떠한 페이지로 이동하여도 로그인 상태가 유지 쿠키 : 클라이언트 사용자가 웹 서버에 접속하여 로그인 하였을 때 클라이언트 컴퓨터에 저장되는 데이터

Download Presentation

쿠키와 세션

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 8장 쿠키와 세션

  2. 학습 목표 쿠키의 개념에 대하여 이해한다 쿠키를 생성하고 삭제하는 방법을 익힌다 세션 개념을 이해하고 쿠기와의 차이점을 이해한다 세션의 초기화, 생성, 삭제하는 방법을 익힌다. 등록된 세션 변수의 사용법을 익힌다

  3. 주요 학습 내용 01. 쿠키 02. 세션

  4. 쿠키란? 01 로그인한 다음 사이트의 어떠한 페이지로 이동하여도 로그인 상태가 유지 쿠키 : 클라이언트 사용자가 웹 서버에 접속하여 로그인 하였을 때 클라이언트 컴퓨터에 저장되는 데이터 사이트의 어떠한 페이지에서도 로그인된 상태와 로그인된 아이디 등을 이용 가능 만약 쿠기라는 개념이 없다면 로그인 시 로그인 상태와 로그인 아이디를 DB에 써 넣어야 함

  5. 함수의 인자 설명 name 쿠기의 이름 value 쿠키의 값 expire 쿠키가 유효한 시간 path '/home/' 이라고 설정하면 ‘/home/' 디렉토리와 서브 디렉토리에서 쿠키를 사용 가능. domain 쿠키를 이용할 수 있는 도메인을 의미 secure TRUE 로 설정하면 접속에서만 쿠키가 설정 쿠키 생성 02 setcookie() 함수 bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

  6. 【예제 8-1】cookie1.php 02 쿠키 생성 예 01 <? 02$cookie_r1 = setcookie("userid", "hkd", time()+8); 03$cookie_r2 = setcookie("username", "홍길동", time()+8); 04 05if ( $cookie_r1 and $cookie_r2) 06echo "쿠키 생성이 완료 되었습니다(단, 생성된 쿠키는 8초간 지속됩니다)."; 07 ?>

  7. 【예제 8-2】cookie2.php 02 생성된 쿠키 사용 예 01 <? 02echo "생성된 'userid' 쿠키 : ".$_COOKIE[userid]."<br>"; 03echo "생성된 'username' 쿠키 : ".$_COOKIE[username]."<br>"; 04 ?>

  8. 【예제 8-3】cookie3.php 02 쿠키 삭제 예 01 <? 02setcookie("userid");// userid 쿠키 삭제 03setcookie("username");// username 쿠기 삭제 0405 06echo "생성된 'userid' 쿠키 : ".$_COOKIE[userid]."<br>"; 07echo "생성된 'username' 쿠키 : ".$_COOKIE[username]."<br>"; 08 ?>

  9. 세션이란? 02 쿠기가 로그인 정보를 클라이언트 컴퓨터에 저장하는데 반하여 세션에서는 보안상 로그인 정보를 서버에 저장 PHP 4에서 추가 되었는데 웹 사이트에 연속적으로 접속할 때 이전의 접속 정보를 이용할 수 있는 방법을 제공 서버에서 세션 아이디(Session id)라고 부르는 유일한 아이디를 부여하여 서버의 특정 디렉토리에 저장 세션 아이디는 또한 클라이언트 컴퓨터에 저장되거나 URL를 통하여 클라이언트를 통하여 전달

  10. 【예제 8-4】session1.php 02 session_start( ) 함수 bool session_start( ) <? session_start(); echo '세션이 시작되었습니다.<br><br>'; $_SESSION['color'] = 'blue'; $_SESSION['animal'] = 'dog'; $_SESSION['time'] = time(); echo "<a href='session2.php'>session2.php로 이동</a>"; ?>

  11. 【예제 8-5】session2.php 02 등록된 세션 사용 예 <? session_start(); echo '세션이 시작되었습니다.<br><br>'; echo $_SESSION['color'].'<br>'; echo $_SESSION['animal'].'<br>'; echo date('Y-m-d(H:i:s)', $_SESSION['time']); ?>

  12. 【예제 8-6】session3.php 02 세션 등록의 세가지 방법 <? // session_register()는 PHP 4와 PHP 5에서 사용 $var1 = "조관우"; session_register("var1"); // PHP 4.1.0 버전 이후에는 일반적으로 $_SESSION 이 더 많이 사용 $_SESSION["var2"] = "동방신기"; // PHP 4.1.0 이전 버전에서는 $HTTP_SESSION_VARS 를 사용 $HTTP_SESSION_VARS["var3"] = "조용필"; echo "<a href='session4.php'> session4.php로 이동 </a>"; ?>

  13. 【예제 8-7】session4.php 02 등록된 세션 출력 예 <? session_start(); echo '세션이 시작되었습니다.<br><br>'; echo $_SESSION['var1'].'<br>'; echo $_SESSION['var2'].'<br>'; echo $_SESSION['var3'].'<br>'; echo '<br>'; echo $var1.'<br>'; echo $var2.'<br>'; echo $var3.'<br>'; ?>

  14. 【예제 8-8】session5.php 02 세션 삭제 <? session_start(); unset($var1);// unset($_SESSION[var1]), session_unregister('var1') unset($var2);// unset($_SESSION[var2]), session_unregister('var2') unset($var3);// unset($_SESSION[var3]), session_unregister('var3') if ($var1 and $var2 and $var3) { echo $var1.'<br>'; echo $var2.'<br>'; echo $var3.'<br>'; } else echo "세션 변수가 모두 삭제 되었습니다."; ?>

  15. 9장 웹 사이트 초기 화면 제작

  16. 학습 목표 완성된 실습 홈페이지의 기능을 이해한다 홈페이지의 프레임 구성을 이해한다 세션 변수를 이용하는 법을 익힌다 홈페이지 초기 화면을 제작하는 법을 익힌다.

  17. 주요 학습 내용 01. 완성된 홈페이지 02. 홈페이지 초기 화면

  18. 완성된 홈페이지 01 [그림 9-1] 완성된 홈페이지(http://php.swc.ac.kr)

  19. 실습 홈페이지 기능 02 ⑴ 회원가입 및 로그인 기능 ⑵ 블로그형 방명록 ⑶ 누구나 자유롭게 글을 쓸 수 있는 자유게시판 ⑷ 관리자만이 글을 쓸 수 있는 리플형의 공지사항 게시판 ⑸ 답변글을 올릴 수 있는 질의응답 게시판 ⑹ 파일 첨부 기능이 있는 자료실 ⑺ 설문조사

  20. 홈페이지 초기 화면 (로그인 전) 03 [그림 9-2] 로그인 전의 홈페이지 초기 화면

  21. 홈페이지 초기 화면 (로그인 후) 04 [그림 9-3] 로그인 후의 홈페이지 초기 화면

  22. 초기 홈페이지 프레임 구성 05 사용되는 3개 파일 ⑴ index.php : 메인 화면의 틀 ⑵ top.php : 메인 화면의 상단 프레임(메뉴 부분) ⑶ main_init.php : 메인 화면의 하단 프레임(메인 부분)

  23. 【예제 9-1】index.php 02 홈페이지 화면의 프레임 틀 1 : <html> 2 : <head> 3 : <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ks_c_5601-1987"> 4 : <title>:: PHP 프로그래밍 입문에 오신 것을 환영합니다~~ ::</title> 5 : </head> 6 : 7 :<frameset framespacing="0" border="0" frameborder="0“ rows="210,*"> 8 :<frame name="top" src="top.php" scrolling="auto" noresize> 9 :<frame name="main" src="main_init.php" scrolling="auto" noresize> 10 : </frameset> 11 : 12 : </html>

  24. 【예제 9-2】top.php 02 상단 프레임 1 : <? session_start(); ?>// 세션 변수 초기화 4 : <html> 5 : <head> 6 : <title>:: PHP 프로그래밍 입문에 오신것을 환영합니다~~ ::</title> 7 : <link rel="stylesheet" href="style.css" type="text/css"> 8 : </head> 9 : <body leftmargin="0" topmargin="0" marginwidth="0“ marginheight="0"> 10 :<table width="776" align="center" cellspacing="0" cellpadding="0" border="0"> 11 :<tr><td> 13 : <table width=776 cellspacing="0" cellpadding="0" border="0"> 15 : <tr> <td colspan="10"> 17 : <img border="0" src="img/sub_title.gif" width="776" height="146"></td></tr>

  25. 【예제 9-2】top.php 02 31 : <? 32 :if (!$userid) 33 :{ 34 : echo "<TD> 36 : <a href='login/login_form.html' target='main'> 37 : <img SRC='img/menu_02.gif' WIDTH=87 HEIGHT=47 border=0 ALT=''></a></TD> "; 39 :} 40 :else 41 :{ 42 :echo " <TD> 44 : <a href='login/logoff.php' target='main'> 45 : <img SRC='img/menu_10.gif' WIDTH=87 HEIGHT=47 border=0 ALT=''></a></TD> "; 47 :}

  26. 【예제 9-2】top.php 02 48 :if (!$userid) 49 :{echo " 51 : <TD> 52 : <a href='login/member_form.html' target='main'> 53 : <img SRC='img/menu_03.gif' WIDTH=84 HEIGHT=47 border=0 ALT=''></a></TD> "; 55 :} 56 :else 57 : {echo " 59 : <TD> 60 : <a href='login/modify_memberinfo.php' target='main'> 61 : <img SRC='img/menu_11.gif' WIDTH=84 HEIGHT=47 border=0 ALT=''></a></TD> "; 63 :} 64 : ?>

  27. 【예제 9-2】top.php 02 방명록 65 : <TD> 66 : <a href="guestbook/guestbook.php" target="main"> 67 : <img SRC="img/menu_04.gif" WIDTH=86 HEIGHT=47 border=0 ALT=""></a></TD> 68 : <TD> 69 : <a href="freeboard/list.php" target="main"> 70 : <img SRC="img/menu_05.gif" WIDTH=86 HEIGHT=47 border=0 ALT=""></a></TD> 71 : <TD> 72 : <a href="notice/list.php" target="main"> 73 : <img SRC="img/menu_06.gif" WIDTH=90 HEIGHT=47 border=0 ALT=""></a></TD> 74 : <TD> 75 : <a href="qna/list.php" target="main"> 76 : <img SRC="img/menu_07.gif"WIDTH=85 HEIGHT=47 border=0 ALT=""></a></TD> 자유게시판 목록보기 방명록 버튼 공지사항 목록보기 자유게시판 버튼 질의응답 목록보기 공지사항 버튼 자유게시판 버튼

  28. 【예제 9-2】top.php 02 자료실 목록보기 77 : <TD> 78 : <a href="down/list.php" target="main"> 79 : <img SRC="img/menu_08.gif" WIDTH=88 HEIGHT=47 border=0 ALT=""></a></TD> 80 : <TD> 81 : <a href="survey/survey.php" target="main"> 82 : <img SRC="img/menu_09.gif" WIDTH=89 HEIGHT=47 border=0 ALT=""></a></TD> 83 : </TR> 84 : </table> 85 : </td> 86 : </tr> 87 : </table> 88 : <!--메뉴끝--> 89 : </body> 90 : </html> 자료실 버튼 설문조사 설문조사 버튼

  29. 【예제 9-3】main_init.php 02 초기 하단 프레임 1 : <html> 2 : <head> 3 : <title> :: PHP 프로그래밍 입문에 오신 것을 환영합니다~~ :: </title> 4 : <link rel="stylesheet" href="style.css" type="text/css"> 5 : </head> 7 : <body leftmargin="0" topmargin="0" marginwidth="0“ marginheight="0"> 8 : <table width="776" align="center" cellspacing="0" cellpadding="0“ border="0"> 9 : <tr height=150><td></td></tr> 10 : <tr align=center> 11 : <td> 메인화면 입니다. </td></tr> 15 : </table> 16 : </body> 17 : </html>

  30. 10장 회원 가입과 로그인

  31. 학습 목표 작성된 회원가입 내용을 DB 테이블에 저장하는 방법을 익힌다 세션에 의한 로그인 처리에 대해 이해한다 아이디 중복 체크 기능을 이해한다 로그인 시 아이디와 비밀번호를 확인하고 처리하는 방법을 익힌다 로그아웃 시 세션을 삭제하는 방법을 익힌다. 회원 정보를 수정하는 법을 익힌다.

  32. 주요 학습 내용 01. 회원가입 02. 로그인 03. 회원가입 및 로그인 동작 확인

  33. 파일명 설명 member.sql 회원가입 DB 테이블 생성 명령 member_form.html 회원가입 양식 insert.php 회원가입 양식 시 작성한 내용 DB에 저장 modify_memberinfo.php 회원정보 수정 양식 check_id.php 아이디 중복 확인 modify.php 회원정보 DB에서 수정 login_form.html 로그인 화면 login.php 로그인 시 아이디와 비밀번호 확인 logoff.php 로그 아웃 처리 회원가입 및 로그인 파일 목록 01 [표 10-1] 회원 가입과 로그인에 사용되는 파일 목록

  34. 회원가입/로그인 설치 02 ⑴ 교재 뒤에 첨부된 CD의 "www" 폴더에서 “dbconn.php" 파일과 “style.css”파일을 찾아 여러분의 작업 폴더(“C:\Apache\htdocs\본인이니셜\www") 밑으로 복사한다. ⑵ 작업 폴더(“www" 폴더) 밑에 “login" 폴더를 만들고 생성된 “login" 폴더 밑에 교재 뒤 CD의 “www\login" 폴더에 있는 파일들과 "img" 디렉토리를 통째로 복사한다. ⑶ 회원가입 DB 테이블을 생성한다.

  35. 필드 이름 타입 추가 사항 필드 설명 id varchar(10) not null, primary key 아이디 passwd varchar(10) not null 비밀 번호 name varchar(10) not null 이름 sex char(1) 성별 tel varchar(20) 전화 번호 address varchar(90) 주소 회원가입 DB 테이블 03 [표 10-2] 회원 가입 DB 테이블(테이블 명 : member)

  36. 회원가입 DB 테이블 만들기 04 메모장으로 다음을 타이핑한 다음 “c:\mysql\bin”폴더 밑에 “member.sql”이름으로 저장 create table member ( id varchar(10) not null, passwd varchar(10) not null, name varchar(10) not null, sex char(1), tel varchar(20), address varchar(90), primary key(id) ); 명령 프롬프트에서 다음을 실행 C:\mysql\bin> mysql -uphp5 -p1234 php5_db < member.sql

  37. 【예제 10-1】member_form.html 02 회원가입 폼 양식 1 : <html> 2 : <body> 3 : <head> 4 : <script> 5 :function check_id( ) 6 :{window.open("check_id.php?id=" + document.member_form.id.value, 8 : "IDcheck","left=200, top=200, width=250,height=100, 9 : scrollbars=no,resizable=yes");} 11 : 12 :function check_input( ) 13 :{if (!document.member_form.id.value) 15 :{ alert("아이디를 입력하세요"); 17 : document.member_form.id.focus( ); 18 : return; }

  38. 【예제 10-1】member_form.html 02 21 :if (!document.member_form.name.value) 22 :{ alert("이름을 입력하세요"); 24 :document.member_form.name.focus( ); 25 : return; } 27 : 28 : if (!document.member_form.passwd.value) 29 :{ alert("비밀번호를 입력하세요"); 31 : document.member_form.passwd.focus( ); 32 : return; } 34 : 35 :if (!document.member_form.passwd_confirm.value) 36 :{ alert("비밀번호확인을 입력하세요"); 38 : document.member_form.passwd_confirm.focus( ); 39 : return; }

  39. 【예제 10-1】member_form.html 02 42 :if (document.member_form.passwd.value != 43 : document.member_form.passwd_confirm.value) 44 : { alert("비밀번호가 일치하지 않습니다.\n다시 입력해주세요."); 46 : document.member_form.passwd.focus( ); 47 : document.member_form.passwd.select( ); 48 : return; } 51 :document.member_form.submit( ); 52 : } 53 : 54 :function reset_form( ) 55 :{ document.member_form.id.value = ""; 57 : document.member_form.name.value = ""; 58 : document.member_form.passwd.value = ""; 59 : document.member_form.passwd_confirm.value = ""; 60 : document.member_form.phone1.value = ""; 61 : document.member_form.phone2.value = ""; 62 : document.member_form.phone3.value = "";

  40. 【예제 10-1】member_form.html 02 63 : document.member_form.address.value = ""; 65 : document.member_form.id.focus( ); 67 : return; 68 : } 69 : 70 : </script> 71 : <link rel="stylesheet" href="../style.css" type="text/css"> 72 : </head> 73 : <body topmargin="0"> 74 : <table border=0 cellspacing=0 cellpdding=0 width='776' 75 : align='center'> 76 : <tr><td><img src="img/member_title.gif"></td></tr> 79 : <tr><td background="img/bbs_bg.gif"> 81 : <img border="0" src="img/blank.gif" width="1" height="2"> 82 : </td> 83 : </tr> 84 : </table>

  41. 【예제 10-1】member_form.html 02 85 : <table align=center border="0" cellspacing="0" cellpadding="15" 86 : width="718"> 87 : <tr><td align=center> 89 :<form name=member_form method=post action=insert.php> 90 : <table border=0 cellspacing=0 cellpadding=0 align=center 91 : width="682" > 92 : <tr><td bgcolor=DEDEDE> 95 : <table border="0" width=682 cellspacing="1" cellpadding="4"> 96 : <tr><td width=20% bgcolor=#F7F7F7 align=right 98 : style=padding-right:6> 99 : * 아이디 :</td> 100 : <td bgcolor=#FFFFFF style=padding-left:10> 101 : <input type=text size=12 class=m_box 102 : maxlength=12 name=id> 103 : <font color=#2590B3></font> 104 : <input type=button value="중복 확인" 105 :onClick="check_id( )"> </td> </tr>

  42. 【예제 10-1】member_form.html 02 108 : <tr><td bgcolor=#F7F7F7 align=right style=padding-right:6> 110 : * 이름 :</td> 111 : <td bgcolor=#FFFFFF style=padding-left:10> 112 : <input type=text size=12 class=m_box maxlength=12 113 :name=name></td> </tr> 115 : <tr> <td bgcolor=#F7F7F7 align=right style=padding-right:6> 117 : * 비밀번호:</td> 118 : <td bgcolor=#FFFFFF style=padding-left:10> 119 : <input type=password size=10 class=m_box maxlength=10 120 :name=passwd><font color=#2590B3> 121 : </font/></td> </tr> 123 : <tr> <td bgcolor=#F7F7F7 align=right style=padding-right:6> 125 : * 비밀번호 확인:</td> 126 : <td bgcolor=#FFFFFF style=padding-left:10> 127 : <input type=password size=12 class=m_box maxlength=12 128 :name=passwd_confirm> </td>

  43. 【예제 10-1】member_form.html 02 130 : <tr><td bgcolor=#F7F7F7 align=right style=padding-right:6> 132 :성별:</td> 133 : <td bgcolor=#FFFFFF style=padding-left:10> 134 : <input type=radioname=sexvalue='M' checked>남 135 : <input type=radioname=sexvalue='W'>여 136 : </td></tr> 138 : <tr><td bgcolor=#F7F7F7 align=right style=padding-right:6> 140 :휴대전화:</td> 141 : <td bgcolor=#FFFFFF style=padding-left:10> 142 : <select class=input2 name=phone1> 143 : <option value=''>선택</option> 144 : <option value='010'>010</option> 145 : <option value='011'>011</option> 146 : <option value='016'>016</option> 147 : <option value='017'>017</option> 148 : <option value='018'>018</option> 150 : </select>

  44. 【예제 10-1】member_form.html 02 151 : - <input type=text size=4 class=m_box name=phone2 152 : maxlength=4> 153 : - <input type=text size=4 class=m_box name=phone3 154 : maxlength=4> 155 : </td> 156 : </tr> 157 : <tr> 158 : <td bgcolor=#F7F7F7 align=right 159 : style=padding-right:6 rowspan=3> 160 :주 소:</td> 161 : </tr> 162 : <tr> 163 : <td bgcolor=#FFFFFF style=padding-left:10> 164 : <input type=text size=50 class=m_box name=address> 165 : </td> 166 : </tr> 168 : </table>

  45. 【예제 10-1】member_form.html 02 169 : <!---------- 회원가입 입력 폼 끝---------------> 170 : </td> 171 : </tr> 172 : <tr> <td align=center height=60> 174 : <img src="img/ok.gif" border="0" onclick=check_input( )> 175 : <img src="img/reset.gif" border="0" 176 :onclick=reset_form( )></td> </tr> 178 :</form> 179 : </table> 180 : </td> 181 : </tr> 182 : </table> 183 : <!------------- 컨텐츠 테이블 끝 ----------------> 185 : </td> </tr> </table> 188 : </body> 189 : </html>

  46. 【예제 10-2】check_id.php 02 아이디 중복 체크 1 : <? 2 :if(!$id) 3 :{ 4 : echo("아이디를 입력하세요."); 5 :} 6 :else 7 : { 8 :include "../dbconn.php";// DB 접속 및 선택 9 : 10 :$sql = "select * from member where id='$id' "; 11 : 12 :$result = mysql_query($sql, $connect); 13 :$num_record = mysql_num_rows($result);

  47. 【예제 10-2】check_id.php 02 15 :if ($num_record) 16 :{ 17 : echo "아이디가 중복됩니다.<br>"; 18 : echo "다른 아이디를 사용하세요.<br>"; 19 :} 20 :else 21 :{ 22 : echo "사용가능한 아이디입니다."; 23 :} 24 : 25 :mysql_close( ); 26 :} 27 : ?>

  48. 【예제 10-3】dbconn.php 02 데이터베이스 접속 1 : <? 2 :$connect = mysql_connect( "localhost", "php5", "1234") or 3 : die( "SQL server에 연결할 수 없습니다."); 4 : 5 :mysql_select_db("php5_db",$connect); 6 : ?>

  49. 【예제 10-4】insert.php 02 회원 가입 내용 DB 저장 1 : <? 3 :include "../dbconn.php";// dconn.php 파일을 불러옴 5 :$sql = "select * from member where id='$id'"; 6 :$result = mysql_query($sql, $connect); 7 :$exist_id = mysql_num_rows($result); 8 : 9 :if($exist_id) { echo(" 11 : <script> 12 : window.alert('해당 아이디가 존재합니다.') 13 : history.go(-1) 14 : </script> 15 : "); 16 : exit; } 19 :$regist_day = date("Y-m-d (H:i)");// 현재 날짜 저장 20 :$ip = $REMOTE_ADDR;// 방문자의 IP 주소를 저장

  50. 【예제 10-4】insert.php 02 22 :if ($phone1 && $phone2 && $phone3) 23 :$tel = $phone1."-".$phone2."-".$phone3; 24 :else 25 :$tel = ""; 26 : 27 :$sql = "insert into member(id, passwd, name, sex, tel, address) "; 28 :$sql .= "values('$id', '$passwd', '$name', '$sex', '$tel', '$address')"; 29 : 30 :// 레코드 삽입 명령 31 :mysql_query($sql, $connect);// $sql 에 저장된 명령 실행 32 : 33 :mysql_close( );// DB 연결 끊기 34 : 35 :Header("Location:login_form.html");// login_form.html 로 이동 36 : ?>

More Related