AvocadoAmber/AvocadoEdition_Light/bbs/login_check.php

106 lines
3.8 KiB
PHP
Raw Normal View History

2022-09-17 20:50:50 +09:00
<?php
2024-09-23 11:10:50 +09:00
include_once "./_common.php";
2022-09-17 20:50:50 +09:00
$g5['title'] = "로그인 검사";
2024-09-19 20:57:39 +09:00
$mb_id = trim($_POST['mb_id']);
2022-09-17 20:50:50 +09:00
$mb_password = trim($_POST['mb_password']);
2024-09-28 13:03:15 +09:00
EventHandler::triggerEvent("gnuboard.member.login_check_before", $mb_id);
2022-09-17 20:50:50 +09:00
if (!$mb_id || !$mb_password)
2024-09-19 20:57:39 +09:00
alert('회원아이디나 비밀번호가 공백이면 안됩니다.');
2022-09-17 20:50:50 +09:00
$mb = get_member($mb_id);
if (!$mb['mb_id'] || !login_password_check($mb, $mb_password, $mb['mb_password'])) {
2024-09-28 13:03:15 +09:00
EventHandler::triggerEvent("gnuboard.member.password_is_wrong", $mb);
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
2022-09-17 20:50:50 +09:00
}
if ($mb['mb_intercept_date'] && $mb['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) {
2024-09-19 20:57:39 +09:00
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_intercept_date']);
alert('회원님의 아이디는 접근이 금지되어 있습니다.\n처리일 : ' . $date);
2022-09-17 20:50:50 +09:00
}
if ($mb['mb_leave_date'] && $mb['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME)) {
2024-09-19 20:57:39 +09:00
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_leave_date']);
alert('탈퇴한 아이디이므로 접근하실 수 없습니다.\n탈퇴일 : ' . $date);
2022-09-17 20:50:50 +09:00
}
if ($config['cf_use_email_certify'] && !preg_match("/[1-9]/", $mb['mb_email_certify'])) {
2024-09-19 20:57:39 +09:00
$ckey = md5($mb['mb_ip'] . $mb['mb_datetime']);
confirm("{$mb['mb_email']} 메일로 메일인증을 받으셔야 로그인 가능합니다. 다른 메일주소로 변경하여 인증하시려면 취소를 클릭하시기 바랍니다.", G5_URL, G5_BBS_URL . '/register_email.php?mb_id=' . $mb_id . '&ckey=' . $ckey);
2022-09-17 20:50:50 +09:00
}
2024-09-28 13:03:15 +09:00
EventHandler::triggerEvent("gnuboard.member.login_session_before", $mb, false); // false: is_social_login
2024-09-19 21:03:48 +09:00
@include_once $member_skin_path . '/login_check.skin.php';
2022-09-17 20:50:50 +09:00
if (!(defined('SKIP_SESSION_REGENERATE_ID') && SKIP_SESSION_REGENERATE_ID)) {
session_regenerate_id(false);
if (function_exists('session_start_samesite')) {
session_start_samesite();
}
}
2022-09-17 20:50:50 +09:00
set_session('ss_mb_id', $mb['mb_id']);
generate_mb_key($mb);
2022-09-17 20:50:50 +09:00
2024-09-19 20:57:39 +09:00
if ($config['cf_use_point']) {
$sum_point = get_point_sum($mb['mb_id']);
2022-09-17 20:50:50 +09:00
2024-09-19 20:57:39 +09:00
$sql = " update {$g5['member_table']} set mb_point = '$sum_point' where mb_id = '{$mb['mb_id']}' ";
sql_query($sql);
2022-09-17 20:50:50 +09:00
}
if ($auto_login) {
2024-09-19 20:57:39 +09:00
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);
set_cookie('ck_auto', $key, 86400 * 31);
2022-09-17 20:50:50 +09:00
} else {
2024-09-19 20:57:39 +09:00
set_cookie('ck_mb_id', '', 0);
set_cookie('ck_auto', '', 0);
2022-09-17 20:50:50 +09:00
}
if ($url) {
2024-09-19 20:57:39 +09:00
check_url_host($url);
$link = urldecode($url);
if (preg_match("/\?/", $link))
$split = "&amp;";
else
$split = "?";
foreach ($_POST as $key => $value) {
if ($key != 'mb_id' && $key != 'mb_password' && $key != 'x' && $key != 'y' && $key != 'url') {
$link .= "$split$key=$value";
$split = "&amp;";
2022-09-17 20:50:50 +09:00
}
2024-09-19 20:57:39 +09:00
}
} else {
$link = G5_URL;
2022-09-17 20:50:50 +09:00
}
2024-09-28 13:03:15 +09:00
EventHandler::triggerEvent("gnuboard.member.login_check", $mb, $link, false); // false: is_social_login
// 관리자로 로그인시 DATA 폴더의 쓰기 권한이 있는지 체크합니다. 쓰기 권한이 없으면 로그인을 못합니다.
if (is_admin($mb['mb_id']) && is_dir(G5_DATA_PATH . '/tmp/')) {
$tmp_data_file = G5_DATA_PATH . '/tmp/tmp-write-test-' . time();
$tmp_data_check = @fopen($tmp_data_file, 'w');
if ($tmp_data_check) {
if (!@fwrite($tmp_data_check, G5_URL)) {
$tmp_data_check = false;
}
}
if (is_resource($tmp_data_check))
@fclose($tmp_data_check);
@unlink($tmp_data_file);
if (!$tmp_data_check) {
alert("data 폴더에 쓰기권한이 없거나 또는 웹하드 용량이 없는 경우\\n로그인을 못할수도 있으니, 용량 체크 및 쓰기 권한을 확인해 주세요.", $link);
}
}
2022-09-17 20:50:50 +09:00
goto_url($link);