초대장 기능~~ 두 번째 수정 되었습니다. > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

초대장 기능~~ 두 번째 수정 되었습니다. 정보

회원가입 초대장 기능~~ 두 번째 수정 되었습니다.

첨부파일

invitation_code.zip (7.0K) 145회 다운로드 2011-05-23 07:25:29
invitation_code_all.zip (28.4K) 134회 다운로드 2011-05-23 07:25:29

본문

기능은 가입 자체를 초대한(초대코드를 가지고 있는) 사람만 가입 시키는 코드가 되겠습니다.
기준은 그누보드 기본팩 4.34.03 utf8 기준입니다.(euc-kr 도 아마 조금만 수정하면 될겁니다.)
다른 팩들의 경우 ui이가 다르거나 깨져 보일수도....

invitation_code_all.zip 의 경우는 소스 편집이 필요치 않습니다.!!!!!!
db의 경우에는 처음에 계정/adm/invitation_code_install.php를 실행하시면 됩니다.
(다른 기능을 추가하신경우 오류가 날수도 있습니다!!)

기본 기능으로는 초대 코드 생성
선택 코드 삭제
테이블 초기화
사용한 코드만 삭제
선택한 코드 메일로 보내기
(제가 해본 결과 99%의 확률로 스팸메일함에 들어가는 듯하네요)-invitation_code_send_update.php파일 24번 줄에 mailer(~) 부분을 수정하시면 될 것 같네요.(Daum에서는 도메인 아이피하고 진짜 보낸 아이피가 틀리면 스팸으로 판단하네요)

먼저 첨부파일을 다운받아 서버
계정/adm/ <- 으로 올려주세요!

db의 경우에는 처음에 계정/adm/invitation_code_install.php를 실행하시면 됩니다.

일단 관리자 메뉴에 추가하시는 게 먼저죠 ㅋ
계정/adm/admin.menu200.php 파일을 열어 수정합니다.
저는 회원 관리와 포인트 관리 사이에 넣었습니다.

array("200110", "초대장 관리", "$g4[admin_path]/invitation_code.php"),

여기다 추가해도 될지 모르지만
계정/adm/config_form.php파일을 열어서
초대장 기능을 사용할지 말지를 정해는 코드를 넣습니다.

~~~~
    <td>복사, 이동시 로그</td>
~~~~
</tr> 밑에 넣었습니다.

<tr class='ht'>
    <td>초대장으로만 가입시키기</td>
    <td colspan=3><input type='checkbox' name='g4_invitation_code_config' value='1' <?=$config[g4_invitation_code_config]?'checked':'';?>> 사용
        <?=help("초대장으로만 가입되게하기")?></td>
</tr>

추가하셨으면
계정/adm/config_form_update.php
~~~
              cf_10                  = '$_POST[cf_10]'; //수정 전
~~~
cf_10                  = '$_POST[cf_10]', //수정 후
                g4_invitation_code_config= '$_POST[g4_invitation_code_config]' ";

