[게시판만들기] 2. MySQL 정보 입력 받기 1 > 자유게시판

자유게시판

[게시판만들기] 2. MySQL 정보 입력 받기 1 정보

기타 [게시판만들기] 2. MySQL 정보 입력 받기 1

본문

이번 시간부터 몇 일 동안 MySQL의 정보를 입력 받는 방법에 대해 알아 보겠습니다.

먼저 어떤 프로그램을 만들던 자신의 계정에 올려 실행시켜야 합니다.
이 때 게시판이 올려질 디렉토리 퍼미션을 확인하여야 합니다.
파일을 만들거나 삭제하기 위해서는 보통 707이나 777을 사용합니다.
여기에서 하나의 의문점이 생깁니다.
디렉토리의 경우 기본적으로 읽기와 실행권한을 갖습니다.
그러나 파일의 경우 읽기 권한만을 갖습니다. 그런데 PHP파일은 어떻게 실행될까요?
PHP파일은 실행되지 않습니다.
PHP 파일은 스스로 실행되는 파일이 아니라 서버측에 있는 PHP 파서에 의해 읽혀져 실행 되기 때문입니다.
읽기 권한 만으로도 사용할 수 있다는 말이지요.
컴파일된 형태 즉, 스스로 실행이 가능한 형태의 파일의 경우 실행 권한을 주어야 실행 할 수 있습니다.

    * 계정 :
        은행에서는 자신의 이름으로 된 통장을 만들어 저축을 하거나 돈을 찾습니다.
        이와 같이 서버에서의 계정은 사용자에게 일정한 공간을 할당해 자료를 올리고 지울수 있는 공간을 주는데 이것을 계정이라 합니다.
        유료와 무료가 있는데 무료 계정은 MySQL을 사용할 수 없는 것이 일반적이나 개인 서버를 운영하는 일부 서버에서 지원하는 경우도 있습니다.
    * 퍼미션 :
        사용권한을 말합니다.
        퍼미션은 관리자 권한, 그룹 권한, 사용자 권한이 있습니다.
        권한은 이진수 세자리로 되어 있으며 첫번째 숫자 부터 읽기,쓰기,실행 순이며 1이면 권한을 주며 0이면 권한을 제한합니다.
        읽기, 쓰기, 실행 권한을 모두 주면 111(2)이 되는 것이죠. - ()안의 숫자는 진수표시
        이것을 보통 8진수로 표현합니다. 즉, 111(2)은 7(8)이 됩니다.
        ( 진수 표시에 대해 잘 모르시면 중학교 수학 교과서를 참고해 주세요. ^_^ )
        퍼미션이 777이라는 것은 관리자, 그룹, 사용자에게 모든 권한을 준다는 뜻입니다.
        그룹은 보통 사용을 하지 않아 퍼미션을 707로 하라는 메세지를 출력하는 경우가 많은데( 게시판 설치시 )
        고가의 웹호스팅( 엄청 비쌉니다 ㅜ.ㅜ )의 경우  그룹권한을 계정 사용자에게 주어 일반 사용자와 계정 사용자의 구분을 두어 보안에
        신경 쓰는 경우가 있습니다.
        이 경우 퍼미션을 707로 할 경우 게시판은 설치가 되지 않거나 정상작동되지 않는 모습을 보이기도 합니다. 퍼미션을 777로 해 주셔야 합니다.

다음은 퍼미션 검사 PHP 소스 입니다.

<?
// 현재 모 디렉토리 퍼미션 검사
$perms = (int)substr( (string)base_convert( fileperms( "../." ), 10, 8 ), -3, 3 );

// 권한이 707, 777이 아닌경우 종료
if( $perms!=707 && $perms!=777 ) {
    echo "현재 설치 경로의 권한이 ".$perms."입니다.<br>";
    echo "퍼미션을 777로 조정 후 다시 설치 하십시오.<br>";
    return;
}
?>

함수를 사용해 최대한 쉽게 만들었습니다.
PHP 소스는 ‘<?’로부터 시작해서 ‘?>’로 끝납니다.
변수명 앞에는 $가 붙습니다. 즉, 소스 첫번째의 $perms가 변수입니다.
이 변수에 모 디렉토리의 퍼미션을 저장합니다. ( 여기서 모 드렉토리란 현재 디렉토리 바로  위에 있는 디렉토리를 말합니다.
fileperms() 함수는 현재 파일의 퍼미션을 읽어 드립니다. 여기서 .은 자신의 디렉토리를 말하며 ..는 모 디렉토리를 말합니다.

  사용법 : fileperms( 파일명 혹은 디렉토리명 )

../. 는 모 디렉토리의 자신 즉 현재 디렉토리가 /hano/install 이라면 ../.은 /hano를 말합니다.
fileperms( "../." )은 모 디렉토리의 퍼미션(권한)을 읽어 드립니다.
이 때 읽어 드리는 퍼미션은 10진수로 읽어 지는데 10진수로 사용하게 되면 관리자, 그룹, 사용자 퍼미션의 구분이 힘듭니다.
그래서 보통은 8진수로 변환하여 사용하는데 base_convert() 함수가 진수변환 함수입니다.

사용법 : base_convert( 입력값, 원래의 진수, 변환할 진수)

base_convert( fileperms( "../." ), 10, 8 )  : 모 디렉토리의 퍼미션을 10진수에서 8진수로 변환
10진수, 8진수는 모두 숫자입니다.
그런데 8진수로 변환 후 살펴 보면 퍼미션 3자리 이외에 앞에 3자리가 더 붙는 것을 알 수 있습니다.
이 3자리는 여기 설명에서는 의미가 없으므로 필요가 없습니다.
그러므로 우리가 필요한 뒷자리 3자리만 빼내어 쓰면 됩니다.
우리가 원하는 부분만 짤라 내기 위해 숫자인 퍼미션을 문자로 변환합니다.
(string)이라는 변수 선언문을 앞에 붙여두면 문자열로 변환된다. ( 문자열이란 여러 개의 문자가 모인 것을 말합니다. )
substr() 함수는 문자의 어떤 부분을 잘라내는 함수입니다.

  사용법 : substr( 원문, 시작위치, 잘라낼 자리수 )

소스에서 substr( (string)base_convert( fileperms( "../." ), 10, 8 ), -3, 3 )은 위에서 설명한 문자열로 변환된 퍼미션을 뒤에서(-3) 3개의 문자(3)를 잘라냅니다.
이것을 원래의 숫자로 변환 시키려면 앞에 (int)를 붙여 두면 됩니다.
$perms = (int)substr( (string)base_convert( fileperms( "../." ), 10, 8 ), -3, 3 );이라는 소스에 따라 변수 $perms 에 퍼미션이 저장됩니다.
여기서 주의할 점은 PHP 소스는 모든 명령줄이 끝나는 부분에 ;를 넣어 주어야 합니다.
자~ 그럼 이제 우리가 읽어온 퍼미션을 검사하는 부분에 대해 설명합니다.

if( $perms!=707 && $perms!=777 ) {
    echo "현재 설치 경로의 권한이 ".$perms."입니다.<br>";
    echo "퍼미션을 777로 조정 후 다시 설치 하십시오.<br>";
    return;
}

if()은 조건문으로 만약 ()이면 실행해라 하는 명령입니다.

If( $perms == 777 ) {}  : 만약 퍼미션이 777이면 {}안의 내용을 실행하라는 것이 됩니다.
&&은 함께(and) 이라는 뜻으로 A && B 라고 한다면 A와 B 두 가지 조건 모두가 만족해야  {}안의 내용이 실행 됩니다.
==은 같다 라는 뜻이며 !=은 다르다란 뜻입니다.
즉 if( $perms!=707 && $perms!=777 ) {} 이라는 명령은 퍼미션이 707과 777과 모두 다르다면 {} 안의 내용을 실행하라는 말입니다.

Echo “”란 명령은 출력하라는 명령입니다.
혼동할 수 있는 부분이 출력이라고 해서 화면에 출력하라는 것은 아닙니다.
여기서 출력이라 함은 브라우저에게 출력한다는 것이며 브라우저는 이것을 받아 화면에 출력하게 됩니다.
화면에 직접 출력하는 것과 브라우저를 통해 출력하는 것이 같아 보이지만 여기서 결정적으로 틀린점이 있습니다.
화면에 출력하라는 것은 말 그대로 출력하는 것이지만 브라우저를 통해 출력하게 되면 HTML 코드는 브라우저가 따로 해석해서 출력합니다.
echo "퍼미션을 777로 조정 후 다시 설치 하십시오.<br>"; 라는 출력문이 있다고 한다면 이것을 브라우저에 출력하면 브라우저는 읽어보고 HTML 명령이 있나 확인합니다.
여기서 <br>은 다음줄로 옮겨라 하는 HTML 명령입니다.
위의 명령을 두 번 반복해 출력해줄 경우 한번 출력 후 다음 줄로 가서 다시 한번 출력하게 됩니다.
이와 같이 echo “”명령은 HTML명령어를 같이 실행해 주는 것과 같은 효과를 보입니다.

문자와 문자를 연결하기 위해서는 .를 사용합니다.
echo "현재 설치 경로의 권한이 ".$perms."입니다.<br>"; 부분에서 문자.변수.문자로 되어 있는 것을 볼 수 있습니다.
앞에 있는 문자를 출력 후 이어서 퍼미션을 출력하고 나머지 문자를 출력합니다. 그리고 마지막에 <br>명령에 의해 다음줄로 바뀝니다.

마지막으로 return 명령은 돌아가란 명령입니다.
함수 안에서 사용할 경우 함수를 나가란 말이며 PHP 소스에서 그냥 사용할 경우 PHP파일을 나가라는 말이 됩니다.
즉, 위에 소스 그대로 실행 된다면 퍼미션을 구하고 퍼미션으 707과 777이 아닌 경우 에러 메시지를 출력하고 나가라는 말이 됩니다.

오늘은 여기까지 하고 다음 시간에는 MySQL의 정보를 입력 받는 부분을 설명하겠습니다.


PS: 틀린점이나 고칠점이 있다면 지적해 주세요.
    고치도록 하겠습니다.
    이런 글을 첨 써보는 것이라 스스로 생각하기에 횡설수설 한 듯 싶습니다. ㅜ.ㅜ
    글 실력이 없는지라…..
추천
0
  • 복사

댓글 1개

© SIRSOFT
현재 페이지 제일 처음으로