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

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

QA

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

답변 2

본문

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

 

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

 

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로 구현한 소스코드에서 어떤 에러메세지가 출력이 되는지 확인을 해보세요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 22
© SIRSOFT
현재 페이지 제일 처음으로