닉네임을 미입력시 자동으로 닉네임을 부여하고 싶습니다

닉네임을 미입력시 자동으로 닉네임을 부여하고 싶습니다

QA

닉네임을 미입력시 자동으로 닉네임을 부여하고 싶습니다

본문

이메일을 필수로 입력하게 하고 닉네임은 선택적으로 입력 받게 설정 했습니다

 

그러니 닉네임 입력 안하면 두번째 부터는 아래 처럼 이미 존재하는 닉네임이라고 나옵니다

 

2041451737_1688555165.7542.png

 

닉네임 입력안한 사람에게는 자동으로 닉네임을 USER000001 이런식으로 부여 할 수 있나요?

이 질문에 댓글 쓰기 :

답변 2

사용자가 닉네임을 입력하지 않은 경우 자동으로 "USER" + 일련번호 형식의 닉네임을 부여하는 형태를 구현 할 수 있을 것이라 생각합니다.

아래의 예제를 참고하셔서 구현하고자 하는 페이지에 적용하시면 될 것 같습니다

즉 회원가입 페이지 또는 프로필 수정페이지 등등


<?php
// 이메일 및 닉네임 유효성 검사 후 처리
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = $_POST["email"];
    $nickname = $_POST["nickname"];
    // 이메일 유효성 검사 (여기서는 간단하게 필수 입력으로만 확인)
    if (empty($email)) {
        echo "이메일은 필수 입력 항목입니다.";
        exit;
    }
    // 닉네임이 비어있는 경우 자동으로 생성
    if (empty($nickname)) {
        // 새로운 사용자 ID 또는 다른 로직으로 닉네임 생성
        $newUserId = 1; // 새로운 사용자의 ID (예시로 1로 설정)
        $nickname = "USER" . str_pad($newUserId, 6, "0", STR_PAD_LEFT);
    }
    // 이메일 및 닉네임 처리 로직 추가
    // ...
    // 확인 메시지 출력
    echo "이메일: " . $email . "<br>";
    echo "닉네임: " . $nickname;
}
?>

필요에 따라서 실제 데이터베이스 테이블과 연동하는 등의 추가 작업을 하시면 가능하지 않을까 합니다.

적용하시고자 하는 페이지의 상단에 /_common.php 파일이 인클루드 되어 있다면 DB에는 연결이 되어 있다는 얘기겠죠...
아이디를 입력하지않은 사용자에 대해 새로운 ID가 생성이 되겠죠? 그럼 이걸 새로운 테이블을 만들어서 DB에 저장한다고 할때 다음과 같이 할 수 있습니다.


    // 데이터베이스에 이메일 및 닉네임 저장
    $query = "INSERT INTO `your_table_name` (`email`, `nickname`) VALUES ('$email', '$nickname')";
    if ($connect_db->query($query) === TRUE) {
        echo "데이터가 성공적으로 저장되었습니다.";
    } else {
        echo "데이터 저장에 실패하였습니다: " . $connect_db->error;
    }

이렇게 하면 your_table_name 테이블에 저장이 되는겁니다. 예제를 참고 하셔서 로직을 구현 하시면 될 듯합니다. 아니면 회원테이블의 여분 필들를 사용하셔도 될 것 같습니다.
커스텀 하는 부분이라 전체적인걸  설명하기에는 좀 무리가 있을 듯 합니다.


    // 데이터베이스에 이메일 및 닉네임 저장
    $query = "INSERT INTO `your_table_name` (`email`, `nickname`) VALUES ('$email', '$nickname')";
    if ($connect_db->query($query) === TRUE) {
        echo "데이터가 성공적으로 저장되었습니다.";
    } else {
        echo "데이터 저장에 실패하였습니다: " . $connect_db->error;
    }


위 코드는 /_common.php 에 입력하면 될까요?

대략적으로 정리를 한다면 아래와 같이 해 볼 수 있을것 같습니다.

register_fom.skin.php 파일 수정


<?php
// 닉네임이 비어있는 경우 자동으로 생성
if (empty($_POST['mb_nick'])) {
    $newUserId = getNextUserId(); // 사용자 ID를 생성하는 로직 (예시로 함수로 처리)
    $nickname = "USER" . str_pad($newUserId, 6, "0", STR_PAD_LEFT); // 새로운 닉네임 생성
    $_POST['mb_nick'] = $nickname; // $_POST 배열에 닉네임 추가
}
?>
<!-- 그누보드의 기본 register_form.skin.php 코드 작성 -->
<div class="tbl_frm01 tbl_wrap">
    <table>
        <colgroup>
            <!-- 필요한 필드들의 colgroup -->
        </colgroup>
        <tbody>
            <!-- 필요한 필드들의 tbody -->
        </tbody>
    </table>
</div>
 

 

register_update.php 파일 수정


<?php
// 닉네임이 비어있는 경우 자동으로 생성
if (empty($_POST['mb_nick'])) {
    $newUserId = getNextUserId(); // 사용자 ID를 생성하는 로직 (예시로 함수로 처리)
    $nickname = "USER" . str_pad($newUserId, 6, "0", STR_PAD_LEFT); // 새로운 닉네임 생성
    $_POST['mb_nick'] = $nickname; // $_POST 배열에 닉네임 추가
}
// 그누보드의 기본 register_update.php 코드 작성
?>

 

lib/common.lib.php 파일에 추가


function getNextUserId() {
    global $g5; // 그누보드의 전역 변수 사용
    $sql = "SELECT MAX(mb_id) AS max_id FROM {$g5['member_table']}"; // 회원 테이블의 ID 컬럼을 사용하여 최대값을 가져옴
    $result = sql_fetch($sql);
    $max_id = $result['max_id'];
    $next_id = $max_id + 1; // 최대값에 1을 더하여 새로운 ID 생성
    return $next_id;
}

 

제가 올려드린 소스코드는 예시일뿐입니다. 원하시는 형태로 로직을 구현하셔야 합니다.
ㅠㅠ.. 그리고 어떻게 안되시는지 ~ 소스코드를 어떻게 작성하셨는지 모르기 때문에 답변을 드리기에는 좀 무리가 있지 않을까 하는 생각입니다.

크롬 개발자 모드 F12로 구현한 소스코드에서 어떤 에러메세지가 출력이 되는지 확인을 해보세요

답변을 작성하시기 전에 로그인 해주세요.
전체 22
QA 내용 검색

회원로그인

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