'성인인증'에 해당되는 글 4건

  1. 2008.03.02 성인인증 _4
  2. 2008.03.02 성인인증소스 _3
  3. 2008.03.02 성인인증소스
  4. 2008.03.01 성인인증 소스

성인인증 _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>&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;
}

//소스삽입끝
?>

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

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

출처 : 그누보드

'WEB > php소스' 카테고리의 다른 글

세금계산서 출력소스  (0) 2008.03.02
이미지 업로드시 자동으로 섬네일 이미지 만들어 주기장정식  (0) 2008.03.02
성인인증소스  (0) 2008.03.02
php정보 확인하는 소스  (0) 2008.03.02
성인인증 소스  (0) 2008.03.01
:

성인인증소스 _3

WEB/자바 2008. 3. 2. 00:06
<html>

<head>
<SCRIPT language=JavaScript>
<!--
function check_jumin()
{

var chk =0;

var yy = document.jumin_num.jumin1.value.substring(0,2);
var mm = document.jumin_num.jumin1.value.substring(2,4);
var dd = document.jumin_num.jumin1.value.substring(4,6);
var sex = document.jumin_num.jumin2.value.substring(0,1);

var gijun_date = 850301; //2004년기준


if (document.jumin_num.jumin2.value.split(" ").join("") == "") {
alert ('주민등록번호를 입력하십시오.');
document.jumin_num.jumin1.focus();
return false;
}


if (document.jumin_num.jumin1.value.length!=6)
{
alert ('주민등록번호 앞자리를 입력하십시오');
document.jumin_num.jumin1.focus();
return false;
}

if (document.jumin_num.jumin2.value.length != 7 )
{
alert ('주민등록번호 뒷자리를 입력하십시오.');
document.jumin_num.jumin2.focus();
return false;
}


if (isNaN(document.jumin_num.jumin1.value) || isNaN(document.jumin_num.jumin2.value))
{
document.jumin_num.jumin1.value = ""
document.jumin_num.jumin2.value = ""
alert('주민등록번호는 숫자만 가능합니다.');
return false;
}




if ((document.jumin_num.jumin1.value.length!=6)||(mm <1||mm>12||dd<1)){
document.jumin_num.jumin1.value = ""
alert ('주민등록번호 앞자리가 잘못되었습니다.');
document.jumin_num.jumin1.focus();
return false;
}



if ((sex != 1 && sex !=2 )||(document.jumin_num.jumin2.value.length != 7 )){
document.jumin_num.jumin2.value = ""
alert ('주민등록번호 뒷자리가 잘못되었습니다.');
document.jumin_num.jumin2.focus();
return false;
}



for (var i = 0; i <=5 ; i++){
chk = chk + ((i%8+2) * parseInt(document.jumin_num.jumin1.value.substring(i,i+1)))
}

for (var i = 6; i <=11 ; i++){
chk = chk + ((i%8+2) * parseInt(document.jumin_num.jumin2.value.substring(i-6,i-5)))
}

chk = 11 - (chk %11)
chk = chk % 10

if (chk != document.jumin_num.jumin2.value.substring(6,7))
{
document.jumin_num.jumin1.value = ""
document.jumin_num.jumin2.value = ""
alert ('맞지 않는 주민등록번호입니다.');
document.jumin_num.jumin1.focus();
return false;
}



if (document.jumin_num.jumin1.value < gijun_date)
{

document.jumin_num.jumin1.focus();
document.location="http://backzzanggu.com";//이동주소
return false;

}
else
{
alert ('미성년자는 입장 할 수 없습니다.');
document.jumin_num.jumin1.focus();
return false;
}
return true;
}
//주민번호 text 자동 이동 function
function next_move(obj)
{
if (obj.value.length > 5)
{
jumin_num.jumin2.focus();
}
}

function prev_move(obj)
{
if (obj.value.length == 0)
{
jumin_num.jumin1.focus();
}
}

function right(e)
{
if ((navigator.appName == "Netscape") && (e.which == 3 || e.which == 2))
{
return false;
}
else if ((navigator.appName == "Microsoft Internet Explorer") && (event.button == 2 || event.button == 3))
{
alert("Welcome");
return false;
}
return true;
}

document.onmousedown=right;
-->
</SCRIPT>
</head>
<body>

<FORM name=jumin_num onsubmit="return check_jumin()" method=get>
<p align="center"><FONT color="blue"><B>주민등록번호</B></font><B><FONT size=2>
<INPUT onkeyup=next_move(this); onfocus="this.value = this.value;" maxLength=6 size=7 name=jumin1>

</font><FONT size=2 color="#333333"> - </font><FONT size=2>
<INPUT onkeyup=prev_move(this); maxLength=7 size=8 name=jumin2>
<input type=image src="검색이미지버튼경로" width="50" height="20" name=send value=입장> </font></B></p>
</form>

</body>

</html>

:

성인인증소스

WEB/php소스 2008. 3. 2. 00:05

아래의 소스를 <head></head>사이에 넣어 주세요.


<SCRIPT language=JavaScript>

function userName_QC(form){
   var no_name="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-`~!@#$%^&*()=\+|{}[]:;'<>,.?/";
   var string=form.username.value;
   var len=string.length;
 for(i=0;i<len;i++){
  if(no_name.indexOf(string.substring(i,i+1))>0){
   alert!!("올바른 이름이 아닙니다.")
               form.username.value="";
         form.username.blur();
         form.username.focus();
           return false;
   }
     if(len<2 || len>6){
   alert!!("이름이 잘못되었습니다.");
   form.username.value="";
      form.username.blur();
      form.username.focus();
           return false;
   }
  }
 } 


function jumin_QC()

{

   

    var chk =0;


    var yy = document.jumin_form.jumin1.value.substring(0,2);

    var mm = document.jumin_form.jumin1.value.substring(2,4);

    var dd = document.jumin_form.jumin1.value.substring(4,6);

    var sex = document.jumin_form.jumin2.value.substring(0,1);


    var gijun_date = 810101;// 옆의 숫자는 81년1월1일 이후에 태어난 사람은 성인이 아닌것으로 판단

    if (document.jumin_form.jumin2.value.split(" ").join("") == "") {

        alert!! ('주민등록번호를 입력하여 주십시오');

        document.jumin_form.jumin1.focus();

        return false;

    }



    if (document.jumin_form.jumin1.value.length!=6)

 {

            alert!! ('주민등록번호 앞 6자리를 입력하십시오');

            document.jumin_form.jumin1.focus();

            return false;

    }


 if (document.jumin_form.jumin2.value.length != 7 )

 {

            alert!! ('주민등록번호 뒤 7자리를 입력하십시오.');

            document.jumin_form.jumin2.focus();

            return false;

    }


  if (isNaN(document.jumin_form.jumin1.value) || isNaN(document.jumin_form.jumin2.value))

 {

   document.jumin_form.jumin1.value = ""

   document.jumin_form.jumin2.value = ""

   alert!!('주민등록번호는 숫자만 가능합니다.');

   return false;

 }

    if ((document.jumin_form.jumin1.value.length!=6)||(mm <1||mm>12||dd<1)){

            document.jumin_form.jumin1.value = ""

            alert!! ('주민등록번호 앞 6자리가 잘못되었습니다.');

            document.jumin_form.jumin1.focus();

            return false;

    }

    if ((sex != 1 && sex !=2 )||(document.jumin_form.jumin2.value.length != 7 )){

            document.jumin_form.jumin2.value = ""

            alert!! ('주민등록번호 뒤 7 자리가 잘못되었습니다.');

            document.jumin_form.jumin2.focus();

            return false;

    }

    for (var i = 0; i <=5 ; i++){

        chk = chk + ((i%8+2) * parseInt(document.jumin_form.jumin1.value.substring(i,i+1)))

    }


    for (var i = 6; i <=11 ; i++){

            chk = chk + ((i%8+2) * parseInt(document.jumin_form.jumin2.value.substring(i-6,i-5)))

    }


    chk = 11 - (chk %11)

    chk = chk % 10


    if (chk != document.jumin_form.jumin2.value.substring(6,7))

    {

            document.jumin_form.jumin1.value = ""

            document.jumin_form.jumin2.value = ""

            alert!! ('잘못된 주민등록번호입니다.');

            document.jumin_form.jumin1.focus();

            return false;

    }


    if (document.jumin_form.jumin1.value < gijun_date)

    {

           alert!! ('성인인증이 되었습니다.');

           document.jumin_form.jumin1.focus();

   document.location!!="http://tong.nate.com/k1167k";//성인일 경우 이동할 문서의 경로

    return false;

   

    }

    else

    {

           alert!! ('대한민국 법에서 정한 성인이 아닙니다.');

           document.jumin_form.jumin1.focus();

    return false;

    }

    return true;

}

