아이디 저장 기능 구현 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

아이디 저장 기능 구현 정보

PHP 아이디 저장 기능 구현

첨부파일

login_check.skin.php (1.1K) 1회 다운로드 2025-10-18 02:13:13

본문

로그인 페이지에서 '자동 로그인' 대신에 '아이디 저장'을 구현해 보았습니다.

 

/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

댓글 1개

전체 5,399
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT