강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

소. 자료실 기능 및 잘잘한 기능 붙이기 -1 작성자에게 메일 발송

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

[강좌] 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
----------------------------


- ?! 디망쉬

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,056 명
  • 현재 강좌수 :  35,910 개
  • 현재 접속자 :  203 명