적용버전 : XpressEngine 공통 자체 우편번호 검색DB 사용하기

자체 우편번호 검색DB 사용하기

우편번호 검색DB란?

XE 코어를 설치하고 회원가입을 받을 경우 가입회원들로부터 추가로 주소입력을 받을 수 있습니다. 회원가입 기본정보 입력 항목에는 없지만, 추가로 주소를 입력 받으려면 회원관리 항목에서 가입 폼 관리를 이용해 새로운 입력항목을 생성하면 가능합니다. 이때 동이름 등으로 주소 검색에 사용되는 서버는 기본적으로 kr.zip.zeroboard.com에 설치된 한국우편번호 검색DB를 활용하게 됩니다.

image


주소입력을 위한 추가 정보 항목 만들기

우선 가입회원들로 부터 추가적으로 주소 입력을 받기 위해 추가정보 입력항목을 생성하도록 합니다. 회원관리에서 가입 폼 관리 항목을 클릭한 후 생성 버튼을 클릭합니다.

image

형식은 한국주소, 입력항목 이름에는 새로운 변수이름으로 사용할 address(자유롭게), 입력항목 제목 입력후 활성에 체크 표시합니다. 마지막으로 간단한 설명글을 입력한 후 등록버튼을 클릭합니다.

image

새로운 주소 입력 항목이 생성되었습니다.

image

홈페이지에서 회원들이 회원가입시 우편번호 검색을 이용해 주소를 입력 받을 수 있게 됩니다.

image

이렇게 생성된 주소입력 항목은 위에서 설명한 대로 제로보드 서버에 저장되어 있는 우편번호 검색DB를 조회하고 해당하는 내용을 가져오게 되는데 가끔 DB서버에 문제가 발생하는 경우 조회가 불가능하게 됩니다. 이러한 경우 외부 서버에 의존하는 모든 XE로 만들어진 사이트에서 우편번호 검색이 고장나게 됩니다. 이러한 문제점을 해결하기 위해서는 검색에 사용되는 주소DB의 내용을 자신의 서버, 즉 자신이 사용하고 있는 호스팅 계정에 직접 설치하여 검색 또한 외부 서버가 아닌 자신의 DB를 활용하는 것입니다. 이렇게하면 외부서버(제로보드 한국우편번호 검색DB 서버) 접속에 문제가 발생하더라도 자신의 계정을 안정적으로 유지할 수 있게 됩니다.


주소검색에 사용되는 파일 다운로드 받기

아래 링크주소를 클릭하여 ①서버 스크립트 파일(server.php)과 ②우편번호 DB 파일(zipcode.sql) 2개를 다운로드 받습니다. 또한 자신의 DB에 접속하기 위한 ③DB설정파일(db_config.php)이 있는데 여기서는 ①서버 스크립트 파일(server.php)을 수정하여 사용하기 때문에 ③번이 불필요하지만 필요한 경우 다운로드 받아 두세요. (서버 스크립트 파일을 수정하지 않는 경우 사용하도록 합니다.)

★ 다운로드 받으러 가기 : 한국우편번호 코드 서버 / XE krzip Server

다운로드 받은 2개의 파일(①server.php, ②zipcode.sql)을 zipcode라는 새로운 폴더를 만들어 저장하고 자신의 계정의 xe 디렉터리 바깥에 업로드합니다. xe 폴더 안으로 넣으면 너무 복잡해지고 관리도 어려울 것 같아 바깥에 업로드하는 것입니다. 필요한 경우 자유롭게 업로드 합니다.

TIP - 다음 과정에서 ①server.php를 수정할 것인데 이때 XE코어가 사용하는 (A)DB 설정파일(xe/files/config/db.config.php)를 찾아서 사용하기 때문에 올바른 경로를 설정하고 사용합니다.


서버 스크립트 파일 server.php 수정하기

①서버 스크립트 파일(server.php)을 에디터로 열고 맨 윗줄에 작성되어 있는 include 구문을 주석 처리합니다. DB에 접속하기 위한 계정의 DB 정보를 같이 다운로드 받은 ③db_config.php 파일을 이용해 불러오는 구문인데 사용하지 않기 때문입니다.

TIP - ③DB 설정파일(db_config.php)을 이용하는 경우 아래 과정을 생략하세요. db_config.php 파일을 에디터로 열고 자신의 계정 DB 내용을 입력한 후 같은 폴더에 업로드하시면 됩니다.

// include 'db_config.php';

위 구문을 주석처리 한 후 바로 다음 줄에 아래와 같은 내용을 추가합니다.(복사하여 붙여 넣습니다.)
내용은 XE코어 설치시 입력된 DB 설정파일, 그리고 현재도 XE코어가 사용하고 있는 (A)DB 설정 파일(db.config.php)을 "나도 사용하겠다!"(server.php 왈)는 뜻입니다...^^

XE 코어 1.4 버전 :

// include 'db_config.php'; // <- 얘는 좀 쉬라고 하고 아래 내용을 추가합니다.
define('__ZBXE__', true);
require('../xe/files/config/db.config.php'); // XE가 사용하는 db.config.php 파일의 경로(A) 
$db_host = $db_info->db_hostname;
$db_user = $db_info->db_userid;
$db_password = $db_info->db_password;
$db_database = $db_info->db_database;

XE 코어 1.5 버전 :

