안녕하세요.
워드프레스 코스모스팜 회원관리 플러그인 사용중입니다.
저번에 폼양식 다르게 하는법 물어보고 해결하였는데,
최초에는 회원가입과 회원정보 잘 들어갔는데, 두번째 해보니
회원가입과 회원정보수정시 "폼 처리 중 에러가 있습니다."
오류가 발생하여 문의드립니다.
글을 몇개 찾아보니
wp_nonce_field 함수를 활용 하라고 나오는데 소스 올릴테니 확인 부탁드릴게요.
add_filter('wpmem_register_form', 'my_register_form_filter', 10, 4);
function my_register_form_filter($form, $toggle, $rows, $hidden){
if($toggle == 'new'){
$form = '<div class="cosmosfarm-members-form signup-form default">
<a id="register"></a>
<form name="form" method="post" action="/?page_id=7" id="wpmem_register_form" class="form"><input type="hidden" id="_wpmem_register_nonce" name="_wpmem_register_nonce" value="b8b946ccc8"><input type="hidden" name="_wp_http_referer" value="/?page_id=7"><fieldset>
<legend>새로운 사용자 등록</legend>
<div class="wp_join_area">
<label for="username" class="text">아이디<span class="req">*</span>
</label>
<div class="div_text"><input name="username" type="text" id="username" value="" class="textbox" required=""></div>
</div>
<div class="wp_join_area">
<label for="password" class="text">비밀번호<span class="req">*</span>
</label>
<div class="div_text"><input name="password" type="password" id="password" class="textbox" required=""></div>
</div>
<input name="a" type="hidden" value="register"><input name="wpmem_reg_page" type="hidden" value="/?page_id=7"><div class="button_div"><input name="submit" type="submit" value="회원가입" class="buttons"></div>
<div class="req-text">
<span class="req">*</span>필수입력 항목입니다. 반드시 입력해주세요.</div>
</fieldset>
</form>
</div>';
}
if($toggle == 'edit'){
$user = get_userdata(get_current_user_id());
$form = '<div class="cosmosfarm-members-form signup-form default">
<a id="register"></a>
<form name="form" method="post" action="/?page_id=12" id="wpmem_profile_form" class="form"><input type="hidden" id="_wpmem_update_nonce" name="_wpmem_update_nonce" value="b6ec5a9f9b"><input type="hidden" name="_wp_http_referer" value="/?page_id=12&a=edit"><fieldset>
<legend>정보 변경하기</legend>
<div class="wp_join_area">
<label for="username" class="text">아이디<span class="req">*</span>
</label>
<div class="div_text"><input name="username" type="text" id="username" value="'.$user->user_login.'" class="textbox" required="" readonly></div>
</div>
<div class="wp_join_area">
<label for="password" class="text">비밀번호<span class="req">*</span>
</label>
<div class="div_text"><input name="password" type="password" id="password" class="textbox" required=""></div>
</div>
<input name="a" type="hidden" value="update"><input name="wpmem_reg_page" type="hidden" value="/?page_id=12"><div class="button_div"><input name="submit" type="submit" value="정보수정하기" class="buttons"></div>
<div class="req-text">
<span class="req">*</span>필수입력 항목입니다. 반드시 입력해주세요.</div>
</fieldset>
</form>
</div>';
}
return $form;
}
안녕하세요~^^
커뮤니티에서 간단한 코드를 봐드리거나 만들어 드릴 순 있지만
코드를 직접 수정하실 경우 커뮤니티에서 100% 해결을 보장해드리기 어렵습니다.
wpmem_register_form 필터 사용 시
WP-Members 플러그인 회원가입 페이지에서
_wpmem_register_nonce가 추가되어 있어야 하고 계속 바뀌어야 합니다.
또, 보안 때문에 자동으로 생성되어야만 합니다.
그렇기 때문에 올려주신 코드처럼 _wpmem_register_nonce가 특정 값으로 고정되어 있다면
회원가입이 정상적으로 진행되지 않습니다.
회원정보 페이지에서는 _wpmem_update_nonce가 추가되어 있어야 하고 계속 바뀌어야 합니다.
회원가입 페이지에서는 아래의 코드를 활용해보세요.
wp_nonce_field('wpmem_longform_nonce', '_wpmem_register_nonce')
회원정보 수정 페이지에서는 아래의 코드를 활용해보세요.
wp_nonce_field('wpmem_longform_nonce', '_wpmem_update_nonce')
추가로, 워드프레스 사이트에서 사용자는 이메일을 필수로 입력해야 합니다.
그렇기 때문에 회원가입 및 회원정보 수정 시 이메일을 필수로 입력해야 정상적으로 동작합니다.
또, 비밀번호는 내 정보 수정 페이지가 아닌 비밀변호 변경 페이지에서 변경하실 수 있습니다.
내 정보 수정 페이지에서 비밀번호를 변경되게 하시려면
별도의 코드를 추가해주셔야 합니다.
고맙습니다.
[회원가입]
<input type="hidden" id="_wpmem_register_nonce" name="_wpmem_register_nonce" value="b8b946ccc8">
[회원정보수정]
<input type="hidden" id="_wpmem_update_nonce" name="_wpmem_update_nonce" value="b6ec5a9f9b">
이렇게 고정으로 들어가 있어서 한번밖에 안댄거군요.
답변주신 코드는 value 값에다가 적용해야 대는거 같은데 어떻게 해야댈까요?
add_filter('wpmem_register_form', 'wpmem_register_form_20200525', 10, 4);
function wpmem_register_form_20200525($form, $toggle, $rows, $hidden){
ob_start();
?>
<form name="form" method="post" action="<?php echo get_permalink()?>" id="wpmem_register_form" class="form">
<?php echo wp_nonce_field('wpmem_reg_nonce', '_wpnonce', true, false)?>
<?php echo wp_nonce_field('wpmem_longform_nonce', '_wpmem_register_nonce', true, false)?>
...
</form>
<?php
$form = ob_get_clean();
return $form;
이렇게 사용할려고 하니 if문이라 오류가 자꾸 납니다.
그리고 회원정보 수정에서 비밀번호 수정할려면 어떤 코드가 필요한지도 알려주세요.
항상 친절한 답변 주셔서 감사드립니다.