웹마스터 팁

교육용 메모장 #2

2000.07.10 15:31

zero

4. 라이브러리(library) 만들기
라이브러리가 무엇일까요?
많이 쓰이는 기능을 따로 모아두면 매우 편리하게 쓸수 있겠죠?
예를 들어 MySQL DB에 접속하는 기능, 입력받은 문자열이 빈문자열인지 아닌지 입력하는 등의 기능을 함수(function)로 만들어서 따로 모아놓은 것이 라이브러리입니다.
메모장에서는 어떤 함수가 필요할까요?
우선 MySQL DB에 접속하는 함수가 필요합니다.
그리고 빈문자열인지 아닌지 검사하는 함수가 필요하죠.
HTML 태그를 일반 텍스트로 출력하는 함수와 어떤 에러가 났을 때 브라우저에 출력하는 함수가 필요합니다.
그럼 각각의 함수에 대하여 알아봅시다.

i. MySQL DB에 접속하는 함수.
MySQL DB에 접속하기 위해서 사용하는 함수는 mysql_connect() 함수입니다.

$connect=mysql_connect("DB서버주소","DB 아이디","DB비밀번호");

그리고 자신의 DB를 선택하는 함수는 mysql_select_db()입니다.

mysql_select_db("DB이름");

그럼 자신의 MySQL DB에 접속하여 자신에게 할당된 DB를 선택하는 것을 알아봅시다.

$connect=mysql_connect("DB서버주소","DB 아이디","DB비밀번호") or die(mysql_eerror());
mysql_select_db("DB이름");

위의 두줄만 있으면 자신의 DB에 접속할수 있습니다. 간단하죠?
$connect 변수에는 DB에 접속했을 때 결과값이 들어값니다.
만약 제대로 접속이 되지 않았다면 0이, 성공적으로 접속이 되었다면 1이라는 값이 들어값니다.

ii. 입력된 문자열이 비어있는 지를 검사하는 함수.
메모장에서 입력을 받는 것은 이름과 내용 2가지입니다.
만약 이 2가지중 하나라도 빈칸, 또는 스페이스바만 쳐서 입력을 한다면 검사를 해서 막아야 겠죠?

function isBlankStr($str) {
if(eregi("[^[:space:]]",$str)) return 0;
return 1;
}

위에서 eregi("[^[:space:]]",$str) 이라는 부분이 보이시죠?
이 부분은 정규표현식이라고 불리우는 것입니다.
eregi() 라는 함수는 문자열 변수에 찾고자 하는 값이 있는지 없는지를 검사합니다.
[^[:space:]] 는 space, 즉 빈문자열이 아닐 때 0 이라는 값을 리턴하게 하는것입니다.
만약 아무 글자라도 한 글자 이상 있게 된다면 0 이 리턴되고 아무 글자도 없이, 그냥 공백만 있다면 1을 리턴하게 됩니다.

iii. HTML 태그를 일반 Text 로 변환
메모장 내용중에 잘못된 HTML 태그나 일부러 잘못쓴 태그가 들어가게 된다면 화면이 깨어질수가 있습니다.
예를 들어 <script 라고만 입력한다면 그 다음부터는 아무것도 출력이 되지 않습니다.
그렇기 때문에 모든 태그를 막아야 합니다.
막는 방법은 간단합니다. <를 < 로 바꾸어주기만 하면 됩니다.
그럼 브라우저상에서는 < 로 출력이 되기 때문입니다.

function del_html ($str)
{
$str = str_replace( ">", ">",$str );
$str = str_replace( "<", "<",$str );
$str = str_replace( """, """,$str );
return $str;
}

iv. 에러 표시하기
CGI상에서 에러가 날 경우 화면에 표시를 해야합니다.
위의 i,ii,iii에서 에러가 나면 자바스크립트를 이용해서 Alert, 즉 경고메세지를 보여주는 함수를 만들어봅시다.

function message ($message)
{
echo "
  <script>
  window.alert ("$message");
  history.go(-1);
  </script>
  ";
}