// include 'db_config.php'; 
define('__ZBXE__', true);
require('../xe/files/config/db.config.php');

// XE Core v1.5 DB setting
$db_host = $db_info->master_db['db_hostname'];
$db_user = $db_info->master_db['db_userid'];
$db_password = $db_info->master_db['db_password'];
$db_database = $db_info->master_db['db_database'];

이렇게 수정한 ①server.php 파일을 zipcode 디렉터리 안으로 다시 업로드하여 원본 파일을 덮어쓰기 합니다. 현재 zipcode 폴더에는 ①server.php 파일과 ②zipcode.sql 파일이 들어 있습니다. (③db_config.php 파일을 수정하여 업로드 한 경우에는 3개 파일입니다.)


서버 DB에 우편번호 테이블(kr_zipcode) 추가하기

SSH로 계정에 접속하고 FTP를 이용해 업로드했던 zipcode 디렉터리로 이동합니다. 그리고 다음과 같이 zipcode.sql 파일을 DB에게 보여줍니다. (이 과정은 SSH로 압축파일 풀기XE 백업과 복원 문서를 참고하세요.)

mysql -u 아이디 -p 디비네임 < zipcode.sql

계정의 DB에 접속(phpMyAdmin)하여 입력된 테이블(Table)을 확인해 봅니다. (호스팅 계정을 이용하는 경우 phpMyAdmin 프로그램이 기본적으로 제공됩니다. 호스팅 회사마다 각각 웹DB관리 접속 등 다른 이름으로 사용되기도 하지만 프로그램의 사용법은 같습니다.) DB에서 추가된 kr_zipcode 테이블을 확인해 봅니다.

image

image

정상적으로 입력이 완료되면 아래와 같은 필드의 구조로 약 51,871개의 행(레코드)을 갖게 됩니다.

image

★ phpMyAdmin을 이용하는 경우 다운로드 받은 우편번호 DB 파일(zipcode.sql)을 직접 임포트(Import) 할 수 있습니다. 아래와 같이 DB에 접속하여 Import 항목을 클릭합니다.

image

File to import 항목에서 SQL 텍스트파일의 위치 입력란에 찾아보기를 클릭하여 다운로드 받아 두었던 우편번호 DB 파일(zipcode.sql)을 찾아 입력하고 실행을 클릭합니다. DB는 해당 텍스트 파일(zipcode.sql)을 읽고 요청하는 테이블과 내용을 DB에 입력하게 됩니다. 입력이 완료되면 위와 같은 결과를 얻게 됩니다.

image

TIP - phpMyAdmin을 이용하여 zipcode.sql 파일을 임포트(Import)하는 경우 서버에 따라 작업을 완료하지 못하고 중간에 끊어지는 문제가 발생할 수 있습니다. 임포트 할 수 있는 sql 파일의 최대 크기(Maximum size)가 zipcode.sql 파일의 크기보다 작기 때문입니다. 만약 위와 같은 방법으로 DB에 zipcode.sql 파일을 입력할 때 문자셋(utf8)이 깨지거나 오류가 발생(작업시간 초과 등)하면 호스팅 회사에 직접 입력을 요청해야 합니다.


우편번호 관리 설정

XE코어 한국 우편번호 관리 항목에서 아래와 같이 우편번호 검사 서버의 이름을 자신의 도메인으로 변경하고 서버 스크립트 파일(server.php)의 경로를 수정합니다. 위에서 zipcode 폴더를 업로드 했던 위치는 xe 폴더의 바깥이고 계정의 루트(root) 디렉터리 바로 아래 하위 폴더입니다. 따라서 xeschool.com/zipcode/server.php 파일이 있기때문에 아래와 같이 입력한 것입니다. 수정이 완료되면 등록버튼을 클릭합니다.

image

우편번호 검색을 위한 DB 입력 및 서버 스크립트 파일(server.php)의 경로를 정상적으로 찾게 되면 아래와 같이 주소입력시 우편번호 검색이 정상적으로 작동하게 됩니다.

image

※ 문제가 있는 경우 기본 설정값을 다시 입력하면 제로보드 서버로 되돌릴 수 있습니다.

  • 우편번호 검사 서버의 이름 : kr.zip.zeroboard.com
  • 우편번호 검사 서버 경로 : /server.php?addr3=

도움말 : 우편번호 검색용 DB는 공용으로 사용할 수 있습니다.

여러 계정에서 홈페이지를 운영하는 경우 우편번호 검색용 DB는 한 계정에만 설치해도 다른 서버의 계정에서 얼마든지 이용이 가능합니다. 처음에 XE코어가 kr.zip.zeroboard.com 서버에 접속하여 주소 검색을 하고 결과값을 돌려주었던 것처럼 여러 사이트를 운영한다면 우편번호 검사 서버의 이름 입력란에 검색용 DB가 설치된 도메인의 주소(예: xeschool.com)를 입력하면 얼마든지 재활용(?)이 가능하게 됩니다.

만약 새로운 우편번호 DB 파일(zipcode.sql)을 다운로드 받게 되면 자신의 계정 DB에 접속하여 이전에 설치했던 kr_zipcode 테이블만 삭제하고 다시 입력(SSH/텔넷 명령어 수행)하게 되면 새로운 우편번호 DB로 계속 이용할 수 있게 됩니다.