아이디 저장 기능 구현 정보
PHP 아이디 저장 기능 구현
첨부파일
본문
로그인 페이지에서 '자동 로그인' 대신에 '아이디 저장'을 구현해 보았습니다.
/skin/member/basic/login_check.skiin.php 에 함수와 호출 부분을 삽입하거나
/bbs/login_check.php 에서 $mb 변수 생성된 다음에 붙여넣으면 됩니다.
로그인페이지 /skin/member/basic/login.skiin.php
php 부분에 추가합니다.
$ck_mb_id = $_COOKIE['ck_mb_id'] ?? '';
로그인 페이지에서 자동로그인 체크박스 만들고 name = save_id, value = 1 설정해서 넘어가도록 합니다.
<input type="checkbox" name="save_id" id="save_id" class="selec_chk" value="1" <?= $ck_mb_id ? 'checked' : ''; ?>>
로그인페이지 /skin/member/basic/login.skiin.php 아이디 출력 부분value를 추가합니다.
<input type="text" name="mb_id" id="login_id" required class="frm_input required" size="20" maxLength="20" placeholder="아이디" value="<?= $ck_mb_id ? htmlspecialchars($ck_mb_id) : ''; ?>">
함수
/**
* 로그인 성공 후 아이디 저장 쿠키 처리
*
* @param string $mb_id 회원 아이디
* @param mixed $save_id '1'이면 저장, 그 외는 삭제
*/
function handle_save_id_cookie($mb_id, $save_id = '')
{
// 값이 없으면 0 처리
if ($save_id === '' || $save_id === null) {
$save_id = 0;
}
// 로그인 성공한 경우만 실행
if (!$mb_id) return;
// HTTPS 감지
$secure = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
// 현재 도메인 자동 감지 (www 제거)
$domain = '.' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
// 쿠키 설정/삭제
if ($save_id == '1') {
setcookie('ck_mb_id', $mb_id, time() + 86400 * 30, '/', $domain, $secure, false);
} else {
setcookie('ck_mb_id', '', time() - 3600, '/', $domain);
}
// URL 파라미터 정리 (남아있으면 ?save_id=1 붙는 현상 방지)
unset($_POST['save_id'], $_GET['save_id']);
}
사용법
// $save_id = $_POST['save_id]
handle_save_id_cookie($mb['mb_id'], $save_id);
** 아니면 extend 폴더에 추가
** event.member_login_check_before.saveid.php
** 아니면 아래처럼 hook으로 처리할 수도 있습니다.
** 저는 버전이 5.5.15 라 addAction입니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$hook = get_hook_class();
$hook->addAction('member_login_check_before', function(){
// 아이디
$mb_id = $_POST['mb_id'] ?? '';
// 아이디 저장 체크박스
$save_id = $_POST['save_id'] ?? 0;
// HTTPS 여부 감지
$secure = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off');
// 도메인 자동 감지 (www 제거)
$domain = '.' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
// 아이디 저장 체크된 경우 → 30일 쿠키
if ($save_id === '1' && $mb_id) {
setcookie('ck_mb_id', $mb_id, time() + 86400 * 30, '/', $domain, $secure, false);
}
// 체크 해제 또는 로그인 시도 아이디 없음 → 쿠키 삭제
else {
setcookie('ck_mb_id', '', time() - 3600, '/', $domain);
}
unset($_POST['save_id'], $_GET['save_id']);
});
!-->!-->!-->!-->!-->!-->
추천
0
0
댓글 1개
좋은 정보 수고하셨습니다.