그누보드 글쓰기 폼 이메일 도메인 선택 및 직접 입력 구현
페이지 정보

본문
그누보드 5.3 기본 스킨 기준 글쓰기 폼에서 이메일 주소를 직접 입력하거나 도메인을 선택하여 편리하게 입력받고 데이터베이스에 저장하는 방법을 안내합니다.
그누보드 글쓰기 폼 이메일 도메인 선택 및 직접 입력 구현
그누보드 5.3 기본 스킨 기준 글쓰기 폼(write.skin.php)에서 이메일 주소를 직접 입력하거나 도메인을 선택할 수 있도록 구현하는 방법입니다. 예제에서는 여분필드 wr_1을 사용합니다.
1. write.skin.php 파일 수정
파일 상단 코드 추가
파일 상단의 if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 코드 아래에 이메일 분리 코드를 추가합니다.
$wr_1 = explode("@",$write['wr_1']); // 이메일주소
$email1 = $wr_1[0];
$email2 = $wr_1[1];
이메일 입력 폼 추가
적당한 위치에 이메일 주소 입력 및 도메인 선택 폼을 추가합니다.
<div class="write_div">
<input type="text" name="email1" id="email1" value="<?php echo $email1;?>" class="frm_input"> @
<input type="text" name="email2" id="email2" value="<?php echo $email2;?>" class="frm_input">
<select name="emaildomain" class="frm_input" onChange="email_change(this.form);">
<option value="">직접입력</option>
<option value="naver.com"<?php echo ($email2 == "naver.com")? " selected": "";?>>naver.com</option>
<option value="gmail.com"<?php echo ($email2 == "gmail.com")? " selected": "";?>>gmail.com</option>
<option value="daum.net"<?php echo ($email2 == "daum.net")? " selected": "";?>>daum.net</option>
<option value="hanmail.net"<?php echo ($email2 == "hanmail.net")? " selected": "";?>>hanmail.net</option>
<option value="nate.com"<?php echo ($email2 == "nate.com")? " selected": "";?>>nate.com</option>
</select>
</div>
하단 스크립트 추가
하단 스크립트에 email_change 함수를 추가하고, function fwrite_submit(f) 바로 아래에 해제 코드를 넣습니다.
function email_change(form) {
var value = form.emaildomain[form.emaildomain.selectedIndex].value;
if (value!= "") {
form.email2.disabled = true;
form.email2.value = value;
} else {
form.email2.disabled = false;
}
form.email2.value = value;
form.email2.focus();
return;
}
function fwrite_submit(f) 함수 바로 아래에는 다음 코드를 추가합니다.
$('#email2').removeAttr('disabled');
2. write_update.skin.php 파일 추가
동일한 스킨 폴더 안에 write_update.skin.php 파일을 생성하고 아래 내용을 작성합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (trim($_POST['email1']) && trim($_POST['email2'])) {
$wr_1 = "$email1@$email2";
sql_query(" update $write_table set wr_1 = '$wr_1' where wr_id = '$wr_id' ");
}
?>
write_update.skin.php 작성 방법
write.skin.php에서 입력받은 email1, email2 값을 조합하여 DB에 저장하는 방법입니다. 스킨 폴더 내 write_update.skin.php 파일에 아래 코드를 추가하십시오.
<?php
if (!defined('_GNUBOARD_')) exit;
if (trim($_POST['email1']) && trim($_POST['email2'])) {
$email = trim($_POST['email1']). '@'. trim($_POST['email2']);
// 여분필드 wr_1 사용 시
sql_query(" update $write_table set wr_1 = '$email' where wr_id = '$wr_id' ");
// 기본 필드 wr_email 사용 시 아래 주석을 해제하고 위 줄을 주석 처리하세요
// sql_query(" update $write_table set wr_email = '$email' where wr_id = '$wr_id' ");
}
?>
그누보드 기본 이메일 필드(wr_email) 적용 방법과 주의사항
그누보드 글쓰기 폼에서 여분필드 대신 게시판 기본 이메일 입력 필드인 wr_email을 사용하려면 기존에 있던 이메일 입력 부분을 삭제한 뒤 동일한 분리 및 저장 로직을 적용하되, 코드 내 변수와 필드명을 wr_1에서 wr_email로 변경해야 합니다.
1. write.skin.php 수정
파일 상단 접근 불가 코드 아래에 이메일 주소를 분리하는 코드를 추가합니다.
$wr_email = explode("@",$write['wr_email']); // 이메일주소
$email1 = $wr_email[0];
$email2 = $wr_email[1];
2. write_update.skin.php 수정
스킨 폴더 안에 write_update.skin.php 파일을 추가하거나 수정하여 조합된 이메일 값을 wr_email 필드에 저장하도록 처리합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
if (trim($_POST['email1']) && trim($_POST['email2'])) {
$wr_email = "$email1@$email2";
sql_query(" update $write_table set wr_email = '$wr_email' where wr_id = '$wr_id' ");
}
?>
3. 목록 및 상세 페이지 출력 수정
저장된 이메일 주소를 출력할 때도 wr_1 대신 wr_email을 사용합니다.
- 상세 페이지 (
view.skin.php):<?php echo $view['wr_email']?> - 목록 페이지 (
list.skin.php):<?php echo $list[$i]['wr_email']?>
주의사항
여분필드 wr_1 대신 기본 wr_email 필드를 사용할 시 일부 스킨 구조에 따라 추가 조정이 필요할 수 있습니다.
게시판 목록 및 상세 페이지 이메일 출력 방법
여분필드 wr_1을 사용하여 저장된 이메일 주소를 게시판 목록(list.skin.php)이나 상세 페이지(view.skin.php)에 출력하려면 각각의 스킨 파일에 출력 코드를 추가해야 합니다.
1. 목록 페이지 출력 (list.skin.php)
게시판 목록에서 이메일 값을 출력하려면 아래 코드를 적절한 위치에 삽입합니다.
<?php echo $list[$i]['wr_1']?>
2. 상세 페이지 출력 (view.skin.php)
게시판 본문 상세 페이지에서 이메일 값을 출력하려면 아래 코드를 삽입합니다.
<?php echo $view['wr_1']?>
참고사항 만약 여분필드
wr_1대신 게시판 기본 이메일 입력 필드인wr_email을 사용하여 데이터를 저장했다면, 출력 코드의 필드명도wr_1대신wr_email로 수정해야 합니다.
- 목록 페이지:
<?php echo $list[$i]['wr_email']?>- 상세 페이지:
<?php echo $view['wr_email']?>
그누보드 이메일 도메인 선택 구현 가이드
- 내 상황: 그누보드 5.3 기본 스킨 글쓰기 폼에서 이메일 주소를 직접 입력하거나 특정 도메인을 선택하도록 구현하려는 경우
- 선택 기준: 여분필드
wr_1을 활용해 데이터를 분리·저장할지, 혹은 기본 게시판 이메일 필드(wr_email)를 대체하여 사용할지 결정 - 다음 행동:
write.skin.php에 분리 코드 및 select 폼을 추가하고,write_update.skin.php를 생성해 값을 조합한 뒤 DB 업데이트 처리
실전 FAQ
Q. 기본 wr_email 필드 사용 시 기존 스킨의 이메일 입력 구조와 충돌할 때 해결 방법은 무엇인가요?
- 대안: 기존 스킨에 포함된 기본 이메일 입력
input태그를 삭제하거나 주석 처리한 후, 본 가이드의 분리된email1,email2입력 필드를 배치하십시오. - 예외: 스킨에 따라 이메일 유효성 검사 자바스크립트가
wr_emailID를 참조하고 있을 수 있습니다. 이 경우 해당 자바스크립트 함수 내에서 필드 ID 참조를 수정하거나,fwrite_submit함수에서email1과email2를 합쳐wr_email필드에 값을 대입하는 로직을 추가해야 합니다.
함께 보면 좋은 글
- 그누보드 로그인 회원 글 작성 시 이름 및 이메일 직접 입력 수정 가이드
- 그누보드 5 회원가입 이메일 필수 입력 해제 및 검증 오류 해결 방법
- 그누보드4(G4) 회원가입 시 이메일 필수 입력 해제 및 검증 로직 제거 방법
참고자료
기타 참고자료
- 이전글그누보드 5.3 갤러리 최신글 스킨 가로 출력 개수 및 줄 수 변경 방법 26.10.16
- 다음글그누보드 5 회원가입 이메일 필수 입력 해제 및 검증 오류 해결 방법 26.10.16
댓글목록
등록된 댓글이 없습니다.