이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 데이터베이스 생성하기
phpmyadmin -> 데이터베이스 -> 새 데이터베이스 만들기 ->
이름 : phpdiary
Collation : utf8_general_ci
데이터베이스의 테이블들은 하나의 '데이터베이스' 에 속하게 된다.
여기서 '데이터베이스' 란 테이블들의 모음이라고 생각하면 쉽다.
2015년 1월 2일 금요일
php 간단 일기장 - DB 테이블 설계하기
이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - DB 테이블 설계하기
컬럼 추출
일기장은 내용과 글 쓴 날짜가 필요하다.
여기서 명사를 추출해보면
[일기장]
[내용]
[글 쓴 날짜]
가 된다.
이때 [일기장] 한 페이지에 하나의 [내용] 과 하나의 [글쓴 날짜] 가 있다.
[일기장] 은 여러 페이지가 있을 수 있다.
따라서 [일기장] 은 [내용] 과 [글쓴 날짜] 가 여러개 있는 형태이다.
풀어써 보면
일기장 : [내용, 글쓴 날짜], [내용, 글쓴 날짜] , ....
이렇게 내용, 글쓴 날짜 등 데이터의 집합을 가지고 있는 것은 하나의 테이블이 된다.
primary key
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - DB 테이블 설계하기
컬럼 추출
일기장은 내용과 글 쓴 날짜가 필요하다.
여기서 명사를 추출해보면
[일기장]
[내용]
[글 쓴 날짜]
가 된다.
이때 [일기장] 한 페이지에 하나의 [내용] 과 하나의 [글쓴 날짜] 가 있다.
[일기장] 은 여러 페이지가 있을 수 있다.
따라서 [일기장] 은 [내용] 과 [글쓴 날짜] 가 여러개 있는 형태이다.
풀어써 보면
일기장 : [내용, 글쓴 날짜], [내용, 글쓴 날짜] , ....
이렇게 내용, 글쓴 날짜 등 데이터의 집합을 가지고 있는 것은 하나의 테이블이 된다.
primary key
php 간단 일기장 - DB 테이블 실제 생성
이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - DB 테이블 실제 생성
컬럼명 짓기
[일기장] : [페이지], [내용], [글 쓴 날짜] 를 영어로 바꿔보면
diary, page, contents, write date 가 된다.
이때 Page는 각 [내용, 글 쓴 날짜] 를 구분해주는 ID 이므로,
diary_id 라고 이름붙인다.
contents 는 그냥 그대로 contents 라고 이름붙이면 된다.
Write Date도 그냥 사용하고 싶지만 데이터베이스의 컬럼은 띄어쓰기를 허용하지 않는다.
따라서 띄어쓰기 대신 _ 를 붙여서 write_date 라고 이름붙인다.
컬럼 타입
diary_id 는 유일한 숫자여야 한다.
또한 사용자가 직접 관리할 필요가 없이 하나의 contents 와 write_date 가 추가될 때마다 페이지 장 수가 늘어나면 된다.
contents 는 사용자가 글자를 입력하는 부분이므로 글자 형이다.
다만 우리는 간단한 일기장을 만들 것이기 때문에 500글자까지만 입력할 수 있다고 가정하자.
write_date 는 말 그대로 '날짜' 를 나타내기 때문에 '날짜' 형이다.
null
null 은 '값이 없다' 라는 의미이다. 따라서 allow null 이라고 하면 '값이 없을 수 있다' 라는 의미가 된다.
diary 테이블에서는 diary_id, contents, write_date 는 셋 다 필수적으로 있어야 한다.
따라서 not null 이 된다.
기본값
일반적으로 RDBMS 는 값이 입력될 때 아무것도 입력되지 않으면 '기본으로 설정해둔 값을 넣어라' 라고 설정할 수 있다.
diary_id 의 경우 유일한 값이며 자동으로 늘어난다.
RDBMS 는 이렇게 다른 행과 구별하는 id 의 경우 많이 사용하기 때문에 특별한 기능을 넣었다.
그것이 auto increasement 이다.
일기장의 특정 페이지를 찾기 위해서는 '색인'을 만들어놓고 찾아보면 쉽다.
즉 목차를 미리 만들어서 이 내용이 여기 있구나.. 라고 미리 마킹해 두는 것이다.
이렇게 미리 색인을 만들어서 찾아보기 쉽게 만든 것을 인덱스라고 한다.
Primary key 라는 것은 인덱스의 종류로써, contents 와 write_date 를 지정하는 대표 값을 뜻한다.
write_date 의 경우 굳이 사용자가 입력할 필요 없이 실제로 저장된 시간이 입력되면 된다.
따라서 사용자가 직접 입력해야 하는 부분은 contents 뿐이다.
실제 컬럼 (필드) 생성
phpmyadmin -> 왼쪽 phpdiary 클릭 -> 구조 -> 새로운 테이블 ->
이름 : diary
Number of Fields : 3
실제 컬럼 (필드) 정의 입력
필드 1 - 이름 : diary_id
필드1 - 종류 : int
필드1 - 인덱스 : primary
필드1 - AUTO_INCREMENT : 체크
필드2 - 이름 : contents
필드2 - 종류 : varchar
필드2 - 길이 : 500
필드3 - 이름 : write_date
필드3 - 종류 : TIMESTAMP
필드3 - 기본값 : CURRENT_TIMESTAMP
저장 버튼 클릭
실제로 데이터베이스에서는 날짜를 지정하는 타입이 TIMESTAMP 외에도 date, datetime 등 여러가지가 있다.
다만 mysql 에서는 '자동으로 현재시간'을 지정하기 위해서는 TIMESTAMP 형이어야 한다는 제약이 있다.
따라서 write_date 는 TIMESTAMP 형으로 지정한다.
DML
CREATE TABLE `phpdiary`.`diary` (
`diary_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`contents` VARCHAR( 500 ) NOT NULL ,
`write_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM ;
이런 메세지가 나온다. 이것은 GUI 로 실행한 것을 텍스트로 실행했을 경우 이런 명령어로 실행하면 된다는 의미이다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - DB 테이블 실제 생성
컬럼명 짓기
[일기장] : [페이지], [내용], [글 쓴 날짜] 를 영어로 바꿔보면
diary, page, contents, write date 가 된다.
이때 Page는 각 [내용, 글 쓴 날짜] 를 구분해주는 ID 이므로,
diary_id 라고 이름붙인다.
contents 는 그냥 그대로 contents 라고 이름붙이면 된다.
Write Date도 그냥 사용하고 싶지만 데이터베이스의 컬럼은 띄어쓰기를 허용하지 않는다.
따라서 띄어쓰기 대신 _ 를 붙여서 write_date 라고 이름붙인다.
컬럼 타입
diary_id 는 유일한 숫자여야 한다.
또한 사용자가 직접 관리할 필요가 없이 하나의 contents 와 write_date 가 추가될 때마다 페이지 장 수가 늘어나면 된다.
contents 는 사용자가 글자를 입력하는 부분이므로 글자 형이다.
다만 우리는 간단한 일기장을 만들 것이기 때문에 500글자까지만 입력할 수 있다고 가정하자.
write_date 는 말 그대로 '날짜' 를 나타내기 때문에 '날짜' 형이다.
null
null 은 '값이 없다' 라는 의미이다. 따라서 allow null 이라고 하면 '값이 없을 수 있다' 라는 의미가 된다.
diary 테이블에서는 diary_id, contents, write_date 는 셋 다 필수적으로 있어야 한다.
따라서 not null 이 된다.
기본값
일반적으로 RDBMS 는 값이 입력될 때 아무것도 입력되지 않으면 '기본으로 설정해둔 값을 넣어라' 라고 설정할 수 있다.
diary_id 의 경우 유일한 값이며 자동으로 늘어난다.
RDBMS 는 이렇게 다른 행과 구별하는 id 의 경우 많이 사용하기 때문에 특별한 기능을 넣었다.
그것이 auto increasement 이다.
일기장의 특정 페이지를 찾기 위해서는 '색인'을 만들어놓고 찾아보면 쉽다.
즉 목차를 미리 만들어서 이 내용이 여기 있구나.. 라고 미리 마킹해 두는 것이다.
이렇게 미리 색인을 만들어서 찾아보기 쉽게 만든 것을 인덱스라고 한다.
Primary key 라는 것은 인덱스의 종류로써, contents 와 write_date 를 지정하는 대표 값을 뜻한다.
write_date 의 경우 굳이 사용자가 입력할 필요 없이 실제로 저장된 시간이 입력되면 된다.
따라서 사용자가 직접 입력해야 하는 부분은 contents 뿐이다.
실제 컬럼 (필드) 생성
phpmyadmin -> 왼쪽 phpdiary 클릭 -> 구조 -> 새로운 테이블 ->
이름 : diary
Number of Fields : 3
실제 컬럼 (필드) 정의 입력
필드 1 - 이름 : diary_id
필드1 - 종류 : int
필드1 - 인덱스 : primary
필드1 - AUTO_INCREMENT : 체크
필드2 - 이름 : contents
필드2 - 종류 : varchar
필드2 - 길이 : 500
필드3 - 이름 : write_date
필드3 - 종류 : TIMESTAMP
필드3 - 기본값 : CURRENT_TIMESTAMP
저장 버튼 클릭
실제로 데이터베이스에서는 날짜를 지정하는 타입이 TIMESTAMP 외에도 date, datetime 등 여러가지가 있다.
다만 mysql 에서는 '자동으로 현재시간'을 지정하기 위해서는 TIMESTAMP 형이어야 한다는 제약이 있다.
따라서 write_date 는 TIMESTAMP 형으로 지정한다.
DML
CREATE TABLE `phpdiary`.`diary` (
`diary_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`contents` VARCHAR( 500 ) NOT NULL ,
`write_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM ;
이런 메세지가 나온다. 이것은 GUI 로 실행한 것을 텍스트로 실행했을 경우 이런 명령어로 실행하면 된다는 의미이다.
php 간단 일기장 - DB에 임시로 데이터 넣어보기
이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - DB에 임시로 데이터 넣어보기
테이블이 생성되고 나면 내용은 없는 껍데기만 생긴다.
테스트를 위해서 임시로 데이터를 넣자.
phpmyadmin -> 왼쪽 트리에서 phpdiary 클릭 -> 상단탭 '구조' -> diary 테이블의 [실행] 칸에 보면 4번째쯤에 '삽입' 아이콘이 있다.
마우스 오버해보면 insert 혹은 [삽입] 이라고 나온다.
클릭
데이터를 삽입할 수 있는 화면으로 이동한다.
여기서 diary_id 와 write_date 는 자동으로 설정되도록 테이블이 설계되었으므로 우리는 contents 만 입력하면 된다.
contents 안에 [첫번째 데이터] 라고 입력하고 나서 실행 버튼을 클릭하면 데이터가 들어간다.
동일한 과정을 반복해서 [두번째 데이터] 라고 입력하자.
이제 phpdiary 데이터베이스의 diary 테이블 안에는 [첫번째 데이터] 와 [두번째 데이터] 라는 일기장 두 페이지가 생성되었다.
확인을 위해서는
phpmyadmin -> 왼쪽 트리에서 phpdiary 클릭 -> 상단탭 '구조' -> diary 테이블의 [실행] 칸에 보면 4번째쯤에 '보기' 아이콘이 있다. 클릭해보면 입력한 데이터가 나온다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - DB에 임시로 데이터 넣어보기
테이블이 생성되고 나면 내용은 없는 껍데기만 생긴다.
테스트를 위해서 임시로 데이터를 넣자.
phpmyadmin -> 왼쪽 트리에서 phpdiary 클릭 -> 상단탭 '구조' -> diary 테이블의 [실행] 칸에 보면 4번째쯤에 '삽입' 아이콘이 있다.
마우스 오버해보면 insert 혹은 [삽입] 이라고 나온다.
클릭
데이터를 삽입할 수 있는 화면으로 이동한다.
여기서 diary_id 와 write_date 는 자동으로 설정되도록 테이블이 설계되었으므로 우리는 contents 만 입력하면 된다.
contents 안에 [첫번째 데이터] 라고 입력하고 나서 실행 버튼을 클릭하면 데이터가 들어간다.
동일한 과정을 반복해서 [두번째 데이터] 라고 입력하자.
이제 phpdiary 데이터베이스의 diary 테이블 안에는 [첫번째 데이터] 와 [두번째 데이터] 라는 일기장 두 페이지가 생성되었다.
확인을 위해서는
phpmyadmin -> 왼쪽 트리에서 phpdiary 클릭 -> 상단탭 '구조' -> diary 테이블의 [실행] 칸에 보면 4번째쯤에 '보기' 아이콘이 있다. 클릭해보면 입력한 데이터가 나온다.
2015년 1월 1일 목요일
php 간단 일기장 - 로그인 기능 정의
이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 로그인 기능 정의
회원가입이 요구사항에 없고 개인적으로만 사용할 것이므로 회원관리 기능은 넣지 않는다
따라서 아이디는 필요없고 간단한 비밀번호만 고정문자열로 넣어서 로그인할 수 있게 한다.
비밀번호는 주소창에 노출되면 안되므로 post 방식으로 입력되게 한다
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 로그인 기능 정의
회원가입이 요구사항에 없고 개인적으로만 사용할 것이므로 회원관리 기능은 넣지 않는다
따라서 아이디는 필요없고 간단한 비밀번호만 고정문자열로 넣어서 로그인할 수 있게 한다.
비밀번호는 주소창에 노출되면 안되므로 post 방식으로 입력되게 한다
php 간단 일기장 - 로그인 폼 만들기
이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 로그인 폼 만들기
우선 클라이언트(웹브라우저) 에 보여질 폼을 만든다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 로그인 폼 만들기
우선 클라이언트(웹브라우저) 에 보여질 폼을 만든다.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="loginsubmit.php" target="_self" method="post">
<input type="password" name="pw" />
<input type="submit" value="로그인" />
</form>
</body>
</html>
간단하게 비밀번호를 입력받고, 폼에 있는 값을 loginsubmit.php 로 넘기는 코드이다.
php 간단 일기장 - 실제 로그인 페이지 처리
이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 실제 로그인 페이지 처리
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!
php 간단 일기장 - 실제 로그인 페이지 처리
로그인을 처리하기 위한 절차
1 폼으로 입력된 값을 받는다.
2 입력된 값이 내가 설정한 값과 동일한지 비교한다.
3 동일하다면 쿠키에 [로그인되었다] 라는 마킹을 한다.
4 목록 페이지로 보낸다.
5 입력된 값이 내가 설정한 값과 다르다면 다시 로그인 페이지로 보낸다.
php 코드
1 폼으로 입력된 값을 받는다.
2 입력된 값이 내가 설정한 값과 동일한지 비교한다.
3 동일하다면 쿠키에 [로그인되었다] 라는 마킹을 한다.
4 목록 페이지로 보낸다.
5 입력된 값이 내가 설정한 값과 다르다면 다시 로그인 페이지로 보낸다.
php 코드
<?php
$pw = $_POST['pw'];
// valid
if ($pw == 'php111')
{
setcookie('logincomplete', 'true', time() + (60 * 60 * 24 /* second * minute * hour*/));
header("Location: diarylist.php");
}
else // invalid
{
header("Location: loginform.php");
}
?>
loginsubmit.php 로 저장한다.
피드 구독하기:
글 (Atom)
보통 책에 있는 페이지를 연상하면 쉽다.
이때 페이지가 하는 역할은 각각의 [내용, 글쓴 날짜] 를 구분해 준다.
즉, 어제 쓴 일기와 오늘 쓴 일기를 구별하기 위해서는 [페이지] 라는 것이 있어야 한다.
이렇게 각각의 데이터 한 행을 다른 데이터와 구분해주는 [페이지] 같은 역할을 데이터베이스에서는 primary key 혹은 ID 라고 한다.
최종 설계
따라서 일기장의 테이블 구조는
일기장 : [페이지, 내용, 글쓴 날짜], [페이지, 내용, 글쓴 날짜] , ....
처럼 된다.