테스트 사이트 - 개발 중인 베타 버전입니다

별도로 주민등록번호 입력받아 성인인증하기 - 회원전용

※주민등록번호 성인인증하기 - 회원전용

아시다시피, 그누보드에 회원가입시 주민등록번호를 필수로 입력 받을 수 있습니다.
가입폼에서 생년월일 부분을 가입자가 수정할 수 있도록 되어 있다는 점을 참고하시고,
이렇게 기록된 생년월일 정보를 이용해서 성인인증을 한다면, 나이로 사용제한하기(http://sir.co.kr/bbs/tb.php/g4_tiptech/2176)와 같은 팁을 참고하셔도 되겠구요.

꼭 주민등록번호의 생년월일을 이용해서 성인인증을 해야만 하겠다면, 본 내용을 참조하시면
됩니다. 필요시 주민등록번호를 직접 입력받아 성인인증하는 내용입니다.

그누에 포함되어 있는 내용을 나름대로 뽑아서 정리한 것 뿐이구요.
부족한 부분들이 충분히 눈에 띌 수 있다고 생각합니다.
주민등록 번호로 꼭 성인인증을 해야만 하는 곳에만 사용하시면 되겠습니다.
세션을 이용하므로 성인인증이 되면 로그아웃될때까지만 적용됩니다. 따라서,
남용하면 불편할 수도 있으므로 꼭 필요한 곳에만 사용해야 할 것 같습니다;


아시겠지만, 실명인증 이런게 아닙니다 .주민등록번호가 올바른지 정도와 그 번호로
성인인증 하는 겁니다. 그누에서 현재 가입시 주민등록번호를 채크하는 방식에서 벗어나지 않습니다.

====================
1.회원만 적용됩니다.
-회원이 아닌 경우 메시지와 함께 로그인할지 안할지 여부를 묻습니다.
2.회원이고 기록된 자신의 주민등록번호가 있는 경우, 입력한 주민등록번호가 일치하지 않는다면
실패입니다.
3.회원인데 기록된 자신의 주민등록 번호가 없는 경우,
--입력한 주민등록번호와 중복되는 번호가 있다면 실패입니다.
--입력한 주민등록번호와 중복되는 번호가 없는 경우,
----가입시 이름과 입력한 이름을 비교해 다르다면 실패입니다.
----가입시 이름과 입력한 이름을 비교해 같다면, 입력한 번호를 암호화해서 mb_jumin에 기록합니다.
4.인증되면 세션으로 저장해서 로그아웃할때까지 유효합니다.
5.주민등록번호를 입력받는 페이지는 head,tail이 적용된 현재창에서 진행됩니다.
승인 후 목적페이지로 이동합니다. 입력폼부분은 적절히 손보시면 되겠습니다.

※2,3번의 경우는 관리자설정에서 주민등록번호를 사용한다고 채크 되어 있을때
즉, 주민등록번호 회원가입시 필수로 되어 있을때만 적용 되는 사항들입니다.

====================
생성해야할 페이지는 다음과 같습니다.
bbs/jumin_check.php____주민등록번호를 입력받고,승인하는 페이지입니다.
extend/xxx.php_________성인인증 채크하는 함수를 넣습니다.


====================
사용방법은 다음과 같습니다.

▶bbs/view.skin.php 라는 화일에 성인인증을 넣는다면,

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
jumin_check($url,'humor'); //★주민등록번호 성인인증-회원전용

아래생략...

이런식으로 삽입하시면, humor게시판의 글보기에는 전부 성인인증 페이지를
거쳐야만 됩니다. 승인후에는 로그아웃할때까지 볼 수 있겠죠.


<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
jumin_check($url,'humor',123); //★주민등록번호 성인인증-회원전용

아래생략...

위에 처럼 삽입하시면, humor게시판의 wr_id=123인 글을 볼때만 성인인증 페이지를
거쳐야 됩니다. 승인후에는 로그아웃할때까지 볼 수 있겠죠.



↓작업시작
============================================================
1.
bbs/jumin_check.php 화일의 전체소스 입니다. 그대로 옮기시면 됩니다.


<?
include_once("./_common.php");
$g4[title] = "주민등록번호 성인인증";
include_once("./_head.php");

$mb_name = trim($_POST[mb_name]);
$mb_jumin = trim($_POST[mb_jumin]);
$accept = trim($_POST[accept]);

if (!$member[mb_id])
confirm("로그인 후 성인회원만 이용이 가능합니다. \\n\\n\\n지금 로그인 하시겠습니까?", "./login.php?wr_id=$wr_id{$qstr}&url=".urlencode($url));
?>

<?
//주민등록번호 성인인증 세션값이 있다면
if (get_session('ss_jumin_check_accept')) {
if (!$url)
echo "<script language='JavaScript'>history.go(-1);</script>";
if ($url)
goto_url($url);
exit;
}
?>

<?if ($accept == 'ok') {?>

<?
// 리퍼러 체크
referer_check();

//주민등록번호 사용 필수라면..
if ($config[cf_use_jumin]) {

$jumin = sql_password($mb_jumin); //주민등록번호를 암호화
$row = sql_fetch(" select mb_name from $g4[member_table] where mb_jumin = '$jumin' "); //중복체크위해

//회원이 등록된 자신의 주번을 넣지 않았다면..
if ($member[mb_jumin] && $member[mb_jumin] != $jumin)
alert("가입하실때 사용하신 주민등록 번호가 아닙니다.\\n\\n관리자에게 문의해 주십시오.");

//주번이 없는 회원이라면..
//주번필수인데 주번이 없는 회원은 입력 주번을 암호화해 기록합니다. 필요는 부분은 주석처리 하세요.
if (!$member[mb_jumin]) {
if (!$row[mb_name]) {//이미 등록된 중복 주번이 없다면..
if ($member[mb_name] == $mb_name) { //실명이 동일한지 확인
@mysql_query("update $g4[member_table] set mb_jumin='$jumin' where mb_name='$mb_name'"); //암호화된 주번기록
} else {
alert("가입하실때 사용하신 실명과 현재 입력하신 실명이 같지 않습니다.\\n\\n관리자에게 문의해 주십시오.");
}
} else {
alert("이미 같은 주민등록번호로 가입하신 회원이 계십니다.\\n\\n관리자에게 문의해 주십시오.");
}
}
}

// 주민등록번호의 7번째 한자리 숫자
$y = substr($mb_jumin, 6, 1);

// 주민등록번호 7번째 자리를 따져서...생일은 8자리로 만든다
$birth = substr($mb_jumin, 0, 6);
if ($y == 9 || $y == 0) // 1800년대생 (계시려나?)
$birth = "18" . $birth;
else if ($y == 1 || $y == 2) // 1900년대생
$birth = "19" . $birth;
else if ($y == 3 || $y == 4) // 2000년대생
$birth = "20" . $birth;
else // 오류
$birth = "xx" . $birth;

$oa = (substr(date('Ymd'),0,4) - substr($birth,0,4)); //만 나이계산
if ($oa < 19) //만 19세 미만 사용금지
alert("만 19세 미만은 이용하실 수 없습니다.");

//주민등록번호 성인인증 세션생성
set_session('ss_jumin_check_accept', TRUE);

if ($url)
{
$link = urldecode($url);
// 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
if (preg_match("/\?/", $link))
$split= "&";
else
$split= "?";

// $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
foreach($_POST as $key=>$value)
{
if ($key != "mb_name" && $key != "mb_jumin" && $key != "accept" && $key != "url")
{
$link .= "$split$key=$value";
$split = "&";
}
}
}
else
$link = $g4[path];

goto_url($link);
?>

<?
} else {
?>

<?
if ($url)
$urlencode = urlencode($url);
else
$urlencode = urlencode($_SERVER[REQUEST_URI]);
?>
<table width=600 cellspacing=0 cellspacing=0 align=center>
<form name="jumin" method="POST" action="javascript:jumin_submit(document.jumin);" autocomplete="off">
<input type="hidden" name="url" value="<?=$urlencode?>">
<input type="hidden" name="accept" value="ok">
<tr><td>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height=25></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">
<TABLE cellSpacing=1 cellPadding=0 width=100% border=0>
<TR bgcolor="#FFFFFF">
<TD width="140" height=30>&nbsp;&nbsp;&nbsp;<b>이름</b></TD>
<TD width="">&nbsp;&nbsp;&nbsp;<INPUT name=mb_name itemname="이름" required minlength="2" nospace hangul></TD>
</TR>
<TR bgcolor="#FFFFFF">
<TD height=30>&nbsp;&nbsp;&nbsp;<b>주민등록번호</b></TD>
<TD>&nbsp;&nbsp;&nbsp;<INPUT name=mb_jumin itemname="주민등록번호" required jumin minlength="13" maxLength=13><font style="font-family:돋움; font-size:9pt; color:#66A2C8">&nbsp;&nbsp;※ 숫자 13자리 중간에 - 없이 입력하세요.</font></TD>
</TR>
</TABLE>
</td>
</tr>
</table>
</td></tr>
<tr><td height=30></td></tr>
<tr><td>
<div align="center">
<INPUT type=image src="<?=$g4[path]?>/img/my_img/jumin_ok_btn.gif" border=0>
<a style='cursor:hand' onclick='history.back();'><img src="<?=$g4[path]?>/img/my_img/jumin_cancel_btn.gif" border=0><a>
</div>
</td></tr>
</form>
</table>

<script language="javascript">
function jumin_submit(f)
{
f.action = "./jumin_check.php";
f.submit();
}

if (typeof(document.jumin.mb_name) != "undefined")
document.jumin.mb_name.focus();
</script>
<?
include_once("./_tail.php");
?>

<?}?>

※소스 내용에 confirm()함수는 기본함수가 아니므로 http://sir.co.kr/bbs/tb.php/g4_tiptech/2005
를 참조하세요. 기본 alert()함수로 바꿔서 쓰셔도 됩니다.
※부족한 부분이나 잘못된 부분은 아시는 분께서 손봐주시면 좋겠습니다.
============================================================
2.
extend/xxx.php 처럼 임의의 적절한 이름의 화일안에 아래 소스를 추가해 주시면 됩니다.

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


//소스삽입시작

//주민등록번호 성인인증하기 - 회원전용
//$url-인증 후 이동 할 페이지,$table-게시판테이블명, $wid-게시물번호
//bbs/jumin_check.php 화일과 함께 사용하는 겁니다.
//예) jumin_check($url); //현재페이지에 적용
//예) jumin_check($url,'humor'); //humor게시판에만 적용
//예) jumin_check($url,'humor',123); //humor게시판의 wr_id=123인 게시물에만 적용

function jumin_check($url,$table='',$wid='') {

global $g4;
global $bo_table;
global $wr_id;

if (!$table) $table = $bo_table;
if (!$wid) $wid = $wr_id;
//주민등록번호 성인인증 세션값이 없다면 인증페이지(jumin_check.php)로 이동
if (!get_session('ss_jumin_check_accept') && !$is_admin && $bo_table == $table && $wr_id == $wid) {

if ($url)
$urlencode = urlencode($url);
else
$urlencode = urlencode($_SERVER[REQUEST_URI]);

$path = $g4[path]."/bbs/jumin_check.php?url=".$urlencode;

echo "<script language='JavaScript'> location.replace('$path'); </script>";
exit;
}
return;
}

//소스삽입끝
?>

============================================================
↑작업 끝

※잘못된 곳 있으면 말씀해 주세요.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 24개

※소스 내용에 confirm()함수는 기본함수가 아니므로 http://sir.co.kr/bbs/tb.php/g4_tiptech/2005
를 참조하세요. 기본 alert()함수로 바꿔서 쓰셔도 됩니다. 멘트만 좀 바꾸시면 됩니다. 깜빡잊었습니다.
정말 좋은 팁이네요..스크랩좀 하겠습니다..ㅋ
감사합니다.^^
가입시 주민번호를 받지않을경우 어떤식으로 처리해야할지 고민이었는데
고민을 말끔히 털어내도록 만드셨네요.
스크램 해 놔야지...
감사감사
좋은 정보입니다.
감사합니다.
잘 쓰겠습니다.^^
위와 같은 방법으로 했는데, 오류가 나네요.

두개의 파일 생성해서 넣고(bbs/jumin_check.php, extend/madu.php)
성인관련 게시판 리스트페이지와 뷰페이지에 체크인증넣고했는데,


Warning: Cannot modify header information - headers already sent by (output started at /home/hosting_users/onlineplayground/www/extend/madu.php:39) in /home/hosting_users/onlineplayground/www/head.sub.php on line 32

33번라인을 제외한 32~38번까지 위와 같은 형식으로 오류납니다.
왜 그런지 잘 모르겠어서요.
성공하신 분들 코치좀 부탁드립니다.

head.sub.php 를 보면

32-> header("Content-Type: text/html; charset=$g4[charset]");
33-> $gmnow = gmdate("D, d M Y H:i:s") . " GMT";
34-> header("Expires: 0"); // rfc2616 - Section 14.21
35-> header("Last-Modified: " . $gmnow);
36-> header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
37-> header("Cache-Control: pre-check=0, post-check=0, max-age=0"); // HTTP/1.1
38->header("Pragma: no-cache"); // HTTP/1.0
좋은 팁 감사합니다
좋은 팁 감사합니다.^^ 잘쓸게요~~
스크랩합니당
감사합니다.써볼께요
감사합니다^^
구웃!!! 감사합니다. 쵸오님.ㅋㅋㅋ
감사해요 스크랩 숑숑
좋은 자료 잘 보았습니다.

그런데 로그인과 관련없이, 비회원도 성인인증 후에는 모든 게시판을 열람할 수 있도록 하려면 어떻게 해야 할까요?

이리저리 시도해 보다가 도저히 못하겠어서 질문드립니다 ㅠㅠ
우왕 머찌네요 실명인증하고 연동해봐야지...

게시글 목록

번호 제목
3108
3096
3091
3087
3084
3047
3041
3040
3009
3004
2999
2980
2979
2978
2977
2974
2949
2926
2916
2907