회원가입, 회원정보수정시 오류

안녕하세요.

워드프레스 코스모스팜 회원관리 플러그인 사용중입니다.

저번에 폼양식 다르게 하는법 물어보고 해결하였는데,

최초에는 회원가입과 회원정보 잘 들어갔는데, 두번째 해보니

회원가입과 회원정보수정시 "폼 처리 중 에러가 있습니다."

오류가 발생하여 문의드립니다.

 

글을 몇개 찾아보니 

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&amp;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문이라 오류가 자꾸 납니다.

     

    그리고 회원정보 수정에서 비밀번호 수정할려면 어떤 코드가 필요한지도 알려주세요.

    항상 친절한 답변 주셔서 감사드립니다.

  • 코드를 직접 수정하실 경우 커뮤니티에서 100% 해결을 보장해드리기 어렵습니다.

    코드 수정이 어려우실 경우 저희 고객지원 쪽으로 유료 기술지원 요청을 부탁드립니다.

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기