주요 특징

  • 사용자별 key 발급.
  • 사용자 : 프로파일, 비밀번호 변경 기능.
  • 사용자 : 클릭 수, 적립, 인출 요청 기능.
  • 관리자 : 적립금 인출 진행 상태, 계정 중지 기능.
  • 관리자 : 입금 대기 확인 기능.
  • 관리자 : 사용자 Key 검색 기능.
 

Affiliate 에서 필요한 library 는 다음과 같습니다.

  1. affiliate.php
    제휴 프로그램을 담당합니다.
  2. input_filter.php
    비밀번호나 프로파일, 회원 가입, 로그 인 등 POST 나 GET 으로 전송된 요소를 검증(또는 필터링)합니다.
  3. pagination.php
    페이지를 분할합니다.
  4. mysqli.php
    MySql에 데이터를 입력하거나 출력을 담당합니다.
  5. globals_filter.php
    _SERVER 전역 변수를 필터링합니다.

설치 순서는 다음과 같습니다.

기본적으로 crazy 스크립트는 library 에 속한 파일 외에는 수정이 자유롭습니다.
물론 필요에 의해서 수정은 되나 차후 업그레이드가 필요한 때에는 library 파일만을 업데이트하기 때문에 가급적 수정을 하지 않거나 수정한 부분이 있다면 따로 표시해 주시기 바랍니다.

  1. 다운로드 받은 파일을 서버로 모두 업로드합니다.
  2. affi.sql(또는 아래 Schema) 을(를) MySql 에 입력합니다.
    • 								
      CREATE TABLE `cz_affiliates` (
       u_id int(10) NOT NULL auto_increment,
       u_name varchar(50) NOT NULL default '',
       u_pass varchar(255) NOT NULL default '',
       u_email varchar(255) NOT NULL default '',
       paypal_email varchar(255) NOT NULL default '',
       payment varchar(32) NOT NULL default '0',
       akey varchar(32) NOT NULL default '',
       u_ip varchar(255) NOT NULL default '',
       clicks int(10) NOT NULL default '0',
       state tinyint(1) NOT NULL default '0',
       u_date datetime NOT NULL,
       PRIMARY KEY  (u_id),
       UNIQUE KEY akey (akey)
      ) TYPE=MyISAM AUTO_INCREMENT=1;
      
      CREATE TABLE `cz_affi_expansion` (
       u_id int(10) NOT NULL,
       u_field text,
       PRIMARY KEY  (u_id)
      ) TYPE=MyISAM AUTO_INCREMENT=1;
      
      CREATE TABLE `cz_affi_stats` (
       u_id int(10) NOT NULL auto_increment,
       u_status tinyint(1) NOT NULL default '0',
       u_ip varchar(150) NOT NULL default '',
       u_date datetime NOT NULL,
       u_price varchar(32) NOT NULL default '0',
       order_id varchar(32) NOT NULL default '',
       PRIMARY KEY  (u_id)
      ) TYPE=MyISAM AUTO_INCREMENT=1;
  3. conf.php 파일 MySql 정보를 환경에 맞게 적절히 수정합니다.

환경 설정

공통 상수

  • HABONYPHP_DIRNAME
    						
    Affiliate가 설치된 경로. 끝에 반드시 / 를 입력해 주세요.
    
    기본값: ./
  • HABONYPHP_ENCODING
    						
    페이지 언어설정
    
    기본값: UTF-8

사용 가능한 상수

  • PHP_AFFILIATE_PROFIX
    						
    Affiliate 테이블 이름 접두사.
    a-z, 0-9 만 가능.
    기본값: cz
  • PHP_AFFILIATE_USER_EMAIL
    						
    Affiliate 관리자 이메일.
  • PHP_AFFILIATE_USER_PASSWORD
    						
    Affiliate 관리자 비밀번호.
  • PHP_AFFILIATE_PAYMENT_MINIMUM
    						
    사용자 지급금 신청 금액.
    기본값: 10000(원)
  • PHP_AFFILIATE_PAYMENT_CONFIRMATION
    						
    사용자 방문 쿠키 유효 기간.
    30일 안에 재방문시 적립이 됩니다.
    기본 값: -1 month(1달)
  • PHP_AFFILIATE_PAGE_LINE
    						
    한 페이지 출력 수.
    기본값: 15
  • PHP_AFFILIATE_AKEY_LENGTH
    						
    aKey 길이.
    기본값: 9
  • PHP_AFFILIATE_PASSWORD_METHOD
    						
    Affiliate 암호화 방식.
    기본값: sha512
  • PHP_AFFILIATE_SESSION_NAME
    						
    Affiliate 세션 이름.
    기본값: hash(PHP_AFFILIATE_PASSWORD_METHOD, "PHP_AFFILIATE_NAME")
  • PHP_AFFILIATE_SESSION_ADMINST_NAME
    						
    Affiliate 관리자 세션이 필요한 페이지.
    true 나 false 중 하나.
    기본 값: false
    로그인 페이지에 상수를 정의하면 관리자 세션을 만듭니다.
  • PHP_AFFILIATE_COOKIE_EXPIRE
    						
    Affiliate 쿠키 만료일
    기본 값: 30(일)
  • PHP_AFFILIATE_ACTIVATE_MAIL_SUBJECT
    						
    Affiliate 인증 메일 제목.
    기본값: Client Sign Up Confirmation
  • PHP_AFFILIATE_ACTIVATE_MAIL_CONTENT
    						
    Affiliate 인증 메일 내용.
    기본값: Dear %s\nThank you for signing up with us.\nTo activate your client profile click on the link below:\n\nhttp://%s\n\nThank You

