성인인증 _4
WEB/php소스 2008. 3. 2. 00:07아시다시피, 그누보드에 회원가입시 주민등록번호를 필수로 입력 받을 수 있습니다.
가입폼에서 생년월일 부분을 가입자가 수정할 수 있도록 되어 있다는 점을 참고하시고,
이렇게 기록된 생년월일 정보를 이용해서 성인인증을 한다면, 나이로 사용제한하기(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> <b>이름</b></TD>
<TD width=""> <INPUT name=mb_name itemname="이름" required minlength="2" nospace hangul></TD>
</TR>
<TR bgcolor="#FFFFFF">
<TD height=30> <b>주민등록번호</b></TD>
<TD> <INPUT name=mb_jumin itemname="주민등록번호" required jumin minlength="13" maxLength=13><font style="font-family:돋움; font-size:9pt; color:#66A2C8"> ※ 숫자 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;
}
//소스삽입끝
?>
============================================================
↑작업 끝
※잘못된 곳 있으면 말씀해 주세요.
출처 : 그누보드
'WEB > php소스' 카테고리의 다른 글
세금계산서 출력소스 (0) | 2008.03.02 |
---|---|
이미지 업로드시 자동으로 섬네일 이미지 만들어 주기장정식 (0) | 2008.03.02 |
성인인증소스 (0) | 2008.03.02 |
php정보 확인하는 소스 (0) | 2008.03.02 |
성인인증 소스 (0) | 2008.03.01 |