Operation Operate - Joungkyun/JSBoard GitHub Wiki

JSBoard 운영 맀뉴얼

<!> μ™ΈλΆ€ νšŒμ› DBλ₯Ό μ‚¬μš©ν•  경우, 1, 4번 ν•­λͺ©μ€ λ¬΄μ‹œν•˜κ³ , 6번 ν•­λͺ©μœΌλ‘œ κ±΄λ„ˆ 뛰도둝 ν•œλ‹€.

##1. μœ μ € κ°€μž…

JSBoard 의 둜그인 κΈ°λŠ₯을 μ΄μš©ν•˜κΈ° μœ„ν•œ μœ μ € κ°€μž…κΈ°λŠ₯이닀. http://domain.com/jsboard/regist.php 둜 접근을 ν•˜λ©΄ λœλ‹€.

단, μ£Όμ˜ν•  것은 둜그인 λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šλ”λΌλ„ κ²Œμ‹œνŒ κ΄€λ¦¬μž κΆŒν•œμ„ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ μ£ΌκΈ° μœ„ν•΄μ„œλŠ” μœ μ € κ°€μž…μ΄ λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€. ν•΄λ‹Ή κ²Œμ‹œνŒ μ„€μ •μ—μ„œ μ§€μ •λœ μœ μ € IDλ₯Ό userdb μ—μ„œ μ°Ύμ•„μ„œ λΉ„κ΅ν•˜κΈ° λ•Œλ¬Έμ— μ—¬κΈ°μ„œ 등둝이 λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.

##2. 전체 κ΄€λ¦¬μž λͺ¨λ“œ

전체 κ΄€λ¦¬μžλŠ” μ–΄λ–€ 둜그인 λͺ¨λ“œμ— 상관없이 λͺ¨λ“  κΆŒν•œμ„ 행사할 수 μžˆλ‹€. μ‹¬μ§€μ–΄λŠ” μˆ˜μ •μ‚­μ œμ— 인증을 ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ”λ‹€. λ˜ν•œ νŒ¨μŠ€μ›Œλ“œλ₯Ό μš”κ΅¬ν•˜λŠ” 경우 μ–΄λ“œλ―Ό 둜그인 μƒνƒœκ°€ μ•„λ‹ˆλΌλ„ 전체 κ΄€λ¦¬μž νŒ¨μŠ€μ›Œλ“œλ‚˜ ν•΄λ‹Ή κ²Œμ‹œνŒ κ΄€λ¦¬μžμ˜ νŒ¨μŠ€μ›Œλ“œλ‘œλ§ŒμœΌλ‘œλ„ μˆ˜μ •μ‚­μ œκ°€ κ°€λŠ₯ν•˜λ‹€.

전체 κ΄€λ¦¬μžμ˜ 섀정은 처음 μ„€μΉ˜λ₯Ό ν• λ•Œ Installer λ₯Ό μ‚¬μš©ν•˜μ˜€λ‹€λ©΄ μž„μ˜μ˜ μœ μ € ID 둜 λ‘œκ·ΈμΈμ„ ν•  수 μžˆμœΌλ‚˜ μˆ˜λ™ μ„€μΉ˜λ₯Ό ν•˜μ˜€λ‹€λ©΄ νŠΉλ³„ν•˜κ²Œ μˆ˜μ •ν•˜μ§€ μ•ŠλŠ”ν•œ admin μ΄λΌλŠ” ID둜 생성이 λ˜μ—ˆμ„ 것이닀.

전체 κ΄€λ¦¬μž 섀정을 ν•˜κΈ° μœ„ν•΄μ„œλŠ” http://domian.com/jsboard/login.php?type=admin으둜 λ‘œκ·ΈμΈμ„ ν•œλ‹€. μ–΄λ–€ 경우 ___"νŽ˜μ΄μ§€λ₯Ό μ—΄μˆ˜ μ—†μŠ΅λ‹ˆλ‹€"___λΌλŠ” λ©”μ„Έμ§€κ°€ λ‚˜μ˜€λŠ” κ²½μš°κ°€ μžˆλŠ”λ°, 이 λ•Œμ—” νŽ˜μ΄μ§€λ₯Ό ν•œλ²ˆ λ¦¬λ‘œλ“œν•΄ μ£Όλ©΄ λ“€μ–΄κ°€μ§„λ‹€. λ˜λŠ” κ΄€λ¦¬μž λͺ¨λ“œλ‘œ 이미 λ‘œκ·ΈμΈμ„ ν•΄ μžˆλŠ” μƒνƒœλΌλ©΄ http:/domain.com/jsboard/admin/ 으둜 접근을 ν•˜λ©΄ λœλ‹€.

