Web/CodeIgniter
-
[CodeIgniter] 9. AJAX 구현: jQueryWeb/CodeIgniter 2015. 8. 28. 10:49
8장에서 XMLHttpRequest 객체를 이용해 댓글 쓰기, 삭제를 구현헀습니다. 9장에서는 jQuery를 이용해 구현해보도록 하겠습니다. AJAX를 구현하기 위해 복잡한 과정을 거치고 DOM 스크립팅을 이용해 개발했는데 9장에서 jQuery를 이용해 개발한 소스를 비교해보면 jQuery가 단순하고 간결하게 프로그래밍할 수 있습니다. 9.1 댓글 쓰기 AJAX로 구현 컨트롤러와 모델 부분은 수정하지 않고 뷰만 DOM 스크립팅에서 jQuery를 이용한 방식으로 수정하면 됩니다. * bbs/application/views/board/view_v.php 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748..
-
[CodeIgniter] 8. AJAX 구현: XMLHttpRequestWeb/CodeIgniter 2015. 8. 26. 15:32
8장에서는 AJAX(Asynchronous Javascript And XML) 방식을 이용해 게시판의 댓글을 구현해보곘습니다. jQuery 같은 자바스크립트 프레임워크를 사용하지 않고 XMLHttpRequest 를 이용해 구현합니다. 들어가기 전에 AJAX에 대해 조금 알아보면 기존 방식의 사이트는 다음과 같습니다. - 웹 브라우저가 웹 서버에 요청을 전송 - 웹 서버는 JSP/PHP/ASP 등 서버측 애플리케이션을 이용해 사용자의 요청을 처리한 뒤, 처리 결과를 HTML로 웹 브라우저에 전송 - 웹 브라우저는 응답으로 받은 HTML을 화면에 출력 AJAX 방식은 아래와 같습니다. - 사용자가 마우스 클릭 같은 이벤트를 발생시키면 자바스크립트는 DOM을 이용해서 필요한 정보를 구한 뒤, XMLHttpRe..
-
[CodeIgniter] 7. 사용자 인증(로그인)Web/CodeIgniter 2015. 8. 25. 19:53
7장에서는 로그인에 관한 처리를 해보겠습니다. 거의 모든 사이트에서 중요한 부분이 회원가입 후의 사용자 인증 부분입니다. 사이트의 첫 시작이라고 해도 과언이 아닙니다. 사이트 개발 시 제일 먼저 하는 작업이 가입, 로그인, 회원 관리입니다. 7.1 세션 구조 CodeIgniter의 세션 라이브러리는 PHP의 세션과 작동 형태가 조금 다릅니다. 세션이 생성되는 것은 동일한데 실제 사용자 데이터는 쿠키에 담깁니다. 이렇게 복잡하게 구성된 이유는 사용자 데이터 보안이 강화된 데이터베이스 세션을 구현하기 위해서입니다. CodeIgniter의 데이터베이스 세션은 위 그림의 1, 2번 절차는 동일하고 3번의 사용자 데이터가 저장되는 곳이 데이터베이스로 바뀝니다. 그렇게 되면 해커나 사용자가 PC의 쿠키를 볼수 없기..
-
[CodeIgniter] 6. 놓치기 쉬운 보안Web/CodeIgniter 2015. 8. 24. 15:40
6.1 SQL 삽입 공격(SQL Injection Attack) SQL 삽입 공격을 이용한 여러 가지 사례가 있지만 하나의 예를 들어 CodeIgniter에서 어떻게 막을 수 있는지 살펴 보도록 하겠습니다. 다음과 같이 user 테이블이 있다고 가정합니다. id user_id password 1 advisor 1234 SQL 삽입 공격에 대해 취약한 사이트에 아이디 advisor' #, 비밀번호 2222로 로그인합니다. * 로그인 체크 쿼리 SELECT * FROM user WHERE id = '$id' AND passwd = '$passwd'; *SQL 삽입 공격에 의한 변조된 쿼리 SELECT * FROM user WHERE id = 'advisor'; 변조된 쿼리를 보면 쿼리 중간에 #이 들어가 있..
-
[CodeIgniter] 5. 폼 검증하기Web/CodeIgniter 2015. 8. 24. 15:00
4장에서 게시판의 기본 골격을 만들었습니다. 5장에서는 CodeIgniter의 라이브러리 중 하나인 form_validation 을 이용해 값의 존재유무, 데이터 형식(한글, 영문, 숫자 등), 최소, 최대 길이 제한, 중복 아이디 체크나 비밀번호 입력 여부 등을 검증해보겠습니다. 5.1 기본 형태 4장의 검색이나 글쓰기 소스에서는 자바스크립트를 이용해 뷰 단에서 체크했습니다. CodeIgniter 폼 검증은 프로그램 단에서 검증하는 것이라 전송 후에 체크하고 설정된 룰을 통과하지 못할 경우 다시 뷰에 에러 메세지를 표시하는 형태입니다. 자바스크립트로 뷰 단에서 체크하는 것보다 한번 전송되고 다시 폼이 표시되는 형태라 서버 리소스를 차지할 수 있습니다. 그럼에도 프로그램 단에서 체크하는 폼 전송 형태를 ..
-
[CodeIgniter] 4. 게시판 프로젝트 - 수정, 삭제Web/CodeIgniter 2015. 8. 23. 15:13
4.5 수정 기능 추가하기 수정기능은 입력 기능을 수정하여 사용합니다. write 메서드를 복사하여 modify 메서드를 만들고 수정합니다. * bbs/application/controllers/board.php 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
-
[CodeIgniter] 4. 게시판 프로젝트 - 검색, 입력, 보기 기능Web/CodeIgniter 2015. 8. 23. 14:00
4.2.3 검색 만들기 이번 절은 게시물 목록의 마지막인 검색 만들기입니다. 앞 절에서 기본 목록 모델에 페이지 변수를 추가한 것을 만들었습니다. 뷰에서 검색어를 컨트롤러에 전송하고, 컨트롤러는 검색어를 처리해서 모델을 통해 데이터를 가져와서 다시 뷰로 전달해 화면에 출력합니다. 이번 절은 뷰 파일부터 살펴보겠습니다. 바로 위 참고에서 설명했던 것처럼 게시물 목록 화면이 출력된 후의 검색어 입력 부분부터 시작하므로 뷰 파일에서 시작하겠습니다. * bbs/application/views/board/list_v.php 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758..
-
[CodeIgniter] 4. 게시판 프로젝트 - DB 설계, 페이징 처리Web/CodeIgniter 2015. 8. 21. 19:24
지금까지 CodeIgniter 개발 환경을 구성하고 기본 구조에 대해 알아봤습니다. 4장은 MySQL 테이블을 구성하고 게시판을 실제로 만들어 보면서 CodeIgniterd의 MVC 패턴 사용방법과 컨트롤러의 몇 가지 유형을 알아봅니다. 게시판은 하나의 테이블로 원 글과 댓글을 표현하는 구조이며 리스트, 검색, 페이징, 상세보기, 쓰기, 수정, 삭제로 이루어져 있습니다. 개발을 할 때 제일 먼저 시작하는 작업인 테이블 만들기부터 시작합시다. 4.1 게시판 테이블 만들기 ci_book 데이터베이스를 생성하고 MySQL 콘솔에 접속합니다. mysqladmin -uroot -p create ci_book mysql -uroot -p ci_book grant select, insert, update, delet..