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>
스크린샷
비밀번호 변경 페이지
현재 비밀번호가 틀린 경우
새로 입력한 비밀번호가 일치하지 않는 경우