리자

게시판 글쓰기시 핸드폰 인증된 회원만 가능하게 하기

· 2007-04-13 (금) 11:36:47 · 12689 · 15
아이코드에 선결제가 되어 있는 분들만 사용하십시오.



=============================================================



skin 디렉토리의 register_form.skin.php 를



<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 토크 생성
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);
?>

... 중략 ...

<? if ($config[cf_use_hp]) { ?>
<TR bgcolor="#FFFFFF">
<TD class=m_title>핸드폰번호</TD>
<TD class='m_padding lh'>
<?
if ($member[mb_is_write]) {
echo "<span class='small' style='color:#ff3300;'>$member[mb_is_write] 에 인증하였습니다.</span><br>";
echo "<input type='hidden' name='mb_hp_old' value='$member[mb_hp]'>";
}
?>
<input class=m_text type=text name='mb_hp' size=21 maxlength=20 <?=$config[cf_req_hp]?'required':'';?> itemname='핸드폰번호' value='<?=$member[mb_hp]?>'>
<input type=button value='인증번호 전송' class='small' onclick="hp_certify(this.form);">
  인증번호 : <input class=m_text type=text name='mb_hp_certify' size=6 maxlength=6> 6자리 숫자<br>
<span class=small style='color:blue;'>
핸드폰 번호 인증을 하셔야 게시판에 글을 쓰실 수 있습니다.<br>
핸드폰으로 전송된 인증번호를 입력하신 후 회원정보를 수정(확인 버튼)하시기 바랍니다.<br>
</span>
<script>
function hp_certify(f) {
var pattern = /^01[0-9][-]{0,1}[0-9]{3,4}[-]{0,1}[0-9]{4}$/;
if(!pattern.test(f.mb_hp.value)){
alert("핸드폰 번호가 입력되지 않았거나 번호가 틀립니다.\n\n핸드폰 번호를 010-123-4567 또는 01012345678 과 같이 입력해 주십시오.");
f.mb_hp.select();
f.mb_hp.focus();
return;
}

win_open("<?=$member_skin_path?>/hp_certify.php?hp="+f.mb_hp.value+"&token=<?=$token?>", "hiddenframe");
}
</script>
</TD>
</TR>
<? } ?>

... 생략 ...



와 같이 수정합니다.



=============================================================



해당 디렉토리에 hp_certify.php 를 아래 코드로 넣습니다.



<?
$g4_path = "../../..";
include_once($g4_path."/common.php");

// 세션에 저장된 토큰과 폼값으로 넘어온 토큰을 비교
if ($_GET["token"] && get_session("ss_token") == $_GET["token"]) {
set_session("ss_token", ""); // 맞으면 세션을 지워 다시 입력폼을 통해서 들어오도록 한다.
} else {
alert_close("인증번호 발송시 오류가 발생하였습니다.");
exit;
}

$default['de_icode_server_ip'] = "211.172.232.124";
$default['de_icode_id'] = "아이코드 회원아이디";
$default['de_icode_pw'] = "아이코드 패스워드";
$default['de_icode_server_port'] = "7295";
$default['de_sms_hp'] = "보내는 사람 전화번호";

// SMS BEGIN --------------------------------------------------------
$receive_number = preg_replace("/[^0-9]/", "", $hp); // 수신자번호
$send_number = preg_replace("/[^0-9]/", "", $default['de_sms_hp']); // 발신자번호

$certify_number = rand(100000, 999999);

// 생성된 인증번호를 세션에 저장함
// form 에서 넘어온 인증번호와 비교하여 같으면 글쓰기 허용함
set_session("ss_hp_certify_number", $certify_number);

$sms_contents = "";
$sms_contents .= $certify_number;
$sms_contents .= "\n\n인증번호 입니다.";

if ($receive_number) {
include_once("$g4[path]/lib/icode.sms.lib.php");
$SMS = new SMS; // SMS 연결
$SMS->SMS_con($default['de_icode_server_ip'], $default['de_icode_id'], $default['de_icode_pw'], $default['de_icode_server_port']);
$SMS->Add($receive_number, $send_number, $default['de_icode_id'], stripslashes($sms_contents), "");
$SMS->Send();
}
// SMS END --------------------------------------------------------