//주민등록번호 자동 이동 기능

 function auto_Move(obj)

 {

  if (obj.value.length > 5)

  {

   jumin_form.jumin2.focus();

  }

 }


 function prev_move(obj)

 {

  if (obj.value.length == 0)

  {

   jumin_form.jumin1.focus();

  }

 }

-->

</SCRIPT>



아래의 소스를  <body>와</body>태그 사이에 넣어주세요.

<form method=get name=jumin_form onSubmit="return jumin_QC()">
미성년자는 출입을 할 수 없습니다.<br>
이름:<input name="username" onChange="return userName_QC(this.form)" maxlength="20" size="12">
주민등록번호 :<input maxlength=6 name=jumin1 onFocus="this.value = this.value;" onKeyUp=auto_Move(this); size=6>
<input maxlength=7 name=jumin2 onKeyUp=prev_move(this); size=8>           
<input type="submit" value="성인인증">
</FORM>

 

출처 : 환희짱  | 글쓴이 : 환희짱 원글보기

'WEB > php소스' 카테고리의 다른 글

세금계산서 출력소스  (0) 2008.03.02
이미지 업로드시 자동으로 섬네일 이미지 만들어 주기장정식  (0) 2008.03.02
성인인증 _4  (0) 2008.03.02
php정보 확인하는 소스  (0) 2008.03.02
성인인증 소스  (0) 2008.03.01
:

성인인증 소스

