Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

웹사이트에 전화번호와 비밀번호만 가입 할때 요구 합니다.

 

이외 아이디 닉네임 이메일은 랜덤 숫자를 이용해 hidden 으로 해뒀습니다.

 

당연히 회원정보 찾기와 회원정보 보기에도 닉네임 이메일, 아이디는 숨겨뒀습니다.

 

회원가입이 완료되면 자동으로 아이디 입력란에 전화번호를 채우고 싶습니다.

 

경로가 어딘지 알려주신다면 참고 하겠습니다.

 

감사합니다.

  • profile

    auto fill은 server side가 아니라 회원 각자 브라우져 설정에 있는 기능이므로 웹사이트 운영자가 관여할 수는 없습니다. 물론 auto fill 이 잘 되게 input form을 조절해줄수는 있겠지만...

    그러기보다는, 처음 회원 가입할때 ID를 랜덤하게 생성해 hidden 처리한다고 하셨는데, 전화번호를 입력받은 것을 ID에 복사해주면 간단할 것 같은데요. 그러면 사용자들이 로그인할때 전화번호를 입력해야할테고, 브라우져는 그게 ID인줄 알고 저장했다가(옵션) 다음부터는 auto fill 해주겠죠. 

  • profile

    회원가입 단계에서부터 아이디 입력란을 아예 쓰지 말아 보세요. 회원모듈에서 아이디 대신 전화번호로 로그인하도록 설정하고, 회원가입시 아이디 항목을 아예 사용하지 않도록 하고요. 아이디로 로그인할 일이 없는 사이트에 괜히 아이디 입력란을 만들어서 화면에서 숨기고 랜덤값을 넣어주고 자시고 할 필요가 없잖아요. 아이디 입력란을 HTML 소스상에 남겨놓고는 브라우저한테 다른 곳을 채우라고 시키는 것은 억지스럽기도 하고요.

     

    이건 소스 수정보다는 회원모듈 설정을 먼저 확인해 봐야 할 문제입니다. 물론 회원모듈 설정만으로 100% 원하시는 결과가 나오지는 않을 수도 있지만, 설정으로 최대한 비슷하게 맞춰놓은 후에 정말 안 되는 부분만 스킨을 가볍게 고치는 것이 라이믹스 방식입니다. 가입폼과 회원정보 보기 화면을 이미 수정할 줄 아신다면 같은 폴더 안에 있는 로그인 폼도 금방 찾으실 수 있을 것입니다.

     

    회원가입이 완료되면 이미 로그인 상태일 텐데 어디에 뭘 더 채워야 한다는 것인지는 모르겠습니다.

  • profile profile

    답변 감사합니다. 회원설정에서 로그인 방법을 전화번호로만 설정해두면 회원가입 시 전화번호 입력창이 없어집니다. 이것을 signup_form.html 에 확인해보니


    <div class="form-group extra" loop="$formTags=>$formTag" cond="$formTag->name != 'signature'&&$formTag->name != 'nick_name'&&$formTag->name != 'email_address'">
    <label for="{$formTag->name}" class="col-sm-3 control-label">{$formTag->title}</label>
    <div class="col-sm-9">{$formTag->inputTag}</div>
    </div>


    로 extra 값을 loop 돌리면서 출력하는것 같더라고요
    그래서 무식하게 f12 창 보면서 전화번호 폼을 만들어 주고 저 구문을 삭제 했습니다.


            <div class="form-group extra">
                <label for="phone_number" class="col-sm-3 control-label"><em style="color:red">*</em> 전화번호</label>
                <div class="col-sm-9">
                    <input type="tel" name="phone_number" id="phone_number" class="phone_number" value="">
                    <button type="button" class="btn verifySMS" style="display:none">인증</button>
                        <div class="verifySMS_input_area" style="display:none">
                        <input type="number" class="verifySMS_input_number">
                        <button type="button" class="btn verifySMS_input_button">인증번호 확인</button>
                    </div>
                </div>
            </div>

    그 후 가입이 정상적으로 진행되고 로그인이 자동으로 진행되어 홈으로 이동해야 하는데 안되길래 login_form.html 을 봤더니 id 구문만 있더라구요 그래서

    <div class="form-group">
    <input style="text-align:center;" type="tel" cond="$identifier == 'phone_number'" name="phone_number" required placeholder="전화번호" class="form-control" title="{$lang->phone_number}" />
    </div>

    이 구문 추가해 주니 정상 작동 하네요.
    드디어 로그인 방법을 전화번호로만 설정 할 수 있게 되었네요. 감사합니다.

  • profile profile
    네, 전화번호만으로 로그인하는 기능은 비교적 최근에 만들어진 것이라 대부분의 스킨은 아이디와 이메일밖에 지원하지 않는 것 같습니다. 그 부분만 적당히 고쳐서 쓰시면 되겠네요.^^
  • profile profile
    죄송하지만 회원가입 후 자동으로 해당 전화번호로 자동 로그인이 되지만 로그아웃 후 재 로그인 할때 회원 전화번호를 입력해주세요. 라는 오류가 발생합니다. 전화번호 형식이 맞고 db 에도 존재 하는 전화번호인데 무슨 파일을 더 손봐야 할까요?
  • profile profile
    filter 폴더의 login.xml 파일에 user_id 만 있길래 phone_number 도 추가해 줬습니다.
  • profile profile

    음... 스킨에 따라 다를 수도 있겠지만 로그인 폼에 우리말만 "전화번호"라고 쓰고 소스상의 필드명은 user_id 그대로 놔둬 보세요. 하위호환성 때문에 필드명이나 변수명을 바꾸기 쉽지 않은 면이 있어서요.

  • profile profile
    허허,.,,

    <div class="form-group">
    <input style="text-align:center;" type="tel" cond="$identifier == 'phone_number'" name="user_id" required placeholder="전화번호" class="form-control" title="{$lang->phone_number}" />
    </div>

    지식이 빠삭하시네요,, 로그인 바로 성공 했습니다.. 한번 회원가입 후 바로 로그인이 되는지 재시도 해보겠습니다.
  • profile profile
    회원가입 후 자동 로그인 여부
    로그아웃 후 로그인 정상 여부

    드디어 모든 과제를 해결했네요 새벽 시간에 정말 감사합니다!
  • profile profile
    가입할 때는 phone_number 필드에 전화번호를 입력했는데 로그인할 때는 user_id여서 자동완성이 제대로 될지는 모르겠습니다. 요즘 크롬은 웬만하면 다 넣어주더라구요.

    로그인할 때도 일관성있게 phone_number 필드를 사용할 수 있으면 좋을 텐데, 왜 안 되는지 찾아서 되도록 바꿔보도록 하겠습니다. (라이믹스 개발자입니다.^^)
  • profile profile

    개발자 분께서 직접 해결 답변을 주셔서 정말 영광입니다.

    한가지 더 이 질문 과는 다른 문제를 여쭙고 싶은게 있습니다만 관리자 이메일을 개인 서버 이메일로 하면 

     

    Connection could not be established with host smtp.도메인.xxx :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
    error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

     

    이런 테스트 결과과 표시되면서 신규 회원가입 알림 메일이나 댓글 알림 새글 알림을 받을 수가 없습니다.

     

    어쩔수 없이 google 계정을 연결 해뒀는데 개인 서버에서 저 문제를 해결하려면 어떻게 해야 할까요

  • profile profile
    인증서는 let's encrypt 사용 중 입니다.
  • profile profile

    SMTP 연동 과정에서 메일서버의 인증서를 인식하지 못하는 문제입니다. 사용하시는 메일서버의 인증서가 이상하거나, 메일서버는 나름 최신 인증서를 사용하고 있는데 PHP의 openssl 라이브러리가 오래되어서 인식을 못하거나, 반대로 메일서버의 인증서가 너무 오래되었거나, 등등 다양한 원인이 있을 수 있습니다. 단, 어떤 경우에도 웹서버의 인증서(Let's Encryot)와는 관계가 없으니 그 부분은 신경쓰지 마시기 바랍니다.

     

    SMTP 연동은 보안 사용하지 않음, SSL, TLS 등 여러 가지 방법이 있는데 메일서버마다 지원하는 방식과 포트가 제각각이니, 잘 되는 조합을 찾기 위해 시행착오가 필요합니다. 만약 웹호스팅 업체의 메일서버이거나 자체 구축한 메일서버라면 인증서에 신경쓰지 않았을 가능성이 높으니 "사용하지 않음"이 유일한 옵션일 수도...

  • profile profile
    혼자 쓰는 계정이긴 한데 ㅋㅋ 그래도 역방향 도메인 dmarc dkim 다 있습니다 ㅎㅎ,,,,,
    구글이랑 네이버에서도 스팸 인식 안하구요,,, 그래서 적용하고 싶었던건데 아쉽네요 ㅠㅠ