alert_close("인증번호를 전송하였습니다. 인증번호를 확인 후 입력하여 주십시오.");
?>



=============================================================



bbs/write.php 를 아래와 같이 수정합니다.

@include_once ("$g4[path]/skin/board/write.head.skin.php"); // 이줄 추가
@include_once ("$board_skin_path/write.head.skin.php");



=============================================================



skin/board/write.head.skin.php 의 코드를 아래와 같이 작성합니다.

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

if (trim($member[mb_is_write]) == "") {
alert("핸드폰번호 인증을 받은 회원만 글쓰기가 가능합니다.\\n\\n회원정보 수정에서 핸드폰번호 인증을 받으시기 바랍니다.\\n\\n음란 게시물을 막기 위한 방편이오니 이점 양해 바랍니다.");
}
?>



=============================================================



이 코드와 관련된 개인적인 질문은 받지 않습니다.

첨부파일

icode.sms.lib.php (3.9 KB) 413회 2007-04-19 17:08
|

댓글 15개

빠진 내용이 있어 코멘트로 남깁니다.



register_update.skin.php 을 아래의 코드로 작성해 주십시오.



<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 핸드폰 번호와 인증번호가 같이 넘어 왔다면
if ($mb_hp && $mb_hp_certify) {

$mb_is_write = "";

// 인증번호가 같다면
if (get_session("ss_hp_certify_number") == $mb_hp_certify) {
$mb_is_write = $g4['time_ymdhis']; // 현재시간
}

sql_query(" update $g4[member_table] set mb_is_write = '$mb_is_write' where mb_id = '$mb_id' ");

} else if ($mb_hp_old && $mb_hp != $mb_hp_old) {
sql_query(" update $g4[member_table] set mb_is_write = '' where mb_id = '$mb_id' ");
}
?>
2007-04-13 (금) 21:12:57
퍼가요~
감사합니다....^^
오~ 리자님 파이팅~!
2007-04-24 (화) 20:00:38
신나는 날입니다.
감사합니다.
고맙습니다^^/
2008-06-19 (목) 22:54:38
감사~!
아니 그럼..관리자는 어디서 인증을 받아야합니까?
관리자도 받으라하는데...
관리자는 인증을 안받게 해야한다거나..뭐 그런소스가 있어야할텐데요..
write.head.skin
관리자 패쑤하기
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if (!$is_admin) {
if (trim($member[mb_is_write]) == "") {
alert("핸드폰번호 인증을 받은 회원만 글쓰기가 가능합니다.\\n\\n회원정보 수정에서 핸드폰번호 인증을 받으시기 바랍니다.\\n\\n음란 게시물을 막기 위한 방편이오니 이점 양해 바랍니다.");
}
}
?>
핸드폰인증
게시판 글쓰기시 핸드폰 인증된 회원만 가능하게 하기
이것을 제대로 구현해봤습니다만..핸드폰인증번호를 잘못입력해도 인증이 되게 넘어가 버리네요..어디 부분을 수정해야 하는건가요?
2012-01-31 (화) 15:47:36
인증번호 아무거나 6자리 입력하여 그냥 회원가입되는현상은

회원가입은 되었으나 인증번호 승인된 회원이 아니므로

게시판에 글을 쓸수 없습니다.

리자님이 올려놓으신글 잘 보시면 알겠지만

휴대폰인증된 회원만 게시판 글쓸수 있는 방법을 설명하신거였거든요
이게 그누5에도서 되나요?
감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

그누4 팁자료실

3,309건

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요. 나누면 즐거움이 커집니다.

+
제목 글쓴이 날짜 조회
07-04-18 조회 7,940
07-04-17 조회 3,266
07-04-17 조회 2,839
07-04-17 조회 2,432
07-04-16 조회 3,238
07-04-16 조회 8,686
07-04-13 조회 5,578
07-04-13 조회 1.3만
07-04-11 조회 5,353
07-04-10 조회 1만
07-04-09 조회 3,411
07-04-07 조회 7,347
07-04-06 조회 1.1만
07-04-05 조회 1.1만
07-04-05 조회 2,953
07-04-04 조회 3,811
07-04-03 조회 4,279
07-04-02 조회 3,445
07-03-31 조회 2,732
07-03-30 조회 5,247