회원 가입 함수

반환 값: array( '에러 코드', '필드 배열' );

  • 담당 파일 -> signup.php
  • 에러 코드 -> input_filter.php 에서 반환하는 에러 코드.

					
$input = PHP_MySQL_AFFILIATE_Signup();
$input = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

예외 오류 코드:

  • 401 -> 등록된 이메일이면 출력합니다.
  • 402 -> SQL 에 문제가 있을 때 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try { 
	if(strtoupper($_SERVER['REQUEST_METHOD']) === 'POST')
	{
		$input = PHP_MySQL_AFFILIATE_Signup();
		if(!empty($input[0]) && is_array($input[0]))
		{
			print_r($input[0]);
		}
	}
} 
catch( Exception $e)
{ 
	$message = $e->getMessage() . " (" . $e->getCode() . ")";
}
echo $message;

로그인 함수

  • 담당 파일 -> signin.php
  • 에러 코드 -> input_filter.php 에서 반환하는 에러 코드

					
$e = PHP_MySQL_AFFILIATE_Sign_Activate();
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.
  • 403 -> 등록된 사용자가 없다면 출력합니다.
  • 404 -> 승인대기 사용자이면 출력합니다.
  • 405 -> 승인중지 사용자이면 출력합니다.
  • 501 -> 사용자 세션 생성 실패시 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try {
	$e = PHP_MySQL_AFFILIATE_Signin();
	if(!empty($e) && is_array($e))
	{
		print_r($e);
	}
} 
catch( Exception $e)
{ 
	$message = $e->getMessage() . " (" . $e->getCode() . ")";
}
echo $message;

사용자 계정 활성화 함수

  • 담당 파일: account.php
  • 에러 코드 -> input_filter.php 에서 반환하는 에러 코드

					
$e = PHP_MySQL_AFFILIATE_Sign_Activate();
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.
  • 406 -> 계정활성화 성공하였을 때 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try {
	// 계정 활성화
	if(!empty($_GET['id']))
	{
		$error = PHP_MySQL_AFFILIATE_Sign_Activate();
	}
} 
catch( Exception $e)
{
	if($e->getCode() === 406)
	{
		echo '계정 승인완료!. 로그인하시려면 클릭하십시오.';
	}
}
print_r($error);

사용자 계정 중지 함수

관리자 권한만 가능합니다.

  • 담당 파일 -> administ.individual.php
  • 에러 코드 -> input_filter.php 에서 반환하는 에러 코드

					