다음은
계정/skin/member/basic/register.skin.php를 수정합니다.
전    <? if ($config[cf_use_jumin]) { // 주민등록번호를 사용한다면 ?> 이놈 윗줄에 추가합니다.

  <? if ($config[g4_invitation_code_config]) { // 초대장  ?>
    <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=g4_invitation_code itemname="초대장 코드" required minlength="2" nospace nohangul class=ed></td>
                </tr>
                </table></td>
        </tr>
    </table>
    <? } ?>

그다음은
계정/bbs/register_form.php 이놈입니다.

두 번째줄 인클루드문 바로 밑에 추가 합니다.

//초대장 환경설정 부르기
include_once($g4['admin_path']."/invitation_code_config.php");


~~//주민등록번호~~ 윗줄에 추가합니다

    if ($config[g4_invitation_code_config]) {
        $row = sql_fetch("SELECT * from ".$g4['invitation']." where code = '$_POST[g4_invitation_code]'");
        if($row[code]){
          if($row[validcode]) alert("이미 사용한 초대 코드입니다.");
          if(date("Y-m-d")>$row[validdate])alert("이미 사용 기간이 지난 초대 코드입니다.");
        }else{
            alert("초대코드가 틀렸습니다! 확인해주세요!");
        }
    }

다음
계정/skin/member/basic/register_form.skin.php 파일입니다.

<input type=hidden name=mb_email_enabled value="" id="mb_email_enabled">
~여기에 넣어주세요~
<!-- <input type=hidden name=token value="<?=$token?>"> -->

<input type=hidden name=g4_invitation_code  value='<?=$g4_invitation_code?>'>


계정/bbs/register_form_update.php
이것도 인클루드문 밑에 추가합니다.
요건 3번째줄이겠죠 ㅋㅋ

//초대장 환경설정 부르기
include_once($g4['admin_path']."/invitation_code_config.php");


    if ($mb[mb_id]) 
        alert("이미 가입한 아이디입니다.");
    ~~~~~여기다 넣어 주세요~~
    $sql = " insert into $g4[member_table]
                set mb_id = '$mb_id',
                    mb_password = '".sql_password($mb_password)."',
   
    if ($config[g4_invitation_code_config]&&!$g4_invitation_code) alert('초대장 코드가 넘어오지 않았습니다.');
    if ($config[g4_invitation_code_config]) {
        $row = sql_fetch("SELECT * from ".$g4['invitation']." where code = '$_POST[g4_invitation_code]' ");
        if($row[code]){
            if($row[validcode]) alert("이미 사용한 초대 코드입니다.");
            if(date("Y-m-d")>$row[validdate])alert("이미 사용 기간이 지난 초대 코드입니다.");
        }else{
            alert("초대코드가 틀렸습니다! 확인해주세요!");
        }
    }

    // 회원가입 포인트 부여 <- 이놈 윗줄에도 추가하세요~~

    //초대장 관련
    if ($config[g4_invitation_code_config]){
        $sql2="SELECT * FROM  g4_member WHERE  `mb_id` =  '$mb_id'";
        $row2=sql_fetch($sql2);
        $timeset=date("Y-m-d H:i:s");
        $sql = "UPDATE ".$g4['invitation']."  SET joindate='$timeset', validcode = '1', mb_no='$row2[mb_no]' WHERE code = '$_POST[g4_invitation_code]'";
        sql_query($sql);
    }

이러면 일단 끝났을 겁니다.

따라할 수 있게 설명했는지는 모르겠네요.
제가 봐도 어지럽기만 하네요. ㅋㅋ

소스가 좀 많이 난잡합니다.
바꿔서 쓰시고 제게도 알려 주시면 감사합니다.

ps. 글쓰기 버튼을 누르기가 두렵군요


수정된 부분

계정/bbs/register_form_update.php
부분입니다.
회원 정보 수정시 오루가 다는 현상때문에 수정 되었습니다
추천
18

댓글 전체

문제가있네요 정보수정 후 alert 창이 뜨지 않습니다 그리고 가입후 완료버튼 누르면 빈페이지이구요

물론 가입은 됩니다. 하지만 관리자 초대장 화면에서 누가 가입했는지 알수 없습니다
register_update.skin.php  파일 문제인것 같네요 넣은 코드를 모두 제거하면 잘 됩니다.

하지만 아직 관리자화면에서는 누가 사용했는지 알수없네요
register_update.skin.php 에

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
//초대장 환경설정 부르기
include_once($g4['admin_path']."/invitation_code_config.php");


    if ($mb[mb_id])
        alert("이미 가입한 아이디입니다."); <- 밑에 추가합니다.
   
    if ($config[g4_invitation_code_config]&&!$g4_invitation_code) alert('초대장 코드가 넘어오지 않았습니다.');
    if ($config[g4_invitation_code_config]) {
        $row = sql_fetch("SELECT * from ".$g4['invitation']." where code = '$_POST[g4_invitation_code]' ");
        if($row[code]){
            if($row[validcode]) alert("이미 사용한 초대 코드입니다.");
            if(date("Y-m-d")>$row[validdate])alert("이미 사용 기간이 지난 초대 코드입니다.");
        }else{
            alert("초대코드가 틀렸습니다! 확인해주세요!");
        }
    }

    // 회원가입 포인트 부여 <- 이놈 윗줄에도 추가하세요~~

    //초대장 관련
    if ($config[g4_invitation_code_config]){
        $sql2="SELECT * FROM  g4_member WHERE  `mb_id` =  '$mb_id'";
        $row2=sql_fetch($sql2);
        $timeset=date("Y-m-d H:i:s");
        $sql = "UPDATE ".$g4['invitation']."  SET joindate='$timeset', validcode = '1', mb_no='$sql2[mb_no]' WHERE code = '$_POST[g4_invitation_code]'";
        sql_query($sql);
    }

?>

이렇게 넣었는데 아직도 그러네요 .
if ($mb[mb_id])
        alert("이미 가입한 아이디입니다.");
    여기다 넣어 주세요~~
    $sql = " insert into $g4[member_table]
                set mb_id = '$mb_id',
                    mb_password = '".sql_password($mb_password)."',
이런 씩입니다.
그전에 삭제하신게 문제가 되는 것 같네요
혹시 관리자 화면에 회원번호가 안 나오신다면 99%입니다.

그리고 다시 가입 테스트를 해보세요~~
감사합니다.이제 되는것같네요

스킨 적용 어려우신분들을위해 활용팁에 정리한 파일올려두었습니다

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=26305&page=0&posting=ok&sca=&sfl=&stx=&sst=&sod=&spt=0

hhgyu 님께 감사의 말씀드립니다.
---------------------------
웹 페이지의 메시지
---------------------------
회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.
---------------------------
확인 
---------------------------

이렇게 나오네요..........
감사합니다^^ 추천꽝~~!!!
초대장 관리에서 아이디와 아이디 번호가 안나오는것 에 오타가 있네요^^
제일 하단에 이 부분 삽입하는 부분있는데 여기에서
if ($config[g4_invitation_code_config]){
        $sql2="SELECT * FROM  g4_member WHERE  `mb_id` =  '$mb_id'";
        $row2=sql_fetch($sql2);
        $timeset=date("Y-m-d H:i:s");
        $sql = "UPDATE ".$g4['invitation']."  SET joindate='$timeset', validcode = '1', mb_no='$sql2[mb_no]' WHERE code = '$_POST[g4_invitation_code]'";
        sql_query($sql);
    }


 $sql = "UPDATE ".$g4['invitation']."  SET joindate='$timeset', validcode = '1', mb_no='$sql2[mb_no]' WHERE code = '$_POST[g4_invitation_code]'";
      위 부분에
mb_no='$sql2[mb_no]'  이 부분에서 mb_no='$row2[mb_no]'  로 고쳐주시면 됩니다^^
선택 삭제가 안될시에
invitation_code_delete.php 파일 내용중에
//goto_url("./invitation_code.php");
위 부분을
goto_url("./invitation_code.php");
주석 삭제 해주니 되네요........
invitation_code_all.zip 파일 그대로 덮어씌웠는데요~

회원가입약관의 내용에 동의하셔야 회원 가입 하실수 있습니다...라고 떠요..;;;

뭐가 문제일까요...;;
계정/skin/member/basic/register_form.skin.php 파일에

설명에 나와 있는 코드가 추가 안되 있는거 같애요..;

<input type=hidden name=mb_email_enabled value="" id="mb_email_enabled">
~여기에 넣어주세요~
<!-- <input type=hidden name=token value="<?=$token?>"> -->

<input type=hidden name=g4_invitation_code  value='<?=$g4_invitation_code?>'>
<기능추가제안> php 페이지를 통해서 일반 회원들이 포인트로 초대장 코드를 바꿔갈 수 있는 기능이 되면 좋겠습니다. 코드 1개당 10점이라면, 초대장 코드 10개를 요청하면 100포인트가 까지면서 초대장 코드 10개가 생성되고 출력되게요. 그러면 그걸 복사해서 가지고 갈 수 있게 하면 좋은 기능이 되지 않을까 싶네요. 이왕 시작하신거 계속 기능 추가 좀 부탁드립니다^^ 고생하셨습니다.
if ($mb[mb_id])
        alert("이미 가입한 아이디입니다.");
    여기다 넣어 주세요~~
    $sql = " insert into $g4[member_table]
                set mb_id = '$mb_id',
                    mb_password = '".sql_password($mb_password)."',

이거 때문에 가입시 에러뜨네요. 위 3줄 없애니까 잘 되네요.
이 3줄 없어도 되는건가요?
all 파일 넣고

/adm/invitation_code_install.php

입력하면 창뜰때 글씨가 깨지네요... (UTF-8 인데...)

저렇게 되고 초대장메뉴가 생성되긴 하는데...

초대장을 만들면

유효기간이 0000-00-00 이렇게 뜹니다...

실제로 초대장입력해봐도 유효기간 지나나고 뜨네요....

어떻게 해야할까요...
감사합니다. ^^
좋은 기능입니다~
배추패밀리의 초대장 기능은 돈주고 사야해서 ㅜㅜ
배추패밀리 되기 전까지는 이거 써야겠습니다...
설치해보니 config 테이블에 필드가 생성안되서 수동으로 한 것만 빼면 설명해주신대로 해서 잘 되네요.
공개해주셔서 감사합니다.
유용하게 잘 사용하겠습니다.
전체 5,853 |RSS
그누4 스킨 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT