PHP / 회원 관리 / 비밀번호 변경 페이지
change-password.php
- $_SESSION[ 'username' ]의 값으로 로그인 여부를 판단합니다. 로그인 상태가 아니라면 로그인 페이지로 이동합니다.
- 로그인 상태라면 $current_password의 값으로 새 비밀번호를 입력했는지 확인합니다.
- 새 비밀번호를 입력했다면 현재 비밀번호가 맞는지 확인합니다. 맞지 않다면 '현재 비밀번호가 틀렸습니다.'를 출력합니다.
- 현재 비밀번호가 맞다면 새로 입력한 비밀번호 두 개가 일치하는지 확인합니다.일치하지 않는다면 '새 비밀번호가 일치하지 않습니다.'를 출력합니다.
- 새 비밀번호 두 개가 일치한다면 비밀번호를 업데이트하고 change-password-ok.php로 이동합니다.
<?php session_start(); $session_username = $_SESSION[ 'username' ]; if ( is_null( $session_username ) ) { header( 'Location: login.php' ); } $current_password = $_POST[ 'current_password' ]; $new_password = $_POST[ 'new_password' ]; $new_password_confirm = $_POST[ 'new_password_confirm' ]; if ( !is_null( $current_password ) ) { $jb_conn = mysqli_connect( 'localhost', 'codingfactory', '1234qwer', 'codingfactory.net_example' ); $jb_sql = "SELECT password FROM member WHERE username = '" . $session_username . "';"; $jb_result = mysqli_query( $jb_conn, $jb_sql ); while ( $jb_row = mysqli_fetch_array( $jb_result ) ) { $encrypted_password = $jb_row[ 'password' ]; } if ( password_verify( $current_password, $encrypted_password ) ) { if ( $new_password == $new_password_confirm ) { $encrypted_new_password = password_hash( $new_password, PASSWORD_DEFAULT); $jb_sql_change_password = "UPDATE member SET password = '" . $encrypted_new_password . "' WHERE username = '" . $session_username . "';"; mysqli_query( $jb_conn, $jb_sql_change_password ); header( 'Location: change-password-ok.php' ); } else { $wp2 = 1; } } else { $wp1 = 1; } } ?> <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>비밀번호 변경</title> <style> body { font-family: sans-serif; font-size: 14px; } input, button { font-family: inherit; font-size: inherit; } </style> </head> <body> <h1>비밀번호 변경</h1> <form action="change-password.php" method="POST"> <p><input type="password" name="current_password" placeholder="현재 비밀번호" required></p> <p><input type="password" name="new_password" placeholder="새 비밀번호" required></p> <p><input type="password" name="new_password_confirm" placeholder="새 비밀번호 확인" required></p> <p><input type="submit" value="비밀번호 변경"></p> <?php if ( $wp1 == 1 ) { echo "<p>현재 비밀번호가 틀렸습니다.</p>"; } if ( $wp2 == 1 ) { echo "<p>새 비밀번호가 일치하지 않습니다.</p>"; } ?> </form> </body> </html>
change-password-ok.php
<?php session_start(); $session_username = $_SESSION[ 'username' ]; if ( is_null( $session_username ) ) { header( 'Location: login.php' ); } ?> <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>비밀번호 변경</title> <style> body { font-family: sans-serif; font-size: 14px; } input, button { font-family: inherit; font-size: inherit; } </style> </head> <body> <h1><?php echo $session_username; ?>님, 비밀번호가 변경되었습니다.</h1> </body> </html>
스크린샷

비밀번호 변경 페이지

현재 비밀번호가 틀린 경우

새로 입력한 비밀번호가 일치하지 않는 경우