세진컴퓨터랜드

아이디 저장 기능 구현

· 2025-10-18 (토) 02:10:59 · 4523 · 1

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

 

/skin/member/basic/login_check.skiin.php 에 함수와 호출 부분을 삽입하거나

/bbs/login_check.php 에서 $mb 변수 생성된 다음에 붙여넣으면 됩니다.

 

로그인페이지 /skin/member/basic/login.skiin.php

php 부분에 추가합니다.

[code]
$ck_mb_id = $_COOKIE['ck_mb_id'] ?? '';
[/code]

 

로그인 페이지에서 자동로그인 체크박스 만들고 name = save_id, value = 1 설정해서 넘어가도록 합니다.

[code]

<input type="checkbox" name="save_id" id="save_id" class="selec_chk" value="1" <?= $ck_mb_id ? 'checked' : ''; ?>>
[/code]

 

로그인페이지 /skin/member/basic/login.skiin.php 아이디 출력 부분value를 추가합니다.

[code]
<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) : ''; ?>">
[/code]
 

함수

[code]

/**
 * 로그인 성공 후 아이디 저장 쿠키 처리
 *
 * @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']);
}

[/code]

 

사용법

[code]
// $save_id = $_POST['save_id]
handle_save_id_cookie($mb['mb_id'], $save_id);
[/code]

 

** 기본의 경우 /skin/member/basic/logon_check.skin.php 에 추가

** 아니면 extend 폴더에 추가

** event.member_login_check_before.saveid.php

 

** 아니면 아래처럼 hook으로 처리할 수도 있습니다.

** 저는 버전이 5.5.15 라 addAction입니다.

[code]
<?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']);
});
[/code]

 

 

첨부파일

login_check.skin.php (1.1 KB) 5회 2025-10-18 02:13
|

댓글 1개

좋은 정보 수고하셨습니다.

댓글을 작성하시려면 로그인이 필요합니다.

개발자팁

5,403건

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

+
분류 제목 글쓴이 날짜 조회
기타 05-15 조회 2,593
MySQL 01-06 조회 4,269
JavaScript 25-12-22 조회 1,025
MySQL 25-11-20 조회 2,832
PHP 25-10-21 조회 4,830
PHP 25-10-21 조회 3,420
PHP 25-10-18 조회 4,524
기타 25-08-02 조회 1,354
PHP 25-06-17 조회 5,426
MySQL 25-06-06 조회 4,685
웹서버 25-04-01 조회 1,749
24-10-26 조회 5,255
25-01-25 조회 2,130
25-02-01 조회 5,043
25-02-22 조회 1,786
25-03-08 조회 1,982
25-03-30 조회 1,731
JavaScript 25-03-21 조회 1,930
웹서버 25-03-21 조회 2,022
JavaScript 25-03-03 조회 4,495
기타 25-02-01 조회 2,513
기타 25-01-29 조회 1,390
JavaScript 25-01-28 조회 4,101
기타 25-01-22 조회 1,678
JavaScript 25-01-19 조회 1,609
25-01-10 조회 2,193
기타 25-01-05 조회 1,654
jQuery 25-01-05 조회 1,348
jQuery 25-01-04 조회 1,782
기타 24-12-30 조회 1,833