< MySQL DB 연동 >

 

< 데이터베이스, 테이블 생성 >

 

MySQL과 php를 연동하기 위해서는 MySQL에 사용할 데이터베이스와 테이블이 있어야 한다.

나는 create database mydb; -> use mydb; 라는 명령어를 이용하여 'mydb'라는 데이터베이스를 만들고

create table member(~); 라는 명령어를 이용하여 위와 같이 'member'라는 테이블을 생성했다.

 

desc member;라는 명령어로 'member'라는 테이블 안에 있는 모든 데이터가 위와 같이 생성된 것을 확인할 수 있다.

 

로그인과 회원가입 기능을 사용하기 위해 insert into ~ 명령어를 이용하여 미리 위와 같은 값을 임의로 생성했다.

select *from member;라는 명령어로 현재 필드에 위와 같은 값들이 저장되어 있는 것을 확인할 수 있다.

 

< 로그인 >

 

1. MySQL 연결

-> $con=mysqli_connect("localhost","root","비밀번호","mydb") or die("error");

-> 이때 비밀번호는 프로그램을 처음 설치할때 설정했던 비밀번호를 입력하면 된다.)

2. input으로 입력 받은 id, pw 값 받기

-> $id=$_POST['id']; $pw=$_POST['pw'];

-> login.html에서 입력받은 아이디와 비밀번호 값을 POST방식으로 받아왔다.

3. select 쿼리문

-> $query="select *from member where id='$id'";

-> 'member'라는 테이블에 입력받은 아이디가 존재하는지를 확인하기 위해 위와 같은 명령어를 'query'라는 변수에 저장한다.

4. 쿼리 결과 비교

-> 조건문 if($count>0)이라는 것은 현재 필드에 해당 아이디가 존재한다는 의미이다.

-> mysqli_fetch_assoc() 함수는 mysqli_query를 통해 얻은 result값에서 레코드를 1개씩 리턴해주는 함수이다.

-> $row=mysqli_fetch_assoc($result);아이디가 존재하는 경우 비밀번호가 일치하는지 확인한다.

-> 비밀번호가 맞다면 세션 생성 후 index.php로 이동, 비밀번호가 다르다면 "비밀번호가 일치하지 않습니다"라는 문구 출력

-> if($count>0)이 아니라면 필드에 존재하는 아이디 없다는 의미, "입력하신 아이디를 찾을 수 없습니다"라는 문구 출력

5. MySQL 연결 해제

-> mysqli_close($con);

 

1) 아이디가 존재하지 않는 경우

 

현재 필드에는 'cc'라는 아이디가 존재하지 않는다.

위와 같이 입력한 후 로그인 버튼을 누르면 결과는 다음과 같다.

 

위와 같이 존재하지 않는 아이디로 로그인을 시도했을 경우에는 '입력하신 아이디를 찾을 수 없습니다.'

라는 에러 문구가 나오는 것을 확인할 수 있다.

 

2) 비밀번호가 일치하지 않는 경우

 

현재 필드에 'jihyun'이라는 아이디로 저장된 비밀번호는 '1234'이다.

위와 같이 비밀번호를 다르게 입력한 후 로그인 버튼을 누르면 결과는 다음과 같다.

 

위와 같이 해당 아이디의 비밀번호와 일치하지 않는 경우, 즉 아이디는 존재하나 비밀번호가 다른 경우로 로그인을 시도하는 경우에는 '비밀번호가 일치하지 않습니다.'라는 에러 문구가 나오는 것을 확인할 수 있다.

 

3) 아이디와 비밀번호가 모두 일치하는 경우

 

현재 필드에 'def'라는 아이디가 존재하고 이 아이디의 비밀번호는 '2222'이다.

위와 같이 입력한 후 로그인 버튼을 누른 결과는 다음과 같다.

 

위와 같이 아이디와 비밀번호가 모두 일치하도록 로그인을 한다면 index.php 파일로 넘어가는 것을 확인할 수 있고

'로그인 되었습니다'라는 문구와 함께 필드에 저장된 name, id, pw 값이 잘 출력되는 것을 확인할 수 있다.

 

< 회원가입 >

 

1. MySQL 연결

-> $con=mysqli_connect("localhost","root","비밀번호","mydb") or die("error");

-> 이때 비밀번호는 프로그램을 처음 설치할때 설정했던 비밀번호를 입력하면 된다.)

2. input으로 입력 받은 id, pw 값 받기

-> $id=$_POST['id']; $pw=$_POST['pw']; $name=$_POST[name]; $email=$_POST[email];

-> signup.html에서 입력받은 아이디, 비밀번호, 이름, 이메일 값을 POST방식으로 받아왔다.

3. select 쿼리문

-> $query="select *from member where id='$id'";

-> 'member'라는 테이블에 입력받은 아이디가 존재하는지를 확인하기 위해 위와 같은 명령어를 'query'라는 변수에 저장한다.

4. 쿼리 결과 비교

-> 조건문 if($count>0)이라는 것은 현재 필드에 해당 아이디가 존재한다는 의미로 "회원가입 실패"라는 문구 출력

-> 조건문 if($count>0)이 아닐 경우 현재 필드에 존재하는 아이디 없다는 의미

-> 회원가입 페이지에 있는 모든 정보들을 입력했는지 안했는지 확인

-> if($id==""||$pw==""||$name==""||$email=="") 만약 하나라도 입력하지 않은 정보가 있다면 "빈칸 없이 작성해주세요"문구 출력

-> 현재 필드에 중복되는 아이디가 아니며 빈칸 없이 모두 입력했을 경우 입력한 정보를 확인시켜 주는 메세지 출력

5. MySQL 연결 해제

-> mysqli_close($con);

 

1) 중복된 아이디가 존재하는 경우

 

현재 필드에는 'jihyun'이라는 아이디가 존재한다.

회원가입 페이지에서 위와 같이 중복된 아이디를 입력한 후 가입하기 버튼을 누르면 결과는 다음과 같다.

 

위와 같이 중복된 아이디로 회원가입을 시도할 경우 '회원가입 실패'라는 에러 메세지가 뜨는 것을 확인할 수 있다.

 

2) 하나라도 입력하지 않은 정보가 있는 경우

 

회원가입 페이지에서 이메일에 아무것도 적지 않은 채로 가입하기 버튼을 누른 결과는 다음과 같다.

 

회원가입 시 하나라도 입력하지 않은 정보가 있을 경우에는 위와 같이 '빈칸 없이 작성해주세요'라는

에러 메세지가 뜨는 것을 확인할 수 있다.

 

3) 회원가입이 완료된 경우

 

현재 필드에는 'swu'라는 아이디가 존재하지 않으며 위의 경우에는 빠짐 없이 모든 정보들을 입력한 상태이다.

회원가입 페이지에 위와 같이 입력한 후 가입하기 버튼을 누른 결과는 다음과 같다.

 

중복된 아이디가 존재하지 않으며 모든 정보를 입력한 경우에는 위와 같이 회원가입이 잘 된 것을 확인할 수 있고

입력한 정보를 확인시켜 주는 메세지가 뜨는 것을 확인할 수 있다.

 

또한 cmd 창에서 select *from member;라는 명령어를 통해 필드에 있는 모든 정보들을 출력해보면

위에서 회원가입에 성공했던 정보들이 잘 저장된 것을 확인할 수 있다.

'2020-2 STUDY > Web Study' 카테고리의 다른 글

Web Study week 2 - 3  (0) 2020.09.23
Web Study week 2 - 2  (0) 2020.09.23
Web Study week 1  (0) 2020.09.16

< 세션 >

 

▶ 세션이란?

 

 

출처 : https://medium.com/lotus-fruit/the-secret-life-of-browser-cookies-cc999e82dbf8

- 웹사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법

- 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점

   즉, 사용자가 특정 웹사이트에 접속하여 머물러 있는 시간

- 사용자의 상태를 관리하기 위해 필요

   → 세션 ID를 이용하여 사용자의 정보를 유지 및 관리

- 서비스가 돌아가는 서버 측에 데이터를 저장하고 세션의 키값만을 클라이언트에 남겨둠

   → 브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터 사용

- 보안에 취약한 쿠키를 보완해주는 역할

   ※ 쿠키 : 특정 웹사이트를 방문했을 때 만들어지는 정보를 담는 파일 -> 상태정보 유지 기술

 

▶ 쿠키와 세션의 차이점

 

쿠키 세션
키와 값이 들어 있는 작은 데이터 파일 세션아이디를 인증받고 정보를 이용
방문자의 정보를 방문자 컴퓨터의 메모리 또는 파일에 저장 방문자의 정보를 서비스가 돌아가고 있는 서버에 저장
이름, 값, 만료날짜, 시간, 경로정보 등이 들어있음 발급받은 세션아이디를 쿠키로 저장
파일에 저장될 경우 탈취, 변조될 위험이 있고
스니핑에 당할 위험이 있어 보안에 취약함
클라이언트 정보 자체는 서버에 저장되어 있어
비교적 보안에 강함
브라우저를 종료하더라도 저장되어 있을 수 있음 세션 쿠키에 세션 아이디를 정한 경우
브라우저 종료 시 세션 아이디 삭제가 가능함
서버 요청 시 헤더를 바로 참조하면 되므로 속도가 빠름 세션아이디를 통해 서버에서 데이터를 다시 참조해야 하므로
속도가 비교적 느림
자동로그인, 쇼핑몰 장바구니 등 로그인 정보 유지, 사용자 인증 등

참고 출처 : jeong-pro.tistory.com/80

 

▶ 세션 사용방법

 

① 세션 시작 

      - session_start() 함수 : 새로운 세션 시작 or 기존의 세션 다시 시작

                                                  : 스크립트의 최상단에 위치해야 함

                                                  : 세션 아이디의 존재여부 확인

                                                    → 존재 : 원래 있던 세션 변수 불러옴

                                                    → 존재 X : 새로운 아이디 생성

                                                    ※ 세션 아이디 : 웹 서버에 의해 무작위로 만들어진 숫자

                                                                                : 세션이 유지되는 동안 클라이언트 측에 저장

                                                                                : 세션 변수를 등록하는 키로 사용 

 

② 세션 변수 등록

      - $_SESSION["변수이름"] = " " : 세션 변수를 $_SESSION 배열에 등록

                                                                  : 세션 변수의 이름(키값)을 서버에 저장

                                                                  : 등록된 세션 변수는 한 세션이 끝날 때까지 유지

 

③ 세션 변수 접근

      - print_r($_SESSION) : 세션에 등록된 데이터 출력

                                                     ※ print_r() 함수 : 인수로 전달받은 변수의 정보를 읽기 쉬운 형태로 표시

 

④ 세션 등록 해지

      - unset($_SESSION["변수이름"] : 세션 데이터 중 특정 변수 삭제

      - session_unset() 함수 : 현재 등록된 모든 세션 변수 해지

      - session_destroy() 함수 : 세션 아이디 삭제 (세션 자체 종료)

 

▶ 세션 관리 옵션

 

옵션 의미
session.auto_start 자동으로 세션 시작
session.cache_expire 세션 유지 시간 설정
session.cookie_domain 다른 도메인 체계에 세션 변수 공유
session.cookie_lifetime 세션아이디에 대한 쿠키의 유지 정도 설정
session.cookie_path 세션 쿠키 설정 경로
session.name 쿠키 이름으로 사용되는 세션의 이름
session.save_path 세션 데이터가 저장되는 경로
session.cookie_secure 쿠키가 안전한 접속을 통해서만 전송되게 할것인지 설정
session.hash_function 세션아이디를 생성할 때 사용할 해쉬 알고리즘 설정

참고 출처 : intellegibilisverum.tistory.com/entry/%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80

             

'2020-2 STUDY > Web Study' 카테고리의 다른 글

Web Study week 5  (0) 2020.11.18
Web Study week 2 - 2  (0) 2020.09.23
Web Study week 1  (0) 2020.09.16

< GET과 POST >

 

▶ GET 방식

- 서버로부터 정보를 조회하기 위해 설계된 메소드이다.

- Idempotent하도록 설계되었다.

    → 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다.

    → 주로 조회를 할 때 사용

- 입력데어터를 URL 정보에 붙여서 전송한다.

    ※ 쿼리스트링 : URL의 끝에 '?'와 함께 이름과 값으로 쌍을 이루는 요청 파라미터

    → 보안에 취약하다.

- 최대 데이터 길이는 256byte이다.

- 전송속도가 빠르다.

    → 전송해야할 데이터가 적을 때 이용한다.

- 예제

get.html get.php

 

▶ POST 방식

- 리소스를 생성/변경하기 위해 설계된 메소드이다.

- Non-idempotent하도록 설계되었다.

    → 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.

    → 서버의 상태나 데이터를 변경시킬 때 사용

- 입력한 데이터를 본문 안에 포함하여 전송한다.

    → 입력데이터가 URL 상에 보이지 않기 때문에 보안에 강하다.

- 입력 데이터의 개수나 크기에 제한이 없다.

    → 복잡한 형태의 자료를 전달할 때 유용하다.

- 예제

post.html post.php

'2020-2 STUDY > Web Study' 카테고리의 다른 글

Web Study week 5  (0) 2020.11.18
Web Study week 2 - 3  (0) 2020.09.23
Web Study week 1  (0) 2020.09.16

 < WEB과 HTML > 

 

▶ 웹이란?

- WWW(World Wide Web) : 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간

- HTTP라는 프로토콜을 사용해 TCP/IP 네트워크에서 사용하기 시작

- 인터넷 상에서 멀티미디어 정보(그림, 소리, 영상 등)를 하이퍼텍스트 방식으로 연결하여 제공

 

▶ 웹의 구성요건

- HTML : 하이퍼텍스트 문서 작성을 위한 도구

- HTTP 프로토콜 : 웹 브라우저와 웹 서버 간 문서를 교환해주는 프로토콜

- URL : 요구하는 정보를 관리하는 사이트

 

▶ HTML이란?

- Hyper Text Markup Language

- 웹 페이지에서 다른 페이지로 이동할 수 있도록 하는 기능을 가진 문서를 만드는 언어

 

태그
<html> HTML 문서의 루트 요소
<head> HTML 문서의 메타데이터
<body> 웹브라우저를 통해 보이는 내용
<title> HTML 문서의 제목
<h1~6> 제목
<p> 단락

 

▶ 텍스트 요소

- 주석 : <!--주석내용-->

- 줄바꿈 : <BR>

- 줄바꿈 되지 않도록 함 : <NOBR>

- 엔티티 : HTML 예약어를 기존에 사용하던 의미 그대로 사용하기 위해 만든 문자셋

 

엔티티 이름 엔티티 문자 엔티티 이름 엔티티 문자
&nbsp; 공백 &amp; &
&lt; < &gt; >
&quot; " &apos; '
&#48; ~ &#57; 숫자 0 ~ 9 &#65; ~ &#90; 영문자 A ~ Z
&#91; ~ &#122; 영문자 a ~ z &#64; @

 

▶ <font> 태그

- 구조 : <font 속성1="값1" ···>내용</font>

 

속성 의미
color 글자 색 지정
size 글자 크기 지정
face 글씨체 지정

 

▶ <img> 태그 

- 구조 : <img src="이미지경로" width="" height="" border="" alt="대체문자열">

- <img> 태그는 종료 태그가 없음

 

▶ <table> 태그

 

태그
<tr> 테이블의 열을 구분
<th> 각 열의 제목
<td> 각각의 셀로 나누기

 

속성 의미 속성 의미
bgcolor 배경색 border 테이블 경계선 굵기
width 너비 height 높이
align 셀의 가로줄 정렬
(수평정렬)
left, center, right
valign 셀의 세로줄 정렬
(수직정렬)
top, middle, bottom
colspan 열 합치기 rowspan 행 합치기

 

▶ 폼(form)

- 웹브라우저를 통해 입력된 모든 데이터를 한번에 웹서버로 전송하는 양식

 

태그
form 폼 정의 (최상위 태그)
input 사용자 입력
select 항목 선택
textarea 여러 줄 입력

 

▶ <form> 태그

- 구조 : <form 속성1="값1"[속성2="값2" ···>내용</form>

- 단독으로 쓰이지 않고 다양한 정보를 입력하는 양식 포함

 

속성 의미
action 폼 데이터를 받아 처리하는 웹 페이지의 URL 설정
method 폼 데이터가 전송되는 HTTP 방식 설정
name 폼을 식별하기 위한 이름 설정

 

▶ <input> 태그

 

속성 속성 값 의미
type text 한 줄 텍스트 입력
radio 라디오 버튼 (하나만 선택)
checkbox 체크박스 (다중선택)
password 암호 입력
file 파일 선택
button 버튼 모양 출력
reset 초기화
submit 서버에 전송
name 텍스트 이름 설정
value 텍스트 초기값 설정

 

▶ <select> 태그

- 구조 : <select 속성1="값1"[속성2="값2" ···>

                          <option 속성1="값1"[속성1]>항목1</option>

                          ···

               </select>

- 여러 개 항목이 나타나는 목록 상자에서 항목 선택

 

속성 의미 속성 의미
name 상자 이름 value 항목 값 설정
multiiple 다중 선택 selected 초기값 설정

 

▶ <textarea> 태그

- 구조 : <textarea 속성1="값1" [속성2="값2" ···]>···</textarea>

- 여러 줄의 텍스트 입력

 

속성 속성 값 의미
name 텍스트 이름 설정
cols 숫자 텍스트 영역 너비
rows 숫자 텍스트 영역 높이
wrap off 줄바꿈 설정
soft 자동으로 행바꿈
hard 캐리지 리턴 문자 전달

 

 

 

 

'2020-2 STUDY > Web Study' 카테고리의 다른 글

Web Study week 5  (0) 2020.11.18
Web Study week 2 - 3  (0) 2020.09.23
Web Study week 2 - 2  (0) 2020.09.23

+ Recent posts