PHP / 회원 관리 / 로그인 페이지, 로그인 완료 페이지
로그인 페이지 - login.php
- 페이지를 열면 POST 방식으로 넘어온 username과 password를 저장합니다.
- $username에 값이 없다면 이후의 PHP 코드는 실행되지 않습니다.
- 양식에 값을 입력하고 로그인 버튼을 클릭하면 $username에 값이 있으므로 이후의 PHP 코드가 실행됩니다.
- $username에 값이 있다면 DB에서 username에 해당하는 password를 가져와서 $encrypted_password에 저장합니다.
- 일치하는 username이 존재하지 않는다면 $encrypted_password의 값이 없으므로 '사용자이름이 존재하지 않습니다.'를 출력합니다.
- 일치하는 username이 존재하면 $password와 $encrypted_password를 비교하고, 일치하면 login-ok.php 페이지도 이동하고, 일치하지 않으면 '비밀번호가 틀렸습니다.'를 출력합니다.
<?php $username = $_POST[ 'username' ]; $password = $_POST[ 'password' ]; if ( !is_null( $username ) ) { $jb_conn = mysqli_connect( 'localhost', 'codingfactory', '1234qwer', 'codingfactory.net_example' ); $jb_sql = "SELECT password FROM member WHERE username = '" . $username . "';"; $jb_result = mysqli_query( $jb_conn, $jb_sql ); while ( $jb_row = mysqli_fetch_array( $jb_result ) ) { $encrypted_password = $jb_row[ 'password' ]; } if ( is_null( $encrypted_password ) ) { $wu = 1; } else { if ( password_verify( $password, $encrypted_password ) ) { header( 'Location: login-ok.php' ); } else { $wp = 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="login.php" method="POST"> <p><input type="text" name="username" placeholder="사용자이름" required></p> <p><input type="password" name="password" placeholder="비밀번호" required></p> <p><input type="submit" value="로그인"></p> <?php if ( $wu == 1 ) { echo "<p>사용자이름이 존재하지 않습니다.</p>"; } if ( $wp == 1 ) { echo "<p>비밀번호가 틀렸습니다.</p>"; } ?> </form> </body> </html>
로그인 성공 페이지 - login-ok.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>로그인 하셨습니다.</h1> </body> </html>
스크린샷

로그인 페이지

사용자 이름이 존재하지 않는 경우

비밀번호가 틀린 경우

로그인에 성공한 경우