회원가입 폼 중 이메일 인증에 관한 질문 드립니다.

회원가입 폼 중 이메일 인증에 관한 질문 드립니다.

QA

회원가입 폼 중 이메일 인증에 관한 질문 드립니다.

답변 2

사용하는 빌더

나리야

사용 PHP 버전

8.2

본문

안녕하세요. 독학하며 하다보니 막히는 부분이 많아 여쭤봅니다.

 

아미나 BS4-Basic 테마를 사용하는 중입니다.

저는 미국에서 쓰고 싶어서 홈페이지와 게시판 전체를 영어로 바꾸고 싶어 진행하는 중이고

회원 가입시 특정 도메인 몇개의 이메일만 가입 가능, 인증하게 하고 싶어합니다.

 

이 게시판에 질문을 통해 답변해주신 분으로부터 아이디어를 얻어

AI에게 회원 가입시 뜨는 이메일 인증 칸을 수정하게끔

소스를 짜달라고 했고

 

 

990745566_1742248706.5387.png

 

요렇게 이메일 항목에

폼, @ , 도메인 고르기 풀다운메뉴

구성을 할 수 있었는데요.

 

정말 마음에 드는데

문제는..

회원 가입 확인 버튼을 누르면

 

 

990745566_1742248764.2561.png

 

이렇게 뜬다는겁니다. ㅠㅠ

 

 

질문은..

 

1-1 폼+@+내가 고른 이메일 도메인

요렇게 한번에 글자로 인식이 안되는 문제일까요 아니면

애초에 이렇게 생성하면 안 되는 문제였을까요?

 

제가 저 부분의 소스를 올리면 혹시 봐주실 수 있을까요?

 

혹은..

"지정된 도메인의 이메일만 가입/인증 가능!"

하게끔 하는 쉬운 방법이 있다면 말씀해주시면 감사하겠습니다.

제가 기초도 없는 초보이기는 한데 알려주시면 최대한 찾아서 해보겠습니다!!!

 

 

1-2 저렇게 뜨는 창 조차 한글이 있으면 안되는데,

저 경고창의 내용을 수정할 수 있는 경로 아시는 분 계시면 도움 부탁드립니다.

 

 

 

- 추가

혹시나 하여 첫 번째 칸에 이메일 전체를 써보았습니다.

 

990745566_1742250262.4296.png

그리고 가입 버튼을 누르니

 

990745566_1742250292.7616.png

 

이런 경고창이 뜨네요.

어떻게 해결해야 할까요?

하...

 

sir-dow-02.png?v=2

 

 

다음 질문은

990745566_1742249080.2738.jpg

요렇게 주소창 앞부분에 not secure가 뜬다는건데, 이건 유료 호스팅 신청하면 사라지는 문제일까요?

홈페이지 제작이 얼추 마무리 되면 당연히 유료 도메인, 호스팅 신청 예정이라

지금 단계에서는 신경 안써도 되는 부분일지 궁금합니다.

 

늘 많은 도움 받고 있습니다.

미리 감사드립니다.

이 질문에 댓글 쓰기 :

답변 2

안녕하세요...

 님

 

1. 아래 코드를 다음과 같이 수정 해주세요

먼저 


 <div style="display: inline-block;">
        <input type="text" name="mb_email_id" value="<?php echo isset($member['mb_email']) ? explode('@', $member['mb_email'])[0] : ''; ?>" id="reg_mb_email" required class="form-control email required" size="35" maxlength="50" style="display: inline-block; width: auto;">
        @
        <select name="mb_email_domain" id="reg_mb_email_domain" required class="form-control email required" style="display: inline-block; width: auto;">
            <option value="naver.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '.com') !== false) echo 'selected'; ?>>naver.com</option>
            <option value="a.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a.com') !== false) echo 'selected'; ?>>a.com</option>
            <option value="a2.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a2.com') !== false) echo 'selected'; ?>>a2.com</option>
            <option value="a3.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a3.com') !== false) echo 'selected'; ?>>a3.com</option>
            <option value="a4.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a4.com') !== false) echo 'selected'; ?>>a4.com</option>
        </select>
    </div>

이부분 맨 밑에 아래 코드를 추가 해주세요


<input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email">

 

그리고 폼 체크 스크립트에 아래 코드를 추가 해주세요


// submit 최종 폼체크
function fregisterform_submit(f)
{

 

이부분에 회원 아이디 검사 코드 끝나는 부분에 아래 코드를 넣어주세요


if (f.w.value == "" || f.mb_email.value.length > 0) {
        if (typeof f.mb_email_id !== 'undefined' && typeof f.mb_email_domain !== 'undefined') {
            if (f.mb_email_id.value.length < 1) {
                alert("이메일 아이디를 입력해 주세요.");
                f.mb_email_id.focus();
                return false;
            }
           
            if (f.mb_email_domain.value.length < 1) {
                alert("이메일 도메인을 선택하거나 입력해 주세요.");
                f.mb_email_domain.focus();
                return false;
            }
           
            // 이메일 아이디와 도메인을 합쳐서 mb_email 필드에 설정
            f.mb_email.value = f.mb_email_id.value + "@" + f.mb_email_domain.value;
        }
    }

 

1-2번의 경우는 lib/register.lib.php 파일에 한글로 된 부분을 영문으로 변경 하시면 됩니다.

 

마지막 질문은 유료 호스팅이 아니라 SSL 입니다. 보안 인증서가 필요합니다.

어느 회사의 호스팅을 사용하시는지는 작성되지 않아 모르겠지만,

 

대부분의 호스팅회사의 SSL 신청 페이지가 있습니다.

무료/유료/ 초기만 (설치비) 유료 등 회사마다 상이하므로 

사용중인 호스팅 회사를 확인해보시면 되겠습니다.

 

 

 

안녕하세요. 넘 감사드립니다! 말씀하신대로


			<div class="form-group row">
    <label class="col-sm-2 col-form-label" for="reg_mb_email">E-mail<strong class="sr-only">Required</strong></label>
	<div class="col-sm-10">
    <input type="hidden" name="old_email" value="<?php echo $member['mb_email']; ?>">
    <div style="display: inline-block;">
        <input type="text" name="mb_email_id" value="<?php echo isset($member['mb_email']) ? explode('@', $member['mb_email'])[0] : ''; ?>" id="reg_mb_email" required class="form-control email required" size="35" maxlength="50" style="display: inline-block; width: auto;">
        @
        <select name="mb_email_domain" id="reg_mb_email_domain" required class="form-control email required" style="display: inline-block; width: auto;">
            <option value="naver.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@naver.com') !== false) echo 'selected'; ?>>naver.com</option>
            <option value="northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@northwestern.edu') !== false) echo 'selected'; ?>>northwestern.edu</option>
            <option value="law.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@law.northwestern.edu') !== false) echo 'selected'; ?>>law.northwestern.edu</option>
            <option value="nlaw.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@nlaw.northwestern.edu') !== false) echo 'selected'; ?>>nlaw.northwestern.edu</option>
            <option value="u.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@u.northwestern.edu') !== false) echo 'selected'; ?>>u.northwestern.edu</option>
            <option value="alum.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@alum.northwestern.edu') !== false) echo 'selected'; ?>>alum.northwestern.edu</option>
            <option value="fsm.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@fsm.northwestern.edu') !== false) echo 'selected'; ?>>fsm.northwestern.edu</option>
            <option value="kellogg.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@kellogg.northwestern.edu') !== false) echo 'selected'; ?>>kellogg.northwestern.edu</option>
            <option value="kelloggalumni.northwestern.edu" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@kelloggalumni.northwestern.edu') !== false) echo 'selected'; ?>>kelloggalumni.northwestern.edu</option>
        </select>
    </div>

	<input type="hidden" name="mb_email" value="<?php echo isset($member['mb_email'])?$member['mb_email']:''; ?>" id="reg_mb_email">



이렇게 넣고

폼 체크엔

// submit 최종 폼체크
function fregisterform_submit(f)
{
	if (f.w.value == "" || f.mb_email.value.length > 0) {
        if (typeof f.mb_email_id !== 'undefined' && typeof f.mb_email_domain !== 'undefined') {
            if (f.mb_email_id.value.length < 1) {
                alert("이메일 아이디를 입력해 주세요.");
                f.mb_email_id.focus();
                return false;
            }
           
            if (f.mb_email_domain.value.length < 1) {
                alert("이메일 도메인을 선택하거나 입력해 주세요.");
                f.mb_email_domain.focus();
                return false;
            }
           
            // 이메일 아이디와 도메인을 합쳐서 mb_email 필드에 설정
            f.mb_email.value = f.mb_email_id.value + "@" + f.mb_email_domain.value;
        }
    }


이렇게 넣었는데 역시 같은 '이메일 형식이 아닙니다.' 라는 경고창이 뜨네요. ㅠㅠ
제 호스팅사 문제가 있거나 제가 잘못된 위치에 붙여넣은 것일까요..?
닷홈 사용하고 있습니다.

또 제가 열어서 수정중인 파일은 html/skin/member/BS4-Basic/register_form.skin.php입니다.
꼭 해결을 하고 싶습니다 ㅠㅠ

테스트 해보니이메일이라고 이름 있어서 나타나는 현상입니다.

<select name="mb_email_domain" id="reg_mb_email_domain" required class="form-control email required" style="display: inline-block; width: auto;">

요기에서 클래스에서 이메일 제거 해야 합니다.

<select name="mb_email_domain" id="reg_mb_email_domain" required class="form-control required" style="display: inline-block; width: auto;">

그럼 잘 되실꺼에요 테스트 해보니 잘 되네요

점집의 경우 아래의 링크에서 확인할 수 있습니다.

https://www.dothome.co.kr/etc/ssl/price.php

단. 무료 호스팅을 사용하는 경우라면 무료 SSL 사용 불가능합니다.

감사합니다!
다만... 마지막으로 답변 주신 부분을 수정해도 안되어서 혹시...

@ 앞의
<input type="text" name="mb_email_id" value="<?php echo isset($member['mb_email']) ? explode('@', $member['mb_email'])[0] : ''; ?>" id="reg_mb_email" required class="form-control email required" size="35" maxlength="50" style="display: inline-block; width: auto;">
이 소스에서

중 후반부의
form-control email required 이 부분을
form-control required 로 수정해봐도 될까요?
먼저 고견을 여쭤보고 싶습니다.

----

앗.. 안되네요. 역시 이메일 형식이 아니라고 나옵니다. 음.. 음... 더이상 방법이 없을까요..;;

작성자입니다. 이메일 부분이 저렇게 나오게 된 소스코드 올려드려봅니다..


<div class="form-group row">
    <label class="col-sm-2 col-form-label" for="reg_mb_email">E-mail<strong class="sr-only">Required</strong></label>
    <div class="col-sm-10">
    <input type="hidden" name="old_email" value="<?php echo $member['mb_email']; ?>">
    <div style="display: inline-block;">
        <input type="text" name="mb_email_id" value="<?php echo isset($member['mb_email']) ? explode('@', $member['mb_email'])[0] : ''; ?>" id="reg_mb_email" required class="form-control email required" size="35" maxlength="50" style="display: inline-block; width: auto;">
        @
        <select name="mb_email_domain" id="reg_mb_email_domain" required class="form-control email required" style="display: inline-block; width: auto;">
            <option value="naver.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '.com') !== false) echo 'selected'; ?>>naver.com</option>
            <option value="a.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a.com') !== false) echo 'selected'; ?>>a.com</option>
            <option value="a2.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a2.com') !== false) echo 'selected'; ?>>a2.com</option>
            <option value="a3.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a3.com') !== false) echo 'selected'; ?>>a3.com</option>
            <option value="a4.com" <?php if (isset($member['mb_email']) && strpos($member['mb_email'], '@a4.com') !== false) echo 'selected'; ?>>a4.com</option>
        </select>
    </div>
    <?php if ($config['cf_use_email_certify']) { ?>
    <p class="form-control-plaintext f-de pb-0">
        <?php if ($w == '') { echo "You must verify the contents sent to your email to complete the registration."; } ?>
        <?php if ($w == 'u') { echo "If you change your email address, you will need to verify it again."; } ?>
    </p>
    <?php } ?>
</div>
</div>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,826
© SIRSOFT
현재 페이지 제일 처음으로