레이블이 php 간단 일기장 - 유효성 검증인 게시물을 표시합니다. 모든 게시물 표시
레이블이 php 간단 일기장 - 유효성 검증인 게시물을 표시합니다. 모든 게시물 표시

2015년 1월 9일 금요일

php 간단 일기장 - 유효성 검증

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - 유효성 검증

글 생성과 글 수정시 아무것도 없는 글은 일기로써 의미가 없다.
즉 한글자 이상의 글자가 입력되어야 한다.


이처럼 원래 만든 의도와는 다르게 작동되는 것을 막기 위해서
* 설계 의도에 맞도록 사용자가 입력했는가.
를 확인하는 것을 유효성 검증이라고 한다.

php 간단 일기장 - 유효성 검증 - 클라이언트 유효성 검증

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - 유효성 검증 - 클라이언트 유효성 검증

사용자측에서 서버로 데이터를 보내기 전에 한번 검증한 후 보낸다.

클라이언트 유효성을 검사하기 위해서는 자바스크립트를 사용한다.

php 간단 일기장 - 유효성 검증 - 서버 유효성 검증

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - 유효성 검증 - 서버 유효성 검증


클라이언트 사이드에서 유효성 검증을 했다고 해도 다른 방식으로 오염된 데이터가 넘어올 가능성은 얼마든지 있다.

가장 대표적인 방법으로는 클라이언트 브라우저에서 자바스크립트를 실행 안되도록 설정해두고 웹페이지에 오염된 데이터를 입력하는 것이다.
이럴 경우 클라이언트 검증을 거치지 않고 서버로 데이터가 전달된다.
따라서 클라이언트 검증 후에 서버에서 동일하게 유효성을 한번 더 검증할 필요가 있다.

php 간단 일기장 - 유효성 검증 - 서버 유효성 검증 - 글 생성 / 수정하기

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - 유효성 검증 - 서버 유효성 검증 - 글 생성 / 수정하기

요구사항
  • 글 쓰기와 글 수정에서 Contents 는 1글자 이상 들어가야 한다.
  • 글 수정에서 diary_id 는 데이터베이스의 타입과 일치해야 하므로 숫자여야 한다.
 시나리오

    글 생성 / 수정시 contents가 1글자 이상인지 확인한다.
    따라서 이러한 논리는 생성 / 수정이 실제 처리되는 페이지에 추가되어야 한다.

    글 수정시 diary_id 가 숫자인지 확인해야 한다.

논리 변경 
기존논리

    (수정일 경우) diary_id 를 클라이언트에서 전송받아 $diary_id 라고 이름붙인다.
    contents 를 클라이언트에서 전송받아 $contents 라고 이름붙인다.
    데이터베이스에 연결해서 $contents 의 값을 데이터베이스에 넣는다.
    diarylist 로 이동한다.

변경논리

    (수정일 경우) diary_id 를 클라이언트에서 전송받아 $diary_id 라고 이름붙인다.
    (수정일 경우) $diary_id 의 타입을 구해서 $diary_id_type 이라는 이름을 붙인다.
    (수정일 경우) $diary_id_type 이 정수(integer) 타입인지 확인한다.

    (수정일 경우) $diary_id 가 정수가 아닐 경우 아래 논리를 실행하지 않고 바로 diarylist.php 로 이동한다.

    contents 를 클라이언트에서 전송받아 $contents 라고 이름붙인다.
    글자의 길이를 확인하고 0글자일 경우 데이터베이스에 넣지 않고 diarylist 로 이동한다.
    1글자 이상일 경우 데이터베이스에 연결해서 $contents 의 값을 데이터베이스에 넣는다.
    diarylist 로 이동한다.


글 생성 파일
writesubmit.php를 수정한다.

글 생성 검증 코드
 
생성시 클라이언트에서 전송받은 값을 $contents 라고 이름붙인 후에 아래 코드 추가
 
if (count($contents) == 0)
{
    header("Location: diarylist.php");    
}


글 수정 파일 
 editsubmit.php로 수정한다.
수정시 클라이언트에서 diary_id와 contents 를 전송받는다.
 각각 $diary_id , $contents 라고 이름붙인 다음 아래 코드를 추가한다.
$diary_id_type = gettype($diary_id);
if ($diary_id_type != 'integer')
{
    header("Location: diarylist.php");    
}
else if (count($contents) == 0)
{
    header("Location: diarylist.php");    
}

php 간단 일기장 - 유효성 검증 - 클라이언트 유효성 검증 - 글 생성 / 수정하기

이 문서는 지속적으로 갱신되는 내용을 다룹니다.
최신 버전의 문서는 언제든지 http://crealnet.blogspot.kr에서 얻을 수 있습니다.
문서가 업데이트 될 때마다 이메일로 받아보고 싶으시다면 http://crealnet.blogspot.kr/p/pdf.html 를 사용해 주세요.
기타 추가적으로 필요하신 사항은 http://crealnet.blogspot.kr/p/blog-page.html에서 연락주시면 됩니다.
읽어주셔서 감사합니다!


php 간단 일기장 - 유효성 검증 - 클라이언트 유효성 검증 - 글 생성 / 수정하기

요구사항 
글 쓰기와 글 수정에서 Contents 는 1글자 이상 들어가야 한다.


시나리오
  • 글 생성 / 수정시 값을 서버로 보내기 위해서는 유저가 input submit 버튼을 눌러야 한다.
  • 버튼이 눌릴 때 Contents 가 1글자 이상인지 자바스크립트로 체크한다.
     
할일
  • Contents 의 길이를 체크해야 하기 때문에 자바스크립트에서 contents 를 식별할 수 있어야 한다. 따라서 contents 에 id 항목을 넣는다.
  • 실제로 Contents가 1글자 이상인지 체크하는 자바스크립트 함수를 만든다.
  • 버튼이 클릭될 때 자바스크립트 함수가 작동할 수 있도록 이벤트를 추가한다.


contents 에 id 붙이기
diaryedit.php
diarywrite.php
파일에서
<textarea name="contents" rows="3" cols="50">
부분을 
<textarea name="contents" id="contents" rows="3" cols="50">
처럼 바꾼다.
 
  
Contents 길이 체크 자바스크립트 함수 만들기
코드 
    <script type="text/javascript">
      function checkContentsLength()
      {
        var contents = document.getElementById('contents');
        var contentsValue = contents.value;
        if (contentsValue.length == 0) {
          alert('contents length is 0.');
          return false;
        }        
        else
        {
          return true;
        }
      }
    </script>
 
html 태그의 <head>와 </head> 사이에 넣는다.
 
작동설명 
  • html 문서 내에서 contents 라는 id 를 가진 태그를 가지고 와서 contents 라고 이름붙인다.
  • contents 태그에는 '값' 말고도 'id'나 'name', 혹은 rows 같은 여러가지 Attribute 들이 있다. 이 중에서 '값'을 가지고 오기 위해서는 contents.value 라고 써야 한다.
    contents 의 '값' 에 contentsValue 라는 이름을 붙인다.
  • 만약 contents 값의 글자수가 0 이면 경고를 띄우고 false를 반환한다.
  • 만약 contents 값의 글자수가 0이 아니면 true를 반환한다.

diaryedit.php
diarywrite.php
파일을 수정 후 저장한다.