$e = PHP_MySQL_AFFILIATE_Sign_Disabled();
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try {
	$row = PHP_MySQL_AFFILIATE_Administ_Individual_Output();
	// 계정 중지
	$error = PHP_MySQL_AFFILIATE_Sign_Disabled();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($error);

사용자 비밀 번호 업데이트 함수

  • 담당 파일 -> npassword.php
  • 에러 코드 -> input_filter.php 에서 반환하는 에러 코드

					
$e = PHP_MySQL_AFFILIATE_Password_Update();
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.
  • 601 -> 기존 비밀 번호와 불일치시 출력하는 오류
  • true -> 업데이트 성공했을 때

기본적인 코드는 다음과 같습니다.

					
try {
	$error = PHP_MySQL_AFFILIATE_Password_Update();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($error);

사용자 개인정보 업데이트 함수

  • 담당 파일 -> profile.php
  • 에러 코드 -> input_filter.php 에서 반환하는 에러 코드

					
$e = PHP_MySQL_AFFILIATE_Personal_Update( addendum );
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

선택적 인수: addendum

사용자 필드를 추가로 늘리고자 할 때 사용합니다. 원하는 개수만큼 필드를 추가(또는 변경)해서 사용하시면 됩니다.

  • 필드는 임의 이름을 지정하되 영문, 숫자로 하고, MySql 설정없이 profile.php 에 설정된 필드를 참고해서 추가로 작성하십시오.

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try {
	$error = PHP_MySQL_AFFILIATE_Password_Update();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($error);

사용자 프로파일, 적립금 출력하는 함수

  • 담당 파일 -> profile.php

					
$row = PHP_MySQL_AFFILIATE_User_Output( search );
print_r($row);

선택적 인수: search

자료를 출력할 때 통계 목록을 함께 출력할지를 결정합니다.

  • true 나 false 중 하나. 기본 값: false 입니다.

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try {
	$row = PHP_MySQL_AFFILIATE_User_Output();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($row);

사용자 적립금 인출 요청 함수

사용자 인출 요청 순서

  • 사용자가 출금할 수 있는 금액 이상이 되었을 때 인출 요청을 하면, 관리자는 입금 후 완료를 합니다.
  • 인출 가능한 목록과 인출 업데이트
    담당 파일 -> withdrawal.php

					
$row = PHP_MySQL_AFFILIATE_User_Withdrawal();
print_r($row);

예외 오류 코드:

  • 402 -> SQL 에 문제가 있을 때 출력합니다.

기본적인 코드는 다음과 같습니다.

					
try {
	$error = PHP_MySQL_AFFILIATE_User_Withdrawal();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($error);

게스트 클릭 수 업데이트 함수

  • 담당 파일 -> click.php

금액을 적립하려면 반드시 click.php 파일로 쿠키를 만들어야 합니다.
Ex. click.php?akey=code

					
$e = PHP_MySQL_AFFILIATE_Click_Update();
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

기본적인 코드는 다음과 같습니다.

					
try {
	$error = PHP_MySQL_AFFILIATE_Click_Update();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($error);

게스트 적립금 업데이트 함수

click.php 을 통해 쿠키를 구웠으면 PHP_MySQL_AFFILIATE_Price() 함수로 금액을 적립할 수 있게 됩니다.

  • 담당 파일 -> payment.php

부호가 있거나 없는 금액을 지정하고, 회수가 필요한 때는 음수 금액을 지정합니다.
Ex. payment.php?price=1500, payment.php?price=-1500, payment.php?price=+1500

PHP_MySQL_AFFILIATE_Price( price, u_status );

u_status 필드 값:
게스트가 click.php 파일을 통해 쿠키를 만들면 payment.php 파일로 금액을 적립하는 순서이므로 반드시 u_status 필드의 값이 3이 지정되어야 합니다.

  • 0: 사용자 적립금 출금 요청
  • 1: 관리자 입금 완료
  • 2: 사용자 적립금 확정 완료
  • 3: 사용자 적립(적립 확정 전)
					
PHP_MySQL_AFFILIATE_Price( $_GET['price'], 3 );

기본적인 코드는 다음과 같습니다.

					
PHP_MySQL_AFFILIATE_Price(‘+1500’, 3); 
PHP_MySQL_AFFILIATE_Price(1500, 3);

구매 취소시 적립금을 환수할 때는 –음수를 지정해서 환수하십시오.

					
PHP_MySQL_AFFILIATE_Price(‘-1500’, 3);

관리자 인출 목록(입금 대기 사용자) 함수

사용자 입금 대기중인 목록을 출력합니다.

  • 담당 파일 -> administration.php

출력할 자료가 없으면 false 입니다..

					
$row = PHP_MySQL_AFFILIATE_Administ_Output();
print_r($row);

기본적인 코드는 다음과 같습니다.

					
try {
	$row = PHP_MySQL_AFFILIATE_Administ_Output();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($row);

관리자 개별 사용자 인출 목록 출력 함수

  • 담당 파일 -> administ.individual.php

출력할 자료가 없으면 false 입니다..

					
$row = PHP_MySQL_AFFILIATE_Administ_Individual_Output();
print_r($row);

기본적인 코드는 다음과 같습니다.

					
try {
	$row = PHP_MySQL_AFFILIATE_Administ_Individual_Output();
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($row);

관리자 개별 사용자 인출 완료 업데이트 함수

  • 담당 파일 -> administ.individual.php

출력할 자료가 없으면 false 입니다..

					
$e = PHP_MySQL_AFFILIATE_Administ_Update( akey );
$e = array(
	필드 미입력하였거나 문제가 있을 때 에러 코드,
	필드 이름
);

기본적인 코드는 다음과 같습니다.

					
try {
	$error = PHP_MySQL_AFFILIATE_Administ_Update($_GET[‘akey’]);
} 
catch( Exception $e)
{ 
	print_r($e->getMessage() . " (" . $e->getCode() . ")");
}
print_r($error);