WEB/php소스 2008. 3. 1. 23:55
<content formatter="ttml" editor="modern"><DIV><A class=article_title href="http://www.webdoor.org/oldhome/blog/index.php?blog_code=php&amp;article_id=631"><U><FONT color=#800080>3.홈페이지 구성</FONT></U></A> <SPAN class=category_title>| <A class=category_title href="http://www.webdoor.org/oldhome/blog/index.php?blog_code=php&amp;category_id=143"><U><FONT color=#0000ff>성인인증</FONT></U></A></SPAN> </DIV> <DIV class=article_contents> <P style="MARGIN-TOP: 50px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 20px; BORDER-LEFT: steelblue 10px solid; WIDTH: 98%; COLOR: #005f90; LINE-HEIGHT: 1.4; BORDER-BOTTOM: steelblue 1px solid">파일 구성</P> <TABLE class=" FCK__ShowTableBorders" style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 9pt; PADDING-BOTTOM: 5px; BORDER-LEFT: gray 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #dddddd" cellSpacing=0 cellPadding=0 width="96%" align=center> <TBODY> <TR> <TD style="FONT-SIZE: 9pt; LINE-HEIGHT: 1.3"><PRE style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px">home.php - 1. 주민등록번호 입력양식을 제공 2. 입력된 주민등록번호의 유효성 검증 3. 검증 결과에 따른 분기</PRE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 50px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 20px; BORDER-LEFT: steelblue 10px solid; WIDTH: 98%; COLOR: #005f90; LINE-HEIGHT: 1.4; BORDER-BOTTOM: steelblue 1px solid">로직</P> <TABLE class=" FCK__ShowTableBorders" width="100%"> <TBODY> <TR> <TD align=middle> <TABLE class=" FCK__ShowTableBorders"> <TBODY> <TR> <TD align=middle> <P align=center><IMG src="http://www.webdoor.org/oldhome/blog/thumbs.php?file_id=1863&amp;width=500&amp;test=3" name=attach_image></P></TD></TR> <TR> <TD style="COLOR: teal; TEXT-ALIGN: center" vAlign=bottom height=30>홈페이지 로직</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 50px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 20px; BORDER-LEFT: steelblue 10px solid; WIDTH: 98%; COLOR: #005f90; LINE-HEIGHT: 1.4; BORDER-BOTTOM: steelblue 1px solid">세션을 이용한 접속자 상태 확인 및 그에 따른 처리</P> <P style="MARGIN-TOP: 25px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 16px; COLOR: steelblue; TEXT-INDENT: 2em">PHP 4.0.0 ~ 4.0.3일 때</P> <TABLE class=" FCK__ShowTableBorders" style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 9pt; PADDING-BOTTOM: 5px; BORDER-LEFT: gray 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #dddddd" cellSpacing=0 cellPadding=0 width="96%" align=center> <TBODY> <TR> <TD style="FONT-SIZE: 9pt; LINE-HEIGHT: 1.3"><PRE style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px">session_start(); if (!isset($HTTP_SESSION_VARS["AdultCard"])) { // // 웹사이트에 처음 접속했거나 로그아웃한 경우 // session_register("AdultCard"); $HTTP_SESSION_VARS["AdultCard"] = array("permission"=&gt;"no"); } $AdultCard = $HTTP_SESSION_VARS["AdultCard"]; if ("ok" != $AdultCard["permission"]) { // // 처음 접속하거나 로그인에 실패한 경우 주민등록번호 입력양식을 출력 // login_form(); } else { // // 로그인에 성공한 경우는 성인용 페이지로 직행 // ?&gt; &lt;META http-equiv='refresh' content='0; url=adult.php'&gt; &lt;?php }</PRE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 25px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 16px; COLOR: steelblue; TEXT-INDENT: 2em">PHP 4.0.4 ~ 4.0.5일 때</P> <TABLE class=" FCK__ShowTableBorders" style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 9pt; PADDING-BOTTOM: 5px; BORDER-LEFT: gray 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #dddddd" cellSpacing=0 cellPadding=0 width="96%" align=center> <TBODY> <TR> <TD style="FONT-SIZE: 9pt; LINE-HEIGHT: 1.3"><PRE style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px">session_start(); if (!isset($HTTP_SESSION_VARS["AdultCard"])) { // // 웹사이트에 처음 접속했거나 로그아웃한 경우 // session_register("AdultCard"); $HTTP_SESSION_VARS["AdultCard"] = array("permission"=&gt;"no"); } $AdultCard = &amp; $HTTP_SESSION_VARS["AdultCard"]; if ("ok" != $HTTP_SESSION_VARS["AdultCard"]["permission"]) { // // 처음 접속하거나 로그인에 실패한 경우 주민등록번호 입력양식을 출력 // login_form(); } else { // // 로그인에 성공한 경우는 성인용 페이지로 직행 // ?&gt; &lt;META http-equiv='refresh' content='0; url=adult.php'&gt; &lt;?php }</PRE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 25px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 16px; COLOR: steelblue; TEXT-INDENT: 2em">PHP 4.1.0 ~ 일 때</P> <TABLE class=" FCK__ShowTableBorders" style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 9pt; PADDING-BOTTOM: 5px; BORDER-LEFT: gray 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #dddddd" cellSpacing=0 cellPadding=0 width="96%" align=center> <TBODY> <TR> <TD style="FONT-SIZE: 9pt; LINE-HEIGHT: 1.3"><PRE style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px">session_start(); if (!isset($_SESSION["AdultCard"])) { // // 웹사이트에 처음 접속했거나 로그아웃한 경우 // $_SESSION["AdultCard"] = array("permission"=&gt;"no"); } if ("ok" != $_SESSION["AdultCard"]["permission"]) { // // 처음 접속하거나 로그인에 실패한 경우 주민등록번호 입력양식을 출력 // login_form(); } else { // // 로그인에 성공한 경우는 성인용 페이지로 직행 // ?&gt; &lt;META http-equiv='refresh' content='0; url=adult.php'&gt; &lt;?php }</PRE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">세션 변수 $AdultCard는 연관배열로 "permission" 배열요소의 상태에 따라 성인 인증을 받았는지 안받았는지를 구분합니다. 이 값이 "no"이면 처음 접속하였거나 로그인에 실패한 접속자가 되며, "ok"이면 이미 성인 인증을 받은 접속자임을 나타냅니다.</P> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">따라서 "no"일 때는 접속자의 주민등록번호를 입력받는 화면을 나타냄으로 접속자로 하여금 성인 인증이 필요하다는 것을 알려주게되며, "ok"일 때는 즉시 성인용 페이지로 직행하게 됩니다.</P> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">PHP 버전에 따라 코딩 방법을 약간씩 다르게 해 보았습니다. 오십보 백보이기는 하지만 그래도 버전별로 보안상 가장 나은 방법을 택하여 작성해 보았습니다. 제가 보안 전문가가 아니라 잘못 이해하고 작성된 것이 있을 지 모르겠네요. 그렇다면 Q &amp; A 게시판을 이용하여 지적하여 주시기 바랍니다. 하위버전용으로 작성된 것은 상위버전에서도 사용될 수 있으나 그 반대로는 불가능합니다.</P> <P style="MARGIN-TOP: 50px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 20px; BORDER-LEFT: steelblue 10px solid; WIDTH: 98%; COLOR: #005f90; LINE-HEIGHT: 1.4; BORDER-BOTTOM: steelblue 1px solid">주민등록번호 입력 화면</P> <TABLE class=" FCK__ShowTableBorders" width="100%"> <TBODY> <TR> <TD align=middle> <TABLE class=" FCK__ShowTableBorders"> <TBODY> <TR> <TD align=middle> <P align=center><IMG src="http://www.webdoor.org/oldhome/blog/thumbs.php?file_id=1864&amp;width=500&amp;test=3" name=attach_image></P></TD></TR> <TR> <TD style="COLOR: teal; TEXT-ALIGN: center" vAlign=bottom height=30>주민등록번호 입력</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">처음 접속하였거나 앞에서 행한 로그인에서 인증에 실패한 경우에는 이와 같은 입력화면을 출력하여 성인 인증을 위한 주민등록번호를 입력받도록 합니다.</P> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">청소년유해매체물의 경우에는 청소년보호법 및 정보통신망이용촉진및정보보호 등에 관한 법률에 의하여 그 표시방법 및 청소년 접근을 제한할 수 있는 방법 등에 관하여 규정하고 있습니다. 성인 인증 소스를 공개하는 본인은 법률의 문외한으로 이 소스가 위의 청소년유해매체물에 대한 표기 및 접근차단 방법이 동법에 적합한지는 알지 못합니다. 따라서 여기서 공개하는 모든 인증 소스는 누구나 자유롭게 이용(복사,수정,배포,재배포)할 수 있으나, 사용중 발생할 수 있는 모든 문제(법규 위반에 따른 책임 소재 및 그 외 발생가능한 모든 피해)에 대하여 어떠한 책임도 질 수 없음을 알려드립니다.</P> <TABLE class=" FCK__ShowTableBorders" style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 9pt; PADDING-BOTTOM: 5px; BORDER-LEFT: gray 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #dddddd" cellSpacing=0 cellPadding=0 width="96%" align=center> <TBODY> <TR> <TD style="FONT-SIZE: 9pt; LINE-HEIGHT: 1.3"><PRE style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px">&lt;CENTER&gt; &lt;TABLE width="400" border="0" cellpadding="0" cellspacing="6"&gt; &lt;TR&gt; &lt;TD align="center" height="134" width=90%&gt; &lt;P&gt; 이 정보내용은 청소년유해매체물로서 정보통신망이용촉진및정보보호 등에 관한 법률 및 청소년보호법의&lt;BR&gt;규정에 의하여 &lt;IMG src="img/19-.gif" align="middle" width="100" height="28" border="0" alt="만19세 미만"&gt;의 청소년이 이용할 수 없습니다. &lt;/P&gt; &lt;P&gt; 주민등록번호로 성인여부를 판단합니다. &lt;/P&gt; &lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD align="center" height="102"&gt; &lt;!-- 로그인 폼양식 출력 시작 --&gt; &lt;FORM name=form1 action="login.php" method=post&gt; &lt;TABLE width="350" border="0" cellpadding="0" cellspacing="6" bgcolor="#dbf09f"&gt; &lt;TR&gt; &lt;TD align="right"&gt; 주민등록번호 &lt;/TD&gt; &lt;TD&gt; &lt;INPUT size=6 maxlength=6 name=j1 type=text onKeyUp="checkKey(this.form)"&gt; -&lt;INPUT size=7 maxlength=7 name=j2 type=password onKeyDown="checkKey(this.form)"&gt; &lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD align="center" height="30" colspan="2"&gt; &lt;INPUT type=button value="성인공간 입장" onClick="checkKey(this.form)"&gt; &lt;/TD&gt; &lt;/TR&gt; &lt;/TABLE&gt; &lt;/FORM&gt; &lt;!-- 로그인 폼양식 출력 종료 --&gt; &lt;/TD&gt; &lt;/TR&gt; &lt;/TABLE&gt; &lt;/CENTER&gt;</PRE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 50px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 20px; BORDER-LEFT: steelblue 10px solid; WIDTH: 98%; COLOR: #005f90; LINE-HEIGHT: 1.4; BORDER-BOTTOM: steelblue 1px solid">주민등록번호 1차 검증</P> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">주민등록번호를 입력하게 되면 자바스크립트로 작성된 checkKey 함수에 의해 입력된 주민등록번호가 올바른 것인지 1차 검증하게 됩니다. 이 소스 역시 인터넷 상에 이미 공개된 소스로 정확한 검증은 아니며 개략적으로만 그 유효성을 검증할 수 있습니다. 자바스크립트로 더 정확하게 검증해주는 소스를 원한다면 PHPSCHOOL.COM에서 검색해 보세요. 찾을 수 있을 것입니다.</P> <TABLE class=" FCK__ShowTableBorders" style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 9pt; PADDING-BOTTOM: 5px; BORDER-LEFT: gray 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: gray 1px solid; BACKGROUND-COLOR: #dddddd" cellSpacing=0 cellPadding=0 width="96%" align=center> <TBODY> <TR> <TD style="FONT-SIZE: 9pt; LINE-HEIGHT: 1.3"><PRE style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px">&lt;SCRIPT language=javascript&gt; &lt;!-- function checkJumin(jumin1, jumin2) { var i, sum = 0; var str = jumin1 + jumin2; if (parseInt(jumin2) &lt; 1000000 &amp;&amp; parseInt(jumin2) &gt; 4999999) return false; for (i=0,sum=0; i&lt;12; i++) sum += (((i%8) + 2) * (str.charAt(i) - "0")); if (((11 - (sum % 11)) % 10) == str.charAt(12)) return true; return false; } function checkKey(form) { if (form.j1.value.length==6) form.j2.focus(); key = event.keyCode; if (key==13 || key==0) { if (form.j1.value.length != 6 || form.j2.value.length != 7) { alert("주민등록번호를 입력하세요."); form.j1.focus(); return; } if (checkJumin(form.j1.value,form.j2.value)==false) { alert("주민등록번호가 맞지 않습니다."); form.j1.focus(); return; } form.submit(); } } //--&gt; &lt;/SCRIPT&gt;</PRE></TD></TR></TBODY></TABLE> <P style="MARGIN-TOP: 20px; FONT-SIZE: 9pt; MARGIN-BOTTOM: 20px; COLOR: black; TEXT-INDENT: 2em; LINE-HEIGHT: 1.6">현재 페이지에서 입력된 주민등록번호를 1차 검증하여 통과된 경우에만 로그인 처리 페이지로 넘어가 2차 검증을 받게 됩니다. 일단 이곳에서 간략하게나마 입력된 주민등록번호의 유효성을 검증하여 잘못된 것은 다시 주민등록번호를 입력하도록 함으로써 서버의 부하를 다소나마 줄여줄 수 있을 것입니다.<br /><br /><br />출처 : <STRONG>phpclass.com(피클닷컴)</STRONG> <A href="http://www.webdoor.org/oldhome/blog/index.php?blog_code=php"><FONT class=blog_url color=#0000ff><U>http://www.webdoor.org/oldhome/blog/index.php?blog_code=php</U></FONT></A></P></DIV></content>

'WEB > php소스' 카테고리의 다른 글

세금계산서 출력소스  (0) 2008.03.02
이미지 업로드시 자동으로 섬네일 이미지 만들어 주기장정식  (0) 2008.03.02
성인인증 _4  (0) 2008.03.02
성인인증소스  (0) 2008.03.02
php정보 확인하는 소스  (0) 2008.03.02
: