웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[동주아빠] PHP 게시판(16강) - 입력 글 DB 저장(2)
2002.12.25 16:42
앞의 15강 해설입니다.
■ 3행
mysql_connect("localhost", "phpbbs", "phpbbs") or die (mysql_error());
mysql_connect() 함수는 말 그대로 mysql 서버에 연결하는 기능을 합니다.
괄호 안에 인자는 순서대로 호스트이름, ID, 패스워드입니다.
(만약 연결되면 정수형 링크 구분자를 반환하고, 실패하면 false를 반환하는데... 여기서는 몰라도 됩니다.)
■ 4행
mysql_select_db("itmembers");
3행에서 DB 서버에 접속했으니, 이제 해당 DB에 접속할 차례입니다.
mysql_slect_db() 함수는 괄호 안의 DB명에 해당되는 DB를 선택하는 기능을 합니다.
(참고로 성공하면 true, 실패하면 false를 반환합니다.)
■ 25행
중간에 일단 건너뛰고 25행부터 설명하겠습니다.
위에서 DB 서버에 접속해서, 원하는 DB를 선택했습니다.
이제 그 DB에 적절한 SQL 문을 사용해서 원하는 작업을 해야겠죠.... 이럴 때
mysql_query() 함수를 사용합니다.
쿼리를 실행할 때 쓰는 함수입니다. 괄호 안에는 쿼리 문장이 들어갑니다.
(쿼리에 대한 자세한 내용은 오라클 기초 강좌를 참조하세요)
24행에서 쿼리 문을 $sql이라는 문자열 변수에 저장했으므로, mysql_query($sql)라고 쓰면 됩니다.
■ 24행
쿼리 문을 자세히 보면,
bbs 테이블에 values 괄호 안의 값들을 insert하라는 문장입니다.
(insert 문에 대한 자세한 설명은 오라클 강좌를 참조하세요. 관련 강좌 바로가기)
■ 7행
$name = addslashes($name);
글 입력 폼의 name 텍스트 박스의 내용을 $name 변수에 저장을 하는데,
혹시 특수 기호가 있으면 역슬래시()를 붙이라는 뜻입니다.
PHP에서는 작은 따옴표('), 큰 따옴표("), 역슬래시()와 같은 문자를 그대로 표현하려면 해당 기호 앞에 역슬래시를 표시해야 합니다.
만약 화면에 "손병목"이라는 문자를 따옴표와 함께 표현하려면
echo " "손병목" "; 이라고 하면 안된다는 것입니다.(오류가 발생합니다. 왜일까요.... 자세히 보세요.... ^^)
echo " "손병목" "; 라고 해야 따옴표가 정확하게 표현됩니다.
이럴 때 사용하는 함수가 바로 addslashes() 함수입니다.
■ 15행
$writetime = time();
$writetime 변수에 현재의 시간을 저장합니다.
time() 함수는 현재의 시간을 돌려주는 함수입니다.
■ 16행
$ip = getenv("REMOTE_ADDR");
getenv() 함수는 서버의 환경 정보를 불러오는 역할을 합니다.
위와 같이 인자를 "REMOTE_ADDR"이라고 쓰면, 원격지(클라이언트)의 주소를 돌려주는 역할을 합니다.
게시판에 글 쓴 사람의 ip 주소를 기록하기 위해 사용했습니다.
■ 17행
$count = 0;
조회수를 저장하기 위해 $count 변수를 사용했습니다.
이해는 되셨는지요...
이상, 동주아빠 손병목이었습니다.
■ 3행
mysql_connect("localhost", "phpbbs", "phpbbs") or die (mysql_error());
mysql_connect() 함수는 말 그대로 mysql 서버에 연결하는 기능을 합니다.
괄호 안에 인자는 순서대로 호스트이름, ID, 패스워드입니다.
(만약 연결되면 정수형 링크 구분자를 반환하고, 실패하면 false를 반환하는데... 여기서는 몰라도 됩니다.)
■ 4행
mysql_select_db("itmembers");
3행에서 DB 서버에 접속했으니, 이제 해당 DB에 접속할 차례입니다.
mysql_slect_db() 함수는 괄호 안의 DB명에 해당되는 DB를 선택하는 기능을 합니다.
(참고로 성공하면 true, 실패하면 false를 반환합니다.)
■ 25행
중간에 일단 건너뛰고 25행부터 설명하겠습니다.
위에서 DB 서버에 접속해서, 원하는 DB를 선택했습니다.
이제 그 DB에 적절한 SQL 문을 사용해서 원하는 작업을 해야겠죠.... 이럴 때
mysql_query() 함수를 사용합니다.
쿼리를 실행할 때 쓰는 함수입니다. 괄호 안에는 쿼리 문장이 들어갑니다.
(쿼리에 대한 자세한 내용은 오라클 기초 강좌를 참조하세요)
24행에서 쿼리 문을 $sql이라는 문자열 변수에 저장했으므로, mysql_query($sql)라고 쓰면 됩니다.
■ 24행
쿼리 문을 자세히 보면,
bbs 테이블에 values 괄호 안의 값들을 insert하라는 문장입니다.
(insert 문에 대한 자세한 설명은 오라클 강좌를 참조하세요. 관련 강좌 바로가기)
■ 7행
$name = addslashes($name);
글 입력 폼의 name 텍스트 박스의 내용을 $name 변수에 저장을 하는데,
혹시 특수 기호가 있으면 역슬래시()를 붙이라는 뜻입니다.
PHP에서는 작은 따옴표('), 큰 따옴표("), 역슬래시()와 같은 문자를 그대로 표현하려면 해당 기호 앞에 역슬래시를 표시해야 합니다.
만약 화면에 "손병목"이라는 문자를 따옴표와 함께 표현하려면
echo " "손병목" "; 이라고 하면 안된다는 것입니다.(오류가 발생합니다. 왜일까요.... 자세히 보세요.... ^^)
echo " "손병목" "; 라고 해야 따옴표가 정확하게 표현됩니다.
이럴 때 사용하는 함수가 바로 addslashes() 함수입니다.
■ 15행
$writetime = time();
$writetime 변수에 현재의 시간을 저장합니다.
time() 함수는 현재의 시간을 돌려주는 함수입니다.
■ 16행
$ip = getenv("REMOTE_ADDR");
getenv() 함수는 서버의 환경 정보를 불러오는 역할을 합니다.
위와 같이 인자를 "REMOTE_ADDR"이라고 쓰면, 원격지(클라이언트)의 주소를 돌려주는 역할을 합니다.
게시판에 글 쓴 사람의 ip 주소를 기록하기 위해 사용했습니다.
■ 17행
$count = 0;
조회수를 저장하기 위해 $count 변수를 사용했습니다.
이해는 되셨는지요...
이상, 동주아빠 손병목이었습니다.
댓글 4
-
손병목
2002.12.25 16:43
-
ZeRock
2002.12.26 14:13
16행에서..
$ip = $REMOTE_ADDR;
이라 해도 무방하겠죵..
DB 에 저장할때도..굳이 $ip 라는 변수로 치환해 주지 않고.. 걍
INSERT INTO BOARD_NAME (ip) values ($REMOTE_ADDR); -
TheMics
2002.12.26 15:29
ZeRock//바로 $REMOTE_ADDR으로 불러올때 몇몇 오류가 생깁니다.
첫째는 php.ini에서의 설정문제이고 두번째는 자기 컴터에서 서버를 만들어 사용할때, 즉 http://localhost(혹은 127.0.0.1)로 접속할 경우 값이 나오지 않는 경우가 종종 생깁니다^^ -
ZeRock
2002.12.26 18:03
php.ini 의 설정문제라 하심은 register_globals=on 을 말씀하시는건가요..?
그리고 getenv() 함수는 ISAPI 모드에서는 작동하지 않습니다.
고로.. 웹서버로 iis 를 사용한다면 서버건, 클라이언트건 ip 가 남지 않겠죠..
"or die(mysql_error())"에서 die() 함수는 대부분의 함수 뒤에 사용할 수 있습니다. 앞의 함수가 거짓(false)값을 반환하면 die("메시지") 함수가 메시지를 출력하는 역할을 합니다.
위와 같은 경우는 mysql_error() 함수를 이용해서 에러 메시지를 보여주는 기능을 합니다.