μ–΄λ“œλ―Όμ— λ‘œκ·ΈμΈμ„ ν•˜λ©΄ λ‹€μŒκ³Ό 같은 화면을 λ³Όμˆ˜κ°€ μžˆλ‹€

JSBoard κ΄€λ¦¬μž νŽ˜μ΄μ§€

ν•œκΈ€μ„ 읽을 쀄 μ•Œλ©΄ ν˜„μž¬ λ³΄μ΄λŠ” νŽ˜μ΄μ§€μ—μ„œλŠ” 별 어렀움이 없을 쀄 μ•ˆλ‹€. 일단 제일 ν•˜λ‹¨μ˜ μ•ŒνŒŒλ²³ λ³„μ΄λΌλŠ” 것은 κ²Œμ‹œνŒ 이름을 μ•ŒνŒŒλ²³ λ³„λ‘œ λΆ„λ₯˜λ₯Ό ν•˜μ—¬ λ³΄μ—¬μ£Όκ²Œ λœλ‹€. μ•ŒνŒŒλ²³λ³„ μœ„μ˜ 1-10κΉŒμ§€μ˜ μˆ«μžλŠ” κ²Œμ‹œνŒμ΄ λ§Žμ„ κ²½μš°μ— νŽ˜μ΄μ§€ λ³„λ‘œ 뢄리λ₯Ό ν•΄μ„œ λ³΄μ—¬μ£Όκ²Œ λ˜λŠ” 것이닀.

ν•©κ³„μ—μ„œ 51582 [ 51584 ] κ³Ό 같이 좜λ ₯λ˜λŠ” μ΄μœ λŠ” 이 μ–΄λ“œλ―Ό κ΄€λ¦¬μžμ—μ„œλŠ” JSBoard μ—μ„œ μ‚¬μš©ν•˜λŠ” ν…Œμ΄λΈ”λ§Œ 보여주기 λ•Œλ¬Έμ— μ—¬κΈ°μ„œ μ•ˆλ³΄μ΄λŠ” 것듀쀑 λ‚˜λ¨Έμ§€λŠ” [ ] 에 ν•©μ³μ Έμ„œ λ‚˜μ˜€κ²Œ λ˜λŠ” 것이닀.

μ˜΅μ…˜μ—μ„œλŠ” [ 보기 ] λŠ” ν•΄λ‹Ή κ²Œμ‹œνŒμ„ μ ‘κ·Όν•œλ‹€. [ μ„€μ • ] 은 ν•΄λ‹Ή κ²Œμ‹œνŒμ˜ κ΄€λ¦¬μž λͺ¨λ“œλ‘œ λ“€μ–΄κ°€κ²Œ λœλ‹€. [ 톡계 ] λŠ” ν•΄λ‹Ή κ²Œμ‹œνŒμ˜ 톡계λ₯Ό λ³΄μ—¬μ£Όκ²Œ λ˜λŠ” 것이닀.

λ‹€μŒ μ€‘μ•™λΆ€λΆ„μ˜ μš°μΈ‘μ— [ μœ μ €κ΄€λ¦¬ ] λŠ” JSBoard 의 μœ μ €λ“€μ„ 관리λ₯Ό ν•œλ‹€. μœ μ € κ΄€λ¦¬μ—μ„œλŠ” ν•΄λ‹Ή μœ μ €μ˜ νŒ¨μŠ€μ›Œλ“œ, 이름, 이메일, ν™ˆνŽ˜μ΄μ§€λ₯Ό λ³€κ²½ν• μˆ˜ μžˆλ‹€. ID λŠ” μˆ˜μ •μ΄ λΆˆκ°€λŠ₯ ν•˜λ‹€.

[ λ‘œκ·Έμ•„μ›ƒ ] 은 말 κ·ΈλŒ€λ‘œ κ΄€λ¦¬μžλ₯Ό μ’…λ£Œ ν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€. μ‚¬μš©ν›„μ—λŠ” κΌ­ λ‘œκ·Έμ•„μ›ƒμ„ ν•΄ μ£ΌλŠ” 것이 μ’‹λ‹€.

[ μ „μ—­λ³€μˆ˜ μ„€μ • ] 은 이 λ¬Έμ„œκ°€ μžˆλŠ” λ””λ ‰ν† λ¦¬μ˜ μ„€μ • 파일 맀뉴얼을 μ°Έκ³ ν•˜λ„λ‘ ν•œλ‹€.

##3. κ²Œμ‹œνŒ κ΄€λ¦¬μž λͺ¨λ“œ

전체 κ΄€λ¦¬μž λ˜λŠ” 각 κ²Œμ‹œνŒ κ΄€λ¦¬μž λͺ¨λ“œλ‘œ λ‘œκ·ΈμΈμ„ ν–ˆμ„ 경우 κ²Œμ‹œνŒμ— admin 링크가 λ‚˜νƒ€λ‚˜κ²Œ λœλ‹€. 이곳으둜 λ“€μ–΄κ°€ 섀정을 ν•˜λ©΄ λœλ‹€. λ˜λŠ” 직접 ___data/*/config.php___λ₯Ό μˆ˜μ •μ„ ν• μˆ˜ μžˆλ‹€. μ΄λ•Œμ—λŠ” μ„€μ • 파일 맀뉴얼을 μ°Έμ‘°ν•˜λ©΄ λœλ‹€.

##4. 둜그인 λͺ¨λ“œ

JSBoard 의 둜그인 λͺ¨λ“œλŠ” 총 7κ°€μ§€ 단계λ₯Ό κ°€μ§„λ‹€. 각 λ‹¨κ³„μ˜ 섀정은 λ‹€μŒκ³Ό κ°™λ‹€.

  • 0 : 곡개 κ²Œμ‹œνŒ / λ‘œκ·ΈμΈμ„ μ•ˆν•΄λ„ 상관이 μ—†μ§€λ§Œ admin λ‘œκ·ΈμΈμ„ ν–ˆμ„ κ²½μš°μ—λŠ” 인증이 ν•„μš”μ—†μŒ.
  • 1 : 곡개 κ²Œμ‹œνŒ(κ³΅μ§€μ „μš©) / admin 인증을 ν•˜μ§€ μ•ŠλŠ” ν•œ λ‘œκ·ΈμΈμ„ ν•˜λ“  말든 read 만 κ°€λŠ₯함. admin 의 경우 λͺ¨λ“  κΈ°λŠ₯을 μ‚¬μš©κ°€λŠ₯
  • 2 : 둜그인 κ²Œμ‹œνŒ / λ‘œκ·ΈμΈμ‹œ λͺ¨λ“  κΈ°λŠ₯ μ‚¬μš©κ°€λŠ₯. μˆ˜μ •, μ‚­μ œμ— ν•œν•΄μ„œλŠ” μžμ‹ μ˜ κΈ€λ§Œ κ°€λŠ₯ (admin의 경우 μ œν•œ μ—†μŒ)
  • 3 : 둜그인 κ²Œμ‹œνŒ(κ³΅μ§€μ „μš©) / λ‘œκ·ΈμΈμ‹œ 읽기만 κ°€λŠ₯. admin μ—κ²Œλ§Œ λͺ¨λ“  κΆŒν•œμ΄ 있음.
  • 4 : 곡개 κ²Œμ‹œνŒ(읽기와 λ‹΅μž₯, 그리고 μžκΈ°κΈ€λ§Œ μ‚­μ œ κ°€λŠ₯) / admin 둜그인 μ‹œμ—λ§Œ μ“°κΈ°κ°€ κ°€λŠ₯함. 읽기, λŒ“κΈ€μ€ λˆ„κ΅¬λ‚˜ κ°€λŠ₯. κ·Έ μ™Έμ—λŠ” νŒ¨μŠ€μ›Œλ“œλ‘œ μˆ˜μ • μ‚­μ œκ°€ κ°€λŠ₯함.
  • 5 : 둜그인 κ²Œμ‹œνŒ(읽기와 λ‹΅μž₯, 그리고 μžκΈ°κΈ€λ§Œ μ‚­μ œ κ°€λŠ₯) / admin 둜그인 μ‹œμ—λ§Œ μ“°κΈ°κ°€ κ°€λŠ₯. 읽기와 λŒ“κΈ€μ€ λ‘œκ·ΈμΈμ„ ν•œ μœ μ €λ“€λ§Œ κ°€λŠ₯. κ·Έ μ™Έμ—λŠ” μžμ‹ μ˜ κΈ€λ§Œ μˆ˜μ • μ‚­μ œ κ°€λŠ₯.
  • 6 : 곡개 κ²Œμ‹œνŒ(μ–΄λ“œλ―Όλ§Œ λ‹΅μž₯ κ°€λŠ₯) / admin 둜그인 μ‹œμ—λ§Œ λ‹΅μž₯이 κ°€λŠ₯ν•˜λ©° κΈ€ 등둝은 λˆ„κ΅¬λ‚˜ ν•  수 있음
  • 7 : 둜그인 κ²Œμ‹œνŒ(μ–΄λ“œλ―Όλ§Œ λ‹΅μž₯ κ°€λŠ₯) / admin 둜그인 μ‹œμ—λ§Œ λ‹΅μž₯이 κ°€λŠ₯ν•˜λ©° κΈ€ 등둝은 둜그인 μœ μ €λ§Œ κ°€λŠ₯

##5. ν™œμš© ###5.1. κ²Œμ‹œνŒ 링크 ν•˜κΈ°

κ²Œμ‹œνŒμ„ 생성후 κ²Œμ‹œνŒμ„ λ§ν¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” 링크λ₯Ό ν•˜λ €λŠ” νŒŒμΌμ— "<a href="http://domain.com/jsboard/list.php?table=κ²Œμ‹œνŒμ΄λ¦„">κ²Œμ‹œνŒ</a>"와 같이 μΆ”κ°€ν•΄ μ£Όλ©΄ λœλ‹€.

###5.2. κ²Œμ‹œνŒ λ””μžμΈ 뢙이기

κ²Œμ‹œνŒμ— λ””μžμΈμ„ λΆ™μ΄λŠ” 방법은 각 κ²Œμ‹œνŒ κ΄€λ¦¬μžμ˜ ν•˜λ‹¨μ— 보면 ___HTML Header/Tail___이 쑴재λ₯Ό ν•œλ‹€. 이것을 μ΄μš©ν•˜μ—¬ ν• μˆ˜ μžˆλ‹€. 일단 κ°„λ‹¨ν•˜κ²Œ 예λ₯Ό λ“€μžλ©΄

<html>
<head>
........
</head>

<body>
.......


 ───────────────────────────────────────┐
              κ²Œμ‹œνŒ ν…Œμ΄λΈ”              β”‚
 β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

.......
</body>
</html>

이 ν•˜λ‚˜μ˜ html file을 이루어야 ν•œλ‹€κ³  가정을 ν•˜λ„λ‘ ν•˜κ² λ‹€. κ·Έλ ‡λ‹€λ©΄ κ²Œμ‹œνŒ ν…Œμ΄λΈ”μ„ κΈ°μ€€μœΌλ‘œ ν•˜μ—¬ μœ„μͺ½μ˜ μ½”λ“œλ“€μ€ HTML Header의 μžλ¦¬μ— λ„£μ–΄ μ£Όλ©΄ 되며, ν•˜λ‹¨ 뢀뢄은 HTML tail 에 λ„£μ–΄μ£Όλ©΄ λ˜λŠ” 것이닀. 단 주의 ν•  것은 상단과 ν•˜λ‹¨μ„ 넣어쀄 κ²½μš°μ— 이미 <html> ~ <body> 의 κ²½μš°μ—λŠ” κ²Œμ‹œνŒμ—μ„œ μ œκ³΅μ„ ν•˜κ³  μžˆλŠ”κ²ƒμ΄κΈ° λ•Œλ¬Έμ— 기쑴의 κ²Œμ‹œνŒμ˜ html μ†ŒμŠ€λ₯Ό 잘 보고 νŒλ‹¨ν•΄μ„œ λ„£μ–΄μ•Ό ν•œλ‹€. tail 의 </body> ~ </html> μ—­μ‹œ 넣을 ν•„μš”λŠ” μ—†λ‹€.

κ²Œμ‹œνŒ html source μ—μ„œ

<!-- ======================= A foreword  ======================= -->

<!-- ======================= A foreword  ======================= -->

의 뢀뢄에 Header 의 λ‚΄μš©μ΄ λ“€μ–΄κ°€κ²Œ λ˜λŠ” 것이고

<!-- ========================= Tail ========================= -->

<!-- ========================= Tail ========================= -->

의 뢀뢄에 tail 의 λ‚΄μš©μ΄ λ“€μ–΄κ°€λŠ” κ²ƒμ΄λ‹ˆ κΌ­ html souceλ₯Ό ν™•μΈν•œ 후에 ν•„μš”μ—†λŠ” μ½”λ“œλŠ” μ‚­μ œλ₯Ό ν•˜κ³  넣도둝 ν•œλ‹€.

###5.3. 전체 κ΄€λ¦¬μž 링크 ν•˜κΈ°

μ–΄λŠκ³³μ—μ„œλ‚˜ 상관 없이 "http://domain.com/jsboard/login.php?type=admin" 으둜 링크λ₯Ό ν•˜λ©΄ λœλ‹€. λ§Œμ•½ admin login μƒνƒœμ—μ„œλ§Œ 전체 κ΄€λ¦¬μž 링크λ₯Ό 보여주고 μ‹Άλ‹€λ©΄ "http://domain.com/jsboard/admin/" 으둜 링크λ₯Ό ν•΄ μ£Όλ©΄ λœλ‹€.

전체 μ–΄λ“œλ―Ό 둜그인 μƒνƒœλ₯Ό μ•Œκ³  μ‹Άλ‹€λ©΄ λ‹€μŒμ˜ μ½”λ“œλ₯Ό ν™œμš©ν•  수 μžˆλ‹€. 일단 μ½”λ“œλ₯Ό 적기 전에 μ•Œμ•„λ‘μ–΄μ•Ό ν•  뢀뢄은 config/global.php 의 $jsboard λ³€μˆ˜κ°’μ„ μ•Œμ•„ 놓아야 ν•œλ‹€. 이 값에 따라 달라지기 λ•Œλ¬Έμ΄λ‹€. λ§Œμ•½ $jsboard = "login"; 이라고 지정이 λ˜μ–΄ μžˆλ‹€λ©΄ λ‘œκ·ΈμΈμ— κ΄€λ ¨λœ λ³€μˆ˜λͺ…은 login+jsboard 즉 ___$loginjsboard___κ°€ λ˜λŠ” 것이닀.

<?php
if(session_is_registered("$loginjsboard") && $loginjsboard[pos] == 1) {
    echo "<a href=http://domain.com/jsboard/admin/>전체 κ΄€λ¦¬μž</a>";
}
?>

###5.4. 둜그인 μ°½ λ§Œλ“€κΈ°

둜그인 화면은 μ–΄λ””μ—μ„œλ‚˜ λ‹€μŒμ˜ μ½”λ“œλ₯Ό μ›ν•˜λŠ” μœ„μΉ˜μ— λ„£μ–΄μ£Όλ©΄ λœλ‹€.

<form method="post" action="http://domain.com/jsboard/session.php">
    <input type="text" name="lu"> ID
    <input type="password" name="lp"> Password
    <input type="submit" value="ENTER">
    <input type="hidden" name="m" value="login">
</form>

μœ„μ˜ μ½”λ“œλ§Œ μ›ν•˜λŠ” νŽ˜μ΄μ§€μ— λ„£μ–΄μ£Όλ©΄ λœλ‹€. 즉 IDλ₯Ό lu 에 password λ₯Ό lp 에 λ„£μ–΄μ„œ session.php 에 λ„˜κ²¨ μ£Όλ©΄ λœλ‹€. 쒀더 μžμ„Έν•œ 것을 μ›ν•˜λ©΄ jsboard μ•ˆμ— λ“€μ–΄μžˆλŠ” session.php λ₯Ό 뢄석해 보도둝 ν•œλ‹€.

###5.5. λ‘œκ·Έμ•„μ›ƒ 링크 λ§Œλ“€κΈ°

λ‘œκ·Έμ•„μ›ƒ λ§ν¬λŠ” 일단 "<a href="./session.php?m=logout&table=table_name">logout</a>"이 κ°€μž₯ 기본적이닀. μ΄λ ‡κ²Œ λ‘œκ·Έμ•„μ›ƒμ΄ κ΅¬μ„±λ˜μ–΄ μžˆμ„ κ²½μš°μ—λŠ” λ‘œκ·Έμ•„μ›ƒ ν›„μ—λŠ” 각 κ²Œμ‹œνŒμ˜ 둜>그인 νŽ˜μ΄μ§€λ‘œ 이동을 ν•œλ‹€.

λ§Œμ•½ λ‘œκ·Έμ•„μ›ƒ 후에 각 κ²Œμ‹œνŒμ˜ 둜그인 νŽ˜μ΄μ§€κ°€ μ•„λ‹Œ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동을 ν•˜κ³  싢을 κ²½μš°μ—λŠ” λ‹€μŒμ˜ 2 κ°€μ§€ 방법 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•œλ‹€.

  1. 각 κ²Œμ‹œνŒ κ΄€λ¦¬μžμ—μ„œ Logout Page λ₯Ό μ§€μ •ν•œλ‹€. (μ„€μ • νŒŒμΌμ„ 직접 μˆ˜μ • ν•  κ²½μš°μ—λŠ” $print['dopage'] λ₯Ό 지정을 ν•œλ‹€.
  2. λ‘œκ·Έμ•„μ›ƒ νŽ˜μ΄μ§€λ₯Ό λ‹€μŒκ³Ό 같이 λ§Œλ“ λ‹€.
<?php
$url = rawurlencode("http://domain.com/test/test.html");
echo "<a href=./session.php?m=logout&urls=$url>logout</a>\n";
?>

1 번과 2 번의 κ²½μš°μ€‘ 2번의 κ²½μš°κ°€ 1 번의 κ²½μš°λ³΄λ‹€ μš°μ„ ν•œλ‹€

##6. μ™ΈλΆ€ νšŒμ› DB 연동

<!> μ™ΈλΆ€μ˜ νšŒμ› DB와 연동을 ν•  경우, 기쑴의 jsboard 의 νšŒμ› DB λŠ” 무쑰건 λ¬΄μ‹œν•˜κ³  생각을 ν•΄μ•Ό ν•œλ‹€.

###6.1. jsboard μ„€μ •

μ™ΈλΆ€μ˜ νšŒμ› DBλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‚¬μš© ν•˜λ €λŠ” νšŒμ› DB에 ID, 이름, νŒ¨μŠ€μ›Œλ“œ, 이메일, ν™ˆνŽ˜μ΄μ§€ 와 같이 5개의 ν•„λ“œκ°€ μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€. 이것을 λͺ…μ‹¬ν•˜κ³  μ§„ν–‰ν•˜μž.

μ™ΈλΆ€νšŒμ› DB 의 섀정은 jsboard/config/external.phpμ—μ„œ ν•˜λ„λ‘ν•œλ‹€. μ—†μœΌλ©΄ μƒˆλ‘œ λ§Œλ“€λ©΄ 되며 이 파일의 μ†Œμœ κΆŒκ³Ό νΌλ―Έμ…˜μ€ global.php와 λ™μΌν•˜κ²Œ ν•œλ‹€. 이 νŒŒμΌμ€ 기본적으둜 μœ„μΉ˜κ°€ μ•ˆλ˜μ–΄ μžˆμœΌλ‹ˆ ν•„μš”ν•˜λ©΄ ___jsboard/INSTALLER/sample/admin/external.php.orig___λ₯Ό ___jsboard/config/external.php___둜 λ³΅μ‚¬ν•˜μ—¬ μ‚¬μš©μ„ ν•˜λ©΄ λœλ‹€. μ™ΈλΆ€ νšŒμ› DBλ₯Ό 사>용 ν•  κ²½μš°μ—λŠ” κ΄€λ¦¬μž νŽ˜μ΄μ§€μ—μ„œ νšŒμ› 정보λ₯Ό 관리할 수 μ—†κ²Œ λœλ‹€.

일단 JSBoard μ—μ„œ μ™ΈλΆ€ νšŒμ› DB 와 연동을 ν• λ•Œ ν•„μš”ν•œ external.php의 λ³€μˆ˜λ“€μ„ λ‚˜μ—΄ν•˜κ² λ‹€

<?php
###############################################################################
#  μ™ΈλΆ€ DB λ₯Ό μ΄μš©ν•œ 인증 정보
#  JSBoard 의 인증을 JSBoard 의 user table 을 μ΄μš©ν•˜μ§€ μ•Šκ³  싢을 경우
#  μ‚¬μš©ν•˜λŠ” κΈ°λŠ₯
###############################################################################
# μ™ΈλΆ€ DB μ‚¬μš©μ—¬λΆ€ ν‘œμ‹œ
$edb['uses'] = 1;

# μ™ΈλΆ€ DB 정보
$edb['server'] = "$db['server']";  # DB address
$edb['user'] = "test";           # DB user name
$edb['pass'] = "test";           # DB password
$edb['name'] = "test";           # DB database name
$edb['table'] = "user_info";     # νšŒμ›κ΄€λ¦¬ DB ν…Œμ΄λΈ” 이름

μœ„μ˜ 값듀은 νšŒμ› 정보가 λ“€μ–΄μžˆλŠ” DB의 정보듀이닀. μœ„μ˜ JSBoard κ΄€λ ¨ DB정보와 별 λ‹€λ₯Ό λ°”λŠ” 없을 κ²ƒμ΄λ‚˜ μ—¬κΈ°μ„œλŠ” table μ΄λ¦„κΉŒμ§€ μ§€μ •ν•΄ μ€˜μ•Ό ν•œλ‹€λŠ” 점이 쑰금 틀리닀.

# ν•„μš”ν•œ ν•„λ“œ μ •μ˜
$edb['userid'] = "id";
$edb['username'] = "name";
$edb['useremail'] = "mail";
$edb['userurl'] = "homepage";
$edb['userpasswd'] = "pass";

μ—¬κΈ°μ„œλŠ” λ§Œμ•½ ν•„μš”ν•œ ν•„λ“œ 이름이 jsboard 와 틀릴 경우 맀핑을 μ‹œν‚€κΈ° μœ„ν•œ λ³€μˆ˜λ“€μ„ μ§€μ •ν•œλ‹€.

  • userid : νšŒμ› DB μ—μ„œ μ‚¬μš©ν•˜λŠ” νšŒμ› ID ν•„λ“œ 이름을 μ§€μ •ν•œλ‹€.
  • username : νšŒμ› DB μ—μ„œ μ‚¬μš©ν•˜λŠ” νšŒμ› 이름 ν•„λ“œ 이름을 μ§€μ •ν•œλ‹€.
  • useremail : νšŒμ› DB μ—μ„œ μ‚¬μš©ν•˜λŠ” νšŒμ› 이메일 ν•„λ“œ 이름을 μ§€μ •ν•œλ‹€.
  • userurl : νšŒμ› DB μ—μ„œ μ‚¬μš©ν•˜λŠ” νšŒμ› ν™ˆνŽ˜μ΄μ§€ ν•„λ“œ 이름을 μ§€μ •ν•œλ‹€.
  • userpasswdv : νšŒμ› DB μ—μ„œ μ‚¬μš©ν•˜λŠ” νšŒμ› μ•”ν˜Έ ν•„λ“œ 이름을 μ§€μ •ν•œλ‹€.
# νšŒμ› 정보λ₯Ό κ°€μ Έμ˜€λŠ” SQL 문을 직접 μž‘μ„±ν•  경우 λ˜λŠ”
# νšŒμ› 정보λ₯Ό 쑰인을 ν•΄μ„œ 가져와야 ν•  경우 μ‚¬μš©
$edb['sql'] = "";

이 뢀뢄은 λ§Œμ•½ ν•„μš”ν•œ ν•„λ“œκ°€ λͺ¨μžλ₯΄λ‹€κ±°λ‚˜ λ˜λŠ” νšŒμ› DBλ₯Ό join을 ν•΄μ•Όν•  κ²½μš°μ— 직접 ν•„μš”ν•œ 결과듀은 뢈러 올 SQL 문을 지정을 ν•œλ‹€. λ§Œμ•½ νšŒμ› table 이 ν•˜λ‚˜μ΄κ³  JSBoard 에 ν•„μš”ν•œ 5개>의 ν•„λ“œλ₯Ό λͺ¨λ‘ κ°€μ§€κ³  μžˆλ‹€λ©΄ ꡳ이 $edb['sql'] 은 μ§€μ •ν•  ν•„μš”κ°€ μ—†λ‹€.

예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό 같이 ν•  수 μžˆλ‹€.

SELECT id AS nid,name AS name,mail AS email,homepage AS url
       password AS passwd
  FROM user_info WHERE id = '$id'

μ—¬κΈ°μ„œ μ£Όμ˜ν•΄μ•Ό ν•  것은 쿼리결과둜 λ‚˜μ˜€λŠ” ν•„λ“œμ΄λ¦„λ“€μ„ jsboard 에 ν•„μš”ν•œ μ΄λ¦„μœΌλ‘œ alias λ₯Ό ν•΄μ•Ό ν•œλ‹€. 각각은 λ‹€μŒκ³Ό κ°™λ‹€.

  • nid : νšŒμ› ID
  • name : νšŒμ›μ΄λ¦„
  • email : νšŒμ› 이메일
  • url : νšŒμ› ν™ˆνŽ˜μ΄μ§€
  • passwd : νšŒμ› νŒ¨μŠ€μ›Œλ“œ
# super user 의 id μ •μ˜
$edb['super'] = "admin";

JSBoard 전체λ₯Ό 관리 ν•  μœ μ €μ˜ idλ₯Ό μ λŠ”λ‹€. λ¬Όλ‘  νšŒμ› DB에 μ‘΄μž¬ν•˜λŠ” κ΄€λ¦¬μžλ₯Ό μ§€μ •ν•΄μ•Ό ν•œλ‹€. 이 μœ μ €λŠ” JSBoard 에 λŒ€ν•΄μ„œλŠ” λ§‰κ°•ν•œ ꢌλ ₯을 κ°€μ§€κ²Œ λœλ‹€.

# νŒ¨μŠ€μ›Œλ“œ ν•„λ“œ μ•”ν˜Έν™” μ—¬λΆ€
# crypt() μ•”ν˜Έν™”μΌ 경우 0, PLAIN 일 경우 1
$edb['crypts'] = 0;
?>

νšŒμ› DB의 νŒ¨μŠ€μ›Œλ“œκ°€ μ•”ν˜Έν™”κ°€ λ˜μ–΄ μ €μž₯이 λ˜λŠ”μ§€ μ•„λ‹Œμ§€λ₯Ό κ²°μ •ν•œλ‹€. μ•”ν˜Έν™”λŠ” php 의 crypt() ν•¨μˆ˜λ₯Ό κΈ°μ€€μœΌλ‘œ ν•œλ‹€. κ·Έ μ™Έμ—λŠ” ν•„μžκ°€ μ–΄λ–»κ²Œ ν•  μ—­λŸ‰μ΄ μ—†λ‹€.

###6.2. μ™ΈλΆ€ loginκ³Ό 연동

일단 기쑴의 νšŒμ›μΈμ¦ 둜그인 νŽ˜μ΄μ§€μ—μ„œ 인증을 성곡을 ν•˜λ©΄ λ‹€μŒκ³Ό 같이 값을 μ„Έμ…˜μ— 같이 올렀 μ£Όλ©΄ λœλ‹€.

<?php
session_start();

# JSBoard session 등둝
$jsboardoopslogin = array("id"=>"$USER_ID","pass"=>"$USER_PASSWORD",
                          "name"=>"$USER_NAME","email"=>"$USER_EMAIL",
                          "url"=>"$USER_HOMEPAGE","pos"=>"$κ΄€λ¦¬μžμ—¬λΆ€",
                          "super"=>"$μ „μ²΄κ΄€λ¦¬μž_ID","external"=>1);

μ—¬κΈ°μ„œ μ£Όμ˜ν•  것은 pos μ—λŠ” μ „μ²΄κ΄€λ¦¬μžλ‘œ λ‘œκ·ΈμΈμ„ ν–ˆμ„ κ²½μš°μ—λŠ” 1의 값이 λ“€μ–΄κ°€μ•Ό ν•˜λ©°, 전체 κ΄€λ¦¬μžκ°€ 아닐 κ²½μš°μ—λŠ” 0 을 주도둝 ν•œλ‹€. λ˜ν•œ μœ μ € νŒ¨μŠ€μ›Œλ“œλŠ” crypt() μ•”ν˜Έν™”λ₯Ό ν•œ λ‹€μŒ μ„Έμ…˜μ— 올렀 주도둝 ν•œλ‹€.

session_register("$μ„Έμ…˜μ΄λ¦„");

μ„Έμ…˜ λ“±λ‘μ‹œμ— μœ„μ˜ μ˜ˆμ œμ—μ„œ μ„Έμ…˜μ΄λ¦„μ€ jsboard의 global.php 의 $jsboard 의 λ³€μˆ˜ 값을 넣어주도둝 ν•œλ‹€. 즉 global.php 에

##############################################################################
#  login mode Configuration
##############################################################################
# login variation name (This value must be modified as security problem)
$jsboard         = "ummha";

# Don't touch this line.
$jsboard         = "jsboard".$jsboard;

라고 지정이 λ˜μ–΄ μžˆλ‹€λ©΄ μ„Έμ…˜μ΄λ¦„μ€ jsboardummha κ°€ λœλ‹€. 즉 μ„Έμ…˜ 등둝은 ___session_register("jsboardummha");___와 같이 λ˜μ–΄μ•Ό ν•œλ‹€.

###6.3. λ‘œκ·Έμ•„μ›ƒ μ—°λ™ν•˜κΈ°

둜그 아웃 μ‹œμ—λŠ” 일단 global.phpμ—μ„œ μœ„μ—μ„œ μ„€λͺ…을 ν–ˆλ“―μ΄ $edb['logout'] 을 μ§€μ •ν•˜μ—¬ λ‘œκ·Έμ•„μ›ƒμ„ 보내도둝 ν•œλ‹€. λ‘œκ·Έμ•„μ›ƒ ν• λ•Œ jsboardλ₯Ό μœ„ν•΄ 올렸던 μ„Έμ…˜κ³Ό μΏ ν‚€λŠ” μ•„λž˜μ™€ 같이 μ‚­μ œλ₯Ό ν•œλ‹€.

# μ„Έμ…˜μ„ μ‚­μ œ
session_unregister("μ„Έμ…˜μ΄λ¦„");

μ„Έμ…˜μ΄λ¦„μ€ μ„Έμ…˜ λ“±λ‘μ‹œμ˜ μ„Έμ…˜μ΄λ¦„κ³Ό λ™μΌν•˜λ‹€. λ˜λŠ” 5.5 λ‘œκ·Έμ•„μ›ƒ 링크 λ§Œλ“€κΈ°λ₯Ό μ°Έκ³ ν•œλ‹€.

⚠️ **GitHub.com Fallback** ⚠️