회원가입 시, 잘못된 정보를 기입하고 가입완료 눌렀을때 이전작성했던 것 가져오는 방법
본문
안녕하세요. 만들고 싶은 사이트가 있어 이리저리 공부하며 사이트를 만들고 있는데 초보라 어려움이 많네요..ㅠ 조언을 구합니다.
회원가입시, 현재 폼을 작성합니다. 가입시는 아이디, 이메일, 비밀번호를 입력합니다. 이때, 이메일이 형식에 맞는지, 비밀번호가 형식에 맞는지 등을 현재 페이지에서 그것을 체크해 처리하고 있습니다. action이 현재페이지.
이렇게 하니 방금 가입하려고 기입했던, 아이디, 이메일 정보가 다 날라가버리고 다시 입력해야하는 번거로움이 있습니다.
코드는 아래와 같을 때,
만약 가입시, 비밀번호를 형식에 잘못입력하거나 했을때, 현재페이지로 오류코드를 담아 redirect 되었을때, 방금 기입한 아이디, 이메일 등의 정보를 담아올수 있는 방법 없나요?..
조언을 구해도 될까요?
감사합니다.
<?php
//부분 생략
/* Update profile fields */
if ( !empty( $_POST['email'] ) ){
$posted_email = esc_attr( $_POST['email'] );
if ( !is_email( $posted_email ) ) {
// 이메일 입력안되어 있으면 오류코드 url에 오류코드 담아 redirect
wp_redirect( get_permalink() . '?validation=emailnotvalid' );
exit;
} elseif( email_exists( $posted_email ) && ( email_exists( $posted_email ) != $current_user->ID ) ) {
// 같은 이메일이 이미 등록되어 있으면 url에 오류코드 담아 redirect
wp_redirect( get_permalink() . '?validation=emailexists' );
exit;
} else{
// 제대로 입력했으면 DB에 업데이트
wp_update_user( array ('ID' => $current_user->ID, 'user_email' => $posted_email ) );
}
}
//부분 생략
?>
<?php get_header(); ?>
<div>
<?php if( !empty( $_GET['validation'] ) ): ?>
<?php if( $_GET['validation'] == 'emailnotvalid' ): ?>
<div class="error">!! 이메일이 유효하지 않습니다.</div>
<?php elseif( $_GET['validation'] == 'emailexists' ): ?>
<div class="error">!! 이미 사용하고 있는 이메일입니다.</div>
<?php elseif( $_GET['validation'] == 'passwordempty' ): ?>
<div class="error">!! 비밀번호를 입력해주세요.</div>
<?php elseif( $_GET['validation'] == 'passwordincorrect' ): ?>
<div class="error">!! 비밀번호가 틀렸습니다.</div>
<?php elseif( $_GET['validation'] == 'unknown' ): ?>
<div class="error">!! 오류가 발생했습니다. 한번 더 해보고 또 문제가 발생하면 문의센터에 문의해주세요.ㅠ</div>
<?php endif; ?>
<?php endif; ?>
<?php $current_user = wp_get_current_user(); ?>
<form method="post" id="rnm_account_form" action="<?php the_permalink(); ?>">
<label for="user_id">아이디</label>
<input name="user_id" type="text" id="user_id" />
<label for="email"><?php _e('이메일', 'runenmeal'); ?></label>
<input name="email" type="text" id="email" />
<label for="pass">비밀번호</label>
<input name="pass" type="password" id="passcheck" />
<label for="passcheck">비밀번호 확인</label>
<input name="passcheck" type="password" id="passcheck" />
<input name="updateuser" type="submit" id="rnm_wp_submit" value="가입하기" />
</form>
</div>
<?php get_footer(); ?>
답변 1
리다이렉트 하지말고 뒤로가기 -1이나 임시로 정보를 필드에 담아 넣었다가 리다이렉트할 때 포스트로 다시 넘겨주거나 하면 되지만 개인정보보호법에 따르면 리셋해주는게 좋습니다.
답변을 작성하시기 전에 로그인 해주세요.