Skip to content

Commit 9dd53a4

Browse files
committedJun 13, 2022
PHP81버전 대응 충돌수정
2 parents bdb1ab8 + c5395a7 commit 9dd53a4

19 files changed

+170
-3690
lines changed
 

‎bbs/login_check.php

+2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
set_session('ss_mb_id', $mb['mb_id']);
6565
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함 - 110106
6666
set_session('ss_mb_key', md5($mb['mb_datetime'] . get_real_client_ip() . $_SERVER['HTTP_USER_AGENT']));
67+
// 회원의 토큰키를 세션에 저장한다. /common.php 에서 해당 회원의 토큰값을 검사한다.
68+
if(function_exists('update_auth_session_token')) update_auth_session_token($mb['mb_datetime']);
6769

6870
// 포인트 체크
6971
if($config['cf_use_point']) {

‎bbs/register_form_update.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,10 @@
304304
}
305305

306306
// 메일인증 사용하지 않는 경우에만 로그인
307-
if (!$config['cf_use_email_certify'])
307+
if (!$config['cf_use_email_certify']) {
308308
set_session('ss_mb_id', $mb_id);
309+
if(function_exists('update_auth_session_token')) update_auth_session_token(G5_TIME_YMDHIS);
310+
}
309311

310312
set_session('ss_mb_reg', $mb_id);
311313

‎bbs/write_update.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@
222222
$wr_seo_title = exist_seo_title_recursive('bbs', generate_seo_title($wr_subject), $write_table, $wr_id);
223223

224224
$options = array($html,$secret,$mail);
225-
$wr_option = implode(',', array_filter($options, function($v) { return trim($v); }));
225+
$wr_option = implode(',', array_filter(array_map('trim', $options)));
226226

227227
if ($w == '' || $w == 'r') {
228228

‎common.php

+30-11
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ function sql_escape_string($str)
208208
@ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
209209
@ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
210210

211-
session_save_path(G5_SESSION_PATH);
211+
// 세션파일 저장 디렉토리를 지정할 경우
212+
// session_save_path(G5_SESSION_PATH);
212213

213214
if (isset($SESSION_CACHE_LIMITER))
214215
@session_cache_limiter($SESSION_CACHE_LIMITER);
@@ -232,8 +233,15 @@ function chrome_domain_session_name(){
232233
'.maru.net', // 마루호스팅
233234
);
234235

235-
if(isset($_SERVER['HTTP_HOST']) && preg_match('/('.implode('|', $domain_array).')/i', $_SERVER['HTTP_HOST'])){ // 위의 도메인주소를 포함한 url접속시 기본세션이름을 변경한다.
236-
if(! defined('G5_SESSION_NAME')) define('G5_SESSION_NAME', 'G5PHPSESSID');
236+
$add_str = '';
237+
$document_root_path = str_replace('\\', '/', realpath($_SERVER['DOCUMENT_ROOT']));
238+
239+
if( G5_PATH !== $document_root_path ){
240+
$add_str = substr_count(G5_PATH, '/').basename(dirname(__FILE__));
241+
}
242+
243+
if($add_str || (isset($_SERVER['HTTP_HOST']) && preg_match('/('.implode('|', $domain_array).')/i', $_SERVER['HTTP_HOST'])) ){ // 위의 도메인주소를 포함한 url접속시 기본세션이름을 변경한다.
244+
if(! defined('G5_SESSION_NAME')) define('G5_SESSION_NAME', 'G5'.$add_str.'PHPSESSID');
237245
@session_name(G5_SESSION_NAME);
238246
}
239247
}
@@ -243,8 +251,18 @@ function chrome_domain_session_name(){
243251
if( ! class_exists('XenoPostToForm') ){
244252
class XenoPostToForm
245253
{
254+
public static function g5_session_name(){
255+
return (defined('G5_SESSION_NAME') && G5_SESSION_NAME) ? G5_SESSION_NAME : 'PHPSESSID';
256+
}
257+
258+
public static function php52_request_check(){
259+
$cookie_session_name = self::g5_session_name();
260+
if (isset($_REQUEST[$cookie_session_name]) && $_REQUEST[$cookie_session_name] != session_id())
261+
goto_url(G5_BBS_URL.'/logout.php');
262+
}
263+
246264
public static function check() {
247-
$cookie_session_name = (defined('G5_SESSION_NAME') && G5_SESSION_NAME) ? G5_SESSION_NAME : 'PHPSESSID';
265+
$cookie_session_name = self::g5_session_name();
248266

249267
return !isset($_COOKIE[$cookie_session_name]) && count($_POST) && ((isset($_SERVER['HTTP_REFERER']) && !preg_match('~^https://'.preg_quote($_SERVER['HTTP_HOST'], '~').'/~', $_SERVER['HTTP_REFERER']) || ! isset($_SERVER['HTTP_REFERER']) ));
250268
}
@@ -351,8 +369,9 @@ function session_start_samesite($options = array())
351369

352370
$headers = headers_list();
353371
krsort($headers);
372+
$cookie_session_name = method_exists('XenoPostToForm', 'g5_session_name') ? XenoPostToForm::g5_session_name() : 'PHPSESSID';
354373
foreach ($headers as $header) {
355-
if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
374+
if (!preg_match('~^Set-Cookie: '.$cookie_session_name.'=~', $header)) continue;
356375
$header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
357376
header($header, false);
358377
$g5['session_cookie_samesite'] = 'none';
@@ -375,9 +394,8 @@ function session_start_samesite($options = array())
375394
define('G5_CAPTCHA_URL', G5_PLUGIN_URL.'/'.G5_CAPTCHA_DIR);
376395
define('G5_CAPTCHA_PATH', G5_PLUGIN_PATH.'/'.G5_CAPTCHA_DIR);
377396

378-
// 4.00.03 : [보안관련] PHPSESSID 가 틀리면 로그아웃한다.
379-
if (isset($_REQUEST['PHPSESSID']) && $_REQUEST['PHPSESSID'] != session_id())
380-
goto_url(G5_BBS_URL.'/logout.php');
397+
// 4.00.03 : [보안관련] PHPSESSID 가 틀리면 로그아웃한다. php5.2 버전 이하에서만 해당되는 코드이며, 오히려 무한리다이렉트 오류가 일어날수 있으므로 주석처리합니다.
398+
// if( method_exists('XenoPostToForm', 'php52_request_check') ) XenoPostToForm::php52_request_check();
381399

382400
// QUERY_STRING
383401
$qstr = '';
@@ -497,8 +515,8 @@ function session_start_samesite($options = array())
497515
if (isset($_SESSION['ss_mb_id']) && $_SESSION['ss_mb_id']) { // 로그인중이라면
498516
$member = get_member($_SESSION['ss_mb_id']);
499517

500-
// 차단된 회원이면 ss_mb_id 초기화
501-
if($member['mb_intercept_date'] && $member['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) {
518+
// 차단된 회원이면 ss_mb_id 초기화, 또는 세션에 저장된 회원 토큰값을 비교하여 틀리면 초기화
519+
if( ($member['mb_intercept_date'] && $member['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) || (function_exists('check_auth_session_token') && !check_auth_session_token($member['mb_datetime'])) ) {
502520
set_session('ss_mb_id', '');
503521
$member = array();
504522
} else {
@@ -521,7 +539,7 @@ function session_start_samesite($options = array())
521539
$tmp_mb_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $tmp_mb_id), 0, 20);
522540
// 최고관리자는 자동로그인 금지
523541
if (strtolower($tmp_mb_id) !== strtolower($config['cf_admin'])) {
524-
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify from {$g5['member_table']} where mb_id = '{$tmp_mb_id}' ";
542+
$sql = " select mb_password, mb_intercept_date, mb_leave_date, mb_email_certify, mb_datetime from {$g5['member_table']} where mb_id = '{$tmp_mb_id}' ";
525543
$row = sql_fetch($sql);
526544
if($row['mb_password']){
527545
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']);
@@ -534,6 +552,7 @@ function session_start_samesite($options = array())
534552
(!$config['cf_use_email_certify'] || preg_match('/[1-9]/', $row['mb_email_certify'])) ) {
535553
// 세션에 회원아이디를 저장하여 로그인으로 간주
536554
set_session('ss_mb_id', $tmp_mb_id);
555+
if(function_exists('update_auth_session_token')) update_auth_session_token($row['mb_datetime']);
537556

538557
// 페이지를 재실행
539558
echo "<script type='text/javascript'> window.location.reload(); </script>";

‎install/install_db.php

+2
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,7 @@
570570
fwrite($f, "define('G5_MYSQL_DB', '".addcslashes($mysql_db, "\\'")."');\n");
571571
fwrite($f, "define('G5_MYSQL_SET_MODE', {$mysql_set_mode});\n\n");
572572
fwrite($f, "define('G5_TABLE_PREFIX', '{$table_prefix}');\n\n");
573+
fwrite($f, "define('G5_TOKEN_ENCRYPTION_KEY', '".get_random_token_string(16)."'); // 토큰 암호화에 사용할 키\n\n");
573574
fwrite($f, "\$g5['write_prefix'] = G5_TABLE_PREFIX.'write_'; // 게시판 테이블명 접두사\n\n");
574575
fwrite($f, "\$g5['auth_table'] = G5_TABLE_PREFIX.'auth'; // 관리권한 설정 테이블\n");
575576
fwrite($f, "\$g5['config_table'] = G5_TABLE_PREFIX.'config'; // 기본환경 설정 테이블\n");
@@ -649,6 +650,7 @@
649650
Order allow,deny
650651
Deny from all
651652
</FilesMatch>
653+
RedirectMatch 403 /session/.*
652654
EOD;
653655
fwrite($f, $str);
654656
fclose($f);

‎lib/Cache/obj.class.php

+8-8
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public $contents = array();
77
public $etcs = array();
88

9-
function get($type, $key, $group ='default') {
9+
function get($type, $key, $group ='default') {
1010

1111
switch ($type) {
1212
case 'bbs':
@@ -28,10 +28,10 @@ function get($type, $key, $group ='default') {
2828
}
2929

3030
return false;
31-
}
31+
}
32+
33+
function exists($type, $key, $group = 'default' ) {
3234

33-
function exists($type, $key, $group = 'default' ) {
34-
3535
$return_data = '';
3636

3737
switch ($type) {
@@ -47,9 +47,9 @@ function exists($type, $key, $group = 'default' ) {
4747
}
4848

4949
return isset($datas[$group]) && ( isset($datas[$group][$key]) || array_key_exists($key, $datas[$group]) );
50-
}
50+
}
5151

52-
function set($type, $key, $data=array(), $group='default') {
52+
function set($type, $key, $data=array(), $group='default') {
5353
if ( is_object( $data ) )
5454
$data = clone $data;
5555

@@ -65,10 +65,10 @@ function set($type, $key, $data=array(), $group='default') {
6565
break;
6666
}
6767

68-
}
68+
}
6969

7070
function delete($key, $group='default') {
71-
switch ($type) {
71+
switch ($key) {
7272
case 'bbs':
7373
$datas = $this->writes;
7474
break;

‎lib/common.lib.php

+32
Original file line numberDiff line numberDiff line change
@@ -3924,6 +3924,38 @@ function is_include_path_check($path='', $is_input='')
39243924
return true;
39253925
}
39263926

3927+
function check_auth_session_token($str=''){
3928+
if (get_session('ss_mb_token_key') === get_token_encryption_key($str)) {
3929+
return true;
3930+
}
3931+
return false;
3932+
}
3933+
3934+
function update_auth_session_token($str=''){
3935+
set_session('ss_mb_token_key', get_token_encryption_key($str));
3936+
}
3937+
3938+
function get_token_encryption_key($str=''){
3939+
$token = G5_TABLE_PREFIX.(defined('G5_SHOP_TABLE_PREFIX') ? G5_SHOP_TABLE_PREFIX : '').(defined('G5_TOKEN_ENCRYPTION_KEY') ? G5_TOKEN_ENCRYPTION_KEY : '').$str;
3940+
3941+
return md5($token);
3942+
}
3943+
3944+
function get_random_token_string($length=6)
3945+
{
3946+
if(function_exists('random_bytes')){
3947+
return bin2hex(random_bytes($length));
3948+
}
3949+
3950+
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
3951+
$characters_length = strlen($characters);
3952+
$output = '';
3953+
for ($i = 0; $i < $length; $i++)
3954+
$output .= $characters[rand(0, $characters_length - 1)];
3955+
3956+
return bin2hex($output);
3957+
}
3958+
39273959
function filter_input_include_path($path){
39283960
return str_replace('//', '/', $path);
39293961
}

‎plugin/PHPMailer/composer.json

-61
This file was deleted.

‎plugin/PHPMailer/composer.lock

-3,593
This file was deleted.

‎plugin/kcaptcha/kcaptcha.lib.php

+9-3
Original file line numberDiff line numberDiff line change
@@ -274,9 +274,15 @@ function chk_captcha()
274274
return false;
275275
}
276276

277-
if (!isset($_POST['captcha_key'])) return false;
278-
if (!trim($_POST['captcha_key'])) return false;
279-
if ($_POST['captcha_key'] != get_session('ss_captcha_key')) {
277+
$post_captcha_key = (isset($_POST['captcha_key']) && $_POST['captcha_key']) ? trim($_POST['captcha_key']) : '';
278+
if (!trim($post_captcha_key)) return false;
279+
280+
if( $post_captcha_key && function_exists('get_string_encrypt') ){
281+
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
282+
$post_captcha_key = get_string_encrypt($ip.$post_captcha_key);
283+
}
284+
285+
if ($post_captcha_key != get_session('ss_captcha_key')) {
280286
$_SESSION['ss_captcha_count'] = $captcha_count + 1;
281287
return false;
282288
}

‎plugin/kcaptcha/kcaptcha_image.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
include_once('captcha.lib.php');
44

55
$captcha = new KCAPTCHA();
6-
$captcha->setKeyString(get_session("ss_captcha_key"));
6+
$ss_captcha_key = get_session("ss_captcha_key");
7+
if( $ss_captcha_key && !preg_match('/^[0-9]/', $ss_captcha_key) && function_exists('get_string_decrypt') ){
8+
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
9+
$ss_captcha_key = str_replace($ip, '', get_string_decrypt($ss_captcha_key));
10+
}
11+
$captcha->setKeyString($ss_captcha_key);
712
$captcha->getKeyString();
813
$captcha->image();

‎plugin/kcaptcha/kcaptcha_mp3.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ function make_mp3()
88
$number = get_session("ss_captcha_key");
99

1010
if ($number == "") return;
11+
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
12+
if( $number && function_exists('get_string_decrypt') ){
13+
$number = str_replace($ip, '', get_string_decrypt($number));
14+
}
1115
if ($number == get_session("ss_captcha_save")) return;
1216

1317
$mp3s = array();
@@ -16,7 +20,6 @@ function make_mp3()
1620
$mp3s[] = $file;
1721
}
1822

19-
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
2023
$mp3_file = 'cache/kcaptcha-'.$ip.'_'.G5_SERVER_TIME.'.mp3';
2124

2225
$contents = '';
@@ -35,6 +38,9 @@ function make_mp3()
3538
}
3639
}
3740

41+
if( $number && function_exists('get_string_encrypt') ){
42+
$number = get_string_encrypt($ip.$number);
43+
}
3844
set_session("ss_captcha_save", $number);
3945

4046
return G5_DATA_URL.'/'.$mp3_file;

‎plugin/kcaptcha/kcaptcha_result.php

+5
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,10 @@
99
echo false;
1010
} else {
1111
set_session("ss_captcha_count", $count + 1);
12+
13+
if( $captcha_key && function_exists('get_string_encrypt') ){
14+
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
15+
$captcha_key = get_string_encrypt($ip.$captcha_key);
16+
}
1217
echo (get_session("ss_captcha_key") === $captcha_key) ? true : false;
1318
}

‎plugin/kcaptcha/kcaptcha_session.php

+5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/', $keystring)) break;
1212
}
1313

14+
if( $keystring && function_exists('get_string_encrypt') ){
15+
$ip = md5(sha1($_SERVER['REMOTE_ADDR']));
16+
$keystring = get_string_encrypt($ip.$keystring);
17+
}
18+
1419
set_session("ss_captcha_count", 0);
1520
set_session("ss_captcha_key", $keystring);
1621
$captcha = new KCAPTCHA();

‎plugin/social/Hybrid/Storage.php

+19-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* HybridAuth storage manager
1212
*/
1313
class Hybrid_Storage implements Hybrid_Storage_Interface {
14+
public static $stores = array();
1415

1516
/**
1617
* Constructor
@@ -37,11 +38,21 @@ public function config($key, $value = null) {
3738
$key = strtolower($key);
3839

3940
if ($value) {
40-
$_SESSION["HA::CONFIG"][$key] = serialize($value);
41+
$serialize_value = function_exists('get_string_encrypt') ? get_string_encrypt(serialize($value)) : serialize($value);
42+
43+
if( in_array($key, array('php_session_id', 'config')) ){
44+
$this->stores[$key] = $serialize_value;
45+
} else {
46+
$_SESSION["HA::CONFIG"][$key] = $serialize_value;
47+
}
48+
} elseif (isset($this->stores[$key])) {
49+
$unserialize_value = function_exists('get_string_decrypt') ? unserialize(get_string_decrypt($this->stores[$key])) : unserialize($this->stores[$key]);
50+
return $unserialize_value;
4151
} elseif (isset($_SESSION["HA::CONFIG"][$key])) {
42-
return unserialize($_SESSION["HA::CONFIG"][$key]);
52+
$unserialize_value = function_exists('get_string_decrypt') ? unserialize(get_string_decrypt($_SESSION["HA::CONFIG"][$key])) : unserialize($_SESSION["HA::CONFIG"][$key]);
53+
return $unserialize_value;
4354
}
44-
55+
4556
return null;
4657
}
4758

@@ -55,7 +66,8 @@ public function get($key) {
5566
$key = strtolower($key);
5667

5768
if (isset($_SESSION["HA::STORE"], $_SESSION["HA::STORE"][$key])) {
58-
return unserialize($_SESSION["HA::STORE"][$key]);
69+
$unserialize_value = function_exists('get_string_decrypt') ? unserialize(get_string_decrypt($_SESSION["HA::STORE"][$key])) : unserialize($_SESSION["HA::STORE"][$key]);
70+
return $unserialize_value;
5971
}
6072

6173
return null;
@@ -70,7 +82,8 @@ public function get($key) {
7082
*/
7183
public function set($key, $value) {
7284
$key = strtolower($key);
73-
$_SESSION["HA::STORE"][$key] = serialize($value);
85+
$serialize_value = function_exists('get_string_encrypt') ? get_string_encrypt(serialize($value)) : serialize($value);
86+
$_SESSION["HA::STORE"][$key] = $serialize_value;
7487
}
7588

7689
/**
@@ -138,4 +151,4 @@ function restoreSessionData($sessiondata = null) {
138151
$_SESSION["HA::STORE"] = unserialize($sessiondata);
139152
}
140153

141-
}
154+
}

‎plugin/social/includes/functions.php

+5-3
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,8 @@ function social_session_exists_check(){
391391
}
392392

393393
if( $provider_name && isset($_SESSION['HA::STORE']['hauth_session.'.strtolower($provider_name).'.is_logged_in']) && !empty($_SESSION['sl_userprofile'][$provider_name]) ){
394-
return json_decode($_SESSION['sl_userprofile'][$provider_name]);
394+
$decode_value = function_exists('get_string_decrypt') ? json_decode(get_string_decrypt($_SESSION['sl_userprofile'][$provider_name])) : json_decode($_SESSION['sl_userprofile'][$provider_name]);
395+
return $decode_value;
395396
}
396397

397398
return false;
@@ -485,8 +486,9 @@ function social_check_login_before($p_service=''){
485486
$_SESSION['sl_userprofile'] = array();
486487
}
487488

488-
if( ! $is_member ){
489-
$_SESSION['sl_userprofile'][$provider_name] = json_encode( $user_profile );
489+
if( ! $is_member ){
490+
$encode_value = function_exists('get_string_encrypt') ? get_string_encrypt(json_encode($user_profile)) : json_encode($user_profile);
491+
$_SESSION['sl_userprofile'][$provider_name] = $encode_value;
490492
}
491493
}
492494

‎plugin/social/includes/g5_endpoint_class.php

+34
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,40 @@
33

44
class G5_Hybrid_Endpoint extends Hybrid_Endpoint
55
{
6+
protected function authInit() {
7+
if (!$this->initDone) {
8+
$this->initDone = true;
9+
10+
// Init Hybrid_Auth
11+
try {
12+
if (!class_exists("Hybrid_Storage", false)) {
13+
require_once realpath(dirname(dirname(__FILE__))). "/Hybrid/Storage.php";
14+
}
15+
if (!class_exists("Hybrid_Exception", false)) {
16+
require_once realpath(dirname(dirname(__FILE__))). "/Hybrid/Exception.php";
17+
}
18+
if (!class_exists("Hybrid_Logger", false)) {
19+
require_once realpath(dirname(dirname(__FILE__))). "/Hybrid/Logger.php";
20+
}
21+
22+
$storage = new Hybrid_Storage();
23+
$provider_id = ucfirst(trim(strip_tags($this->request["hauth_start"])));
24+
if(!$provider_id) $provider_id = ucfirst(trim(strip_tags($this->request["hauth_done"])));
25+
26+
$storage->config("CONFIG", social_build_provider_config($provider_id));
27+
// Check if Hybrid_Auth session already exist
28+
if (!$storage->config("CONFIG")) {
29+
$this->dieError("CONFIG FAILED: ", "Unable to get config", array());
30+
}
31+
32+
Hybrid_Auth::initialize($storage->config("CONFIG"));
33+
} catch (Exception $e) {
34+
Hybrid_Logger::error("Endpoint: Error while trying to init Hybrid_Auth: " . $e->getMessage());
35+
$this->dieError("Endpoint Error: ", $e->getMessage(), $e);
36+
}
37+
}
38+
}
39+
640
protected function processAuthStart(){
741
try {
842
parent::processAuthStart();

‎plugin/social/register_member_update.php

+1
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@
226226

227227
//바로 로그인 처리
228228
set_session('ss_mb_id', $mb['mb_id']);
229+
if(function_exists('update_auth_session_token')) update_auth_session_token(G5_TIME_YMDHIS);
229230

230231
} else { // 메일인증을 사용한다면
231232
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';

‎version.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
33

44
define('G5_VERSION', '그누보드5');
5-
define('G5_GNUBOARD_VER', '5.5.7.2');
5+
define('G5_GNUBOARD_VER', '5.5.7.5');
66
// 그누보드5.4.5.5 버전과 영카트5.4.5.5.1 버전을 합쳐서 그누보드5.4.6 버전에서 시작함 (kagla-210617)
77
// G5_YOUNGCART_VER 이 상수를 사용하는 곳이 있으므로 주석 처리 해제함
88
// 그누보드5.4.6 이상 버전 부터는 영카트를 그누보드에 포함하여 배포하므로 영카트5의 버전은 의미가 없습니다.

0 commit comments

Comments
 (0)
Please sign in to comment.