[강좌] php+mysql 게시판 만들기 #소-1
안녕하세요. 디망쉬입니다.
오늘로 php+mysql 게시판 만들기 강좌는 끝난답니다. 휴우. 지금 쓰는 중에는 시원허다! 라고 느끼지만 어쩐지 올리고 나면 섭섭하다 라는 생각이 들 거 같군요. (합쳐서 시원섭섭)
요즘 제 일이 무척 많아져서 향후 제 강좌가 계획대로 써나갈 수 있을까 걱정이랍니다.
소. 자료실 기능 및 잘잘한 기능 붙이기
a. 작성자에게 메일 보내기 기능
이것은 아주우우 간단하게 처리가 가능합니다. php 함수 중에서 mail 이라는 함수가 있는데 이것이 mail 을 보내주죠. 보통 php 를 설치할 때 imap 을 사용하도록(?) 컴파일 해주죠. 별 문제가 없다면 mail 함수로도 email 이 날라갑니다. :]
형식을 볼까요?
mail("받을곳", "제목", "내용", "From") |
예를 들면
mail ("dimanche@creple.com", "제목이다", "디망쉬는 미소년", "From: loathing@nownuri.net"); |
라고 하면 dimanche@creple.com 유저에게 '제목이다'라는 제목에 '디망쉬는 미소년' 이라는 내용의 e-mail 을 보냅니다. 보낸 사람 email 주소는 loathing@nownuri.net 으로 나오고요.
간단하죠?
그렇다면 HTML 형식의 email 은 어떻게 보낼 수 있을까요?
그것은 Header 정보를 추가하면 됩니다. php 3 메뉴얼에 보면
을 붙임으로서 헤더 정보 추가가 가능하다고 되어있다는군요.
mail ("dimanche@creple.com", "제목이다", "<font size="2">디망쉬는 미소년</font>", "From: loathing@nownuri.net
Content-Type:text/html"); |
그런데 여기서 우리가 알아야할 게 있습니다. 제가 편의상 mail 함수의 네번째 부분을 From 으로, 즉 보내는 곳의 email 주소 넣는 곳이라 설명했는데 사실 맞는 게 아닙니다. 네번째는 email 헤더 정보를 넣는 곳입니다.
mail ("dimanche@creple.com", "제목이다", "<font size="2">디망쉬는 미소년</font>", "Content-Type:text/html"); |
이렇게 하면 보내는 곳 email 주소가 nobody 로 나올 것입니다.
자아. 이렇게 된 것을 이제 붙이기만 하면 되겠군요. 어디에 붙일까요?
예이. 글을 입력한 뒤에 보내면 되겠죠? 글 입력을 뭐가 해주던가요? 바로 run.php3 죠? ^^ 추가해보겠습니다.
그런데 글 쓰면 누가 email 받아야할까요? 게시판 관리자? 뭐 그러면 좋겠죠. ^^; 그건 쉬우니 넘어가고, 답신 글을 쓸 때 답신 당하는(?) 사람에게 email 보내도록 하죠.
무슨 말인고하면 제가 글을 썼는데 방수르나라는 사람이 제 글에 답신을 남길 경우, 방수르나라는 사람이 작성한 글 내용이 제 email 로 보내지게 하자는거죠.
이것을 할 때는 다음과 같은 과정을 거치면 됩니다.
해당 글의 내용을 가져옴 --> 답신 글의 내용을 가져옴 --> email 보냄 |
쉽죠?
일단 run.php3 에서 답신 글 저장하는 루틴은
elseif ($mode == "reply") { } |
이 부분이죠? 이 부분에서 해당 글의정보를 가져오는 루틴과 답신 글의 정보를 다루는 루틴이 다 있습니다. 해당 글은 $rpt 라는 배열이 갖고 있고, 답신 글은 $fil 배열이 갖고 있죠. 그럼 mail 함수로 email 보내는 것만 하면 되겠군요.
mail("$rpt[usremail]", "$fil[title]", "$fil[text]", "$fil[email]"); |
별도의 설명? 당연 생략합니다. ^^ 이 부분까지 그대로 따라오셨다면 충분히 설명을 생략해도 될 수준이시니. ^^
그럼 한 번
elseif ($mode == "reply") { } |
를 모두 볼까요?
elseif ($mode == "reply") { $result = mysql_query("SELECT * FROM $board WHERE no=$rpo[no]", $connect); $rpt = mysql_fetch_array($result); mysql_free_result($result);
$rpi[replydepth] = $rpt[replydepth] + 1; $rpi[idx] = $rpt[idx];
if ($rpt[replyto]) { $rpi[replyto] = $rpt[replyto]; } else { $rpi[replyto] = $rpt[no]; }
$rpi[time] = time(); $rpi[pw] = crypt($fil[pw]);
$upidx = mysql_query("UPDATE $board SET idx = idx + 1 WHERE idx >= $rpt[idx]", $connect); $upno = mysql_query("UPDATE $board SET replyon = 1 WHERE no = $rpo[no]", $connect); $result = mysql_query("INSERT INTO $board VALUES('', 0, $rpi[idx], '$fil[title]', '$fil[text]', 0, $rpi[replyto], $rpo[no], $rpi[replydepth], 0, '', '', 0, '$fil[name]', '$rpi[pw]', '$fil[email]', '$fil[homepage]', $rpi[time])", $connect);
mail("$rpt[usremail]", "$fil[title]", "$fil[text]", "$fil[email]");
Header("Location: list.php3?board=$board"); } |
하핫. 오랜만에 보는군요. 아래 부분에 mail 함수가 보이죠? ^^
으흠. 저희 회사의 게임 홈페이지가 1차적으로 열렸답니다. 거참 힘들대요. 뼈대는 개인적으로 아는 분의 도움으로(그분의 회사 언니라던가) 이쁘게 무난히 넘어갈 수 있었지만 내용 넣고 cgi 를 디자인에 맞춰 뜯어고치고 최적화시키느라 헥헥. 더군다나 감기에까지 걸려서 @_@ (열은 38~39 도에서 왔다 갔다하고 가래에 오한에 어지러움증에 갑작스런 빈혈의 러쉬 --;) 피곤하고 일 많이 하다보니 몸의 면역성이 떨어져 에어컨 바람에 감기게 걸린 듯 싶습니다. ^^; (요즘 4~5시간씩 자며 일들을 T_T)
그래도 좋군요. 힘들지만. 젊음이란! ^^/
---------------------------- 함께하면 즐거운 사이트들 (-_-; 광고임 -_-;) http://game.creple.com/delthia http://creple.com http://coco.st ----------------------------
- ?! 디망쉬
|