닉네임을 미입력시 자동으로 닉네임을 부여하고 싶습니다
이메일을 필수로 입력하게 하고 닉네임은 선택적으로 입력 받게 설정 했습니다
그러니 닉네임 입력 안하면 두번째 부터는 아래 처럼 이미 존재하는 닉네임이라고 나옵니다
ㄱ
닉네임 입력안한 사람에게는 자동으로 닉네임을 USER000001 이런식으로 부여 할 수 있나요?
답변 2개 / 댓글 11개
사용자가 닉네임을 입력하지 않은 경우 자동으로 "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;
}
?>
필요에 따라서 실제 데이터베이스 테이블과 연동하는 등의 추가 작업을 하시면 가능하지 않을까 합니다.
답변에 대한 댓글 5개
아이디를 입력하지않은 사용자에 대해 새로운 ID가 생성이 되겠죠? 그럼 이걸 새로운 테이블을 만들어서 DB에 저장한다고 할때 다음과 같이 할 수 있습니다.
[code]
// 데이터베이스에 이메일 및 닉네임 저장
$query = "INSERT INTO `your_table_name` (`email`, `nickname`) VALUES ('$email', '$nickname')";
if ($connect_db->query($query) === TRUE) {
echo "데이터가 성공적으로 저장되었습니다.";
} else {
echo "데이터 저장에 실패하였습니다: " . $connect_db->error;
}
[/code]
이렇게 하면 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;
}
[/code]
위 코드는 /_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;
}
답변에 대한 댓글 6개
register_update.php
는 어디에 있을까요?ㅠ 비슷한 파일들은 보이는데 일치하는 파일은 안 보이네요...ㅠ
register_form_update.php /bbs 폴더에 있습니다.
ㅠㅠ.. 그리고 어떻게 안되시는지 ~ 소스코드를 어떻게 작성하셨는지 모르기 때문에 답변을 드리기에는 좀 무리가 있지 않을까 하는 생각입니다.
크롬 개발자 모드 F12로 구현한 소스코드에서 어떤 에러메세지가 출력이 되는지 확인을 해보세요
답변을 작성하려면 로그인이 필요합니다.
특히 DB연동은 해 본적이 없어서.....