회원가입 후 자동으로 아이디가 채워지는 부분
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.4 |
웹사이트에 전화번호와 비밀번호만 가입 할때 요구 합니다.
이외 아이디 닉네임 이메일은 랜덤 숫자를 이용해 hidden 으로 해뒀습니다.
당연히 회원정보 찾기와 회원정보 보기에도 닉네임 이메일, 아이디는 숨겨뒀습니다.
회원가입이 완료되면 자동으로 아이디 입력란에 전화번호를 채우고 싶습니다.
경로가 어딘지 알려주신다면 참고 하겠습니다.
감사합니다.
aierfcgbhn
Lv. 2
댓글 14
auto fill은 server side가 아니라 회원 각자 브라우져 설정에 있는 기능이므로 웹사이트 운영자가 관여할 수는 없습니다. 물론 auto fill 이 잘 되게 input form을 조절해줄수는 있겠지만...
그러기보다는, 처음 회원 가입할때 ID를 랜덤하게 생성해 hidden 처리한다고 하셨는데, 전화번호를 입력받은 것을 ID에 복사해주면 간단할 것 같은데요. 그러면 사용자들이 로그인할때 전화번호를 입력해야할테고, 브라우져는 그게 ID인줄 알고 저장했다가(옵션) 다음부터는 auto fill 해주겠죠.
회원가입 단계에서부터 아이디 입력란을 아예 쓰지 말아 보세요. 회원모듈에서 아이디 대신 전화번호로 로그인하도록 설정하고, 회원가입시 아이디 항목을 아예 사용하지 않도록 하고요. 아이디로 로그인할 일이 없는 사이트에 괜히 아이디 입력란을 만들어서 화면에서 숨기고 랜덤값을 넣어주고 자시고 할 필요가 없잖아요. 아이디 입력란을 HTML 소스상에 남겨놓고는 브라우저한테 다른 곳을 채우라고 시키는 것은 억지스럽기도 하고요.
이건 소스 수정보다는 회원모듈 설정을 먼저 확인해 봐야 할 문제입니다. 물론 회원모듈 설정만으로 100% 원하시는 결과가 나오지는 않을 수도 있지만, 설정으로 최대한 비슷하게 맞춰놓은 후에 정말 안 되는 부분만 스킨을 가볍게 고치는 것이 라이믹스 방식입니다. 가입폼과 회원정보 보기 화면을 이미 수정할 줄 아신다면 같은 폴더 안에 있는 로그인 폼도 금방 찾으실 수 있을 것입니다.
회원가입이 완료되면 이미 로그인 상태일 텐데 어디에 뭘 더 채워야 한다는 것인지는 모르겠습니다.
답변 감사합니다. 회원설정에서 로그인 방법을 전화번호로만 설정해두면 회원가입 시 전화번호 입력창이 없어집니다. 이것을 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>
이 구문 추가해 주니 정상 작동 하네요.
드디어 로그인 방법을 전화번호로만 설정 할 수 있게 되었네요. 감사합니다.
음... 스킨에 따라 다를 수도 있겠지만 로그인 폼에 우리말만 "전화번호"라고 쓰고 소스상의 필드명은 user_id 그대로 놔둬 보세요. 하위호환성 때문에 필드명이나 변수명을 바꾸기 쉽지 않은 면이 있어서요.
<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>
지식이 빠삭하시네요,, 로그인 바로 성공 했습니다.. 한번 회원가입 후 바로 로그인이 되는지 재시도 해보겠습니다.
로그아웃 후 로그인 정상 여부
드디어 모든 과제를 해결했네요 새벽 시간에 정말 감사합니다!
로그인할 때도 일관성있게 phone_number 필드를 사용할 수 있으면 좋을 텐데, 왜 안 되는지 찾아서 되도록 바꿔보도록 하겠습니다. (라이믹스 개발자입니다.^^)
개발자 분께서 직접 해결 답변을 주셔서 정말 영광입니다.
한가지 더 이 질문 과는 다른 문제를 여쭙고 싶은게 있습니다만 관리자 이메일을 개인 서버 이메일로 하면
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 계정을 연결 해뒀는데 개인 서버에서 저 문제를 해결하려면 어떻게 해야 할까요
SMTP 연동 과정에서 메일서버의 인증서를 인식하지 못하는 문제입니다. 사용하시는 메일서버의 인증서가 이상하거나, 메일서버는 나름 최신 인증서를 사용하고 있는데 PHP의 openssl 라이브러리가 오래되어서 인식을 못하거나, 반대로 메일서버의 인증서가 너무 오래되었거나, 등등 다양한 원인이 있을 수 있습니다. 단, 어떤 경우에도 웹서버의 인증서(Let's Encryot)와는 관계가 없으니 그 부분은 신경쓰지 마시기 바랍니다.
SMTP 연동은 보안 사용하지 않음, SSL, TLS 등 여러 가지 방법이 있는데 메일서버마다 지원하는 방식과 포트가 제각각이니, 잘 되는 조합을 찾기 위해 시행착오가 필요합니다. 만약 웹호스팅 업체의 메일서버이거나 자체 구축한 메일서버라면 인증서에 신경쓰지 않았을 가능성이 높으니 "사용하지 않음"이 유일한 옵션일 수도...
구글이랑 네이버에서도 스팸 인식 안하구요,,, 그래서 적용하고 싶었던건데 아쉽네요 ㅠㅠ