본문 바로가기

웹 개발

[PHP] 로그인 페이지에 DB 연결하기 (mysql)

 

이전 글

https://yumeo.tistory.com/3

 

[PHP] 간이 로그인 페이지 만들기 + CSS

html, css, php를 이용하여 간단한 로그인 페이지 작성1. login_page.php LOGIN Not a member? Sign up  사용자에게 아이디와 비밀번호를 입력받아 로그인 성공/실패를 판단하는 코드이다. require_once()함수는 다

yumeo.tistory.com

 

로그인 페이지에 DB 연결하기

1. login_page.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@100..900&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="login.css">
    <title>LOGIN</title>
</head>
<body>
    <form method="POST" action="login_proc.php">
        <section>
            <ul class="login lexend-deca-300">
                <li><h1 class="lexend-deca-600">LOGIN</h1></li>
                <li><input type="text" placeholder="Id" name="id" required></li>
                <li><input type="password" placeholder="Password" name="password" required></li>
                <li><input type="submit" id="login_btn" value="login" name="submit"></li>
                <li class="sign">Not a member? <a href="signup_page.php">Sign up</a></li>
            </ul>
        </section>
    </form>
</body>
</html>

 

login submit 시 login_proc.php로 전달하여 login_porc.php에서 로그인 동작을 처리하도록 하였다.

 

2. login_proc.php

<?php
require_once('db.php');

	if(isset($_POST['submit'])){
		$login_res=login($_POST['id'], $_POST['password']);
        if($login_res){
			header("location:index.php?login_id=". $login_res );
			exit;
		} else {
            header("location:login_page.php");
            exit;
        }
    }
?>

 

db.php의 login함수에 사용자가 입력한 id와 password를 넘겨 호출한다. 로그인이 성공하면 아이디가 반환되고 그 반환된 아이디를 index.php에 get방식으로 넘긴다. 로그인 실패 시 로그인 페이지로 리다이렉트한다.

 

3. db.php

 

<?php
	define('DB_SERVER', 'localhost');
	define('DB_USERNAME', '');
	define('DB_PASSWORD', '');
	define('DB_NAME', 'mn');

	$db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

	if($db_conn){
		echo "DB Connect OK";
	}else{
		echo "DB Connect Fail";
	}

    function login($userid, $userpass) {
        global $db_conn;

        $sql = "select * from member where id='$userid' and password='$userpass'";
        $result = mysqli_query($db_conn, $sql);
        $row = mysqli_fetch_array($result);

        if($userid == $row['id'] and $userpass == $row['password']){
            return $userid;
        } else {
            return 0;
        }
    }
?>

 

php <-> db 연동 후, 아이디와 패스워드를 받아 로그인 처리를 하는 login 함수를 정의했다. select * from member where id='$userid' and password='$userpass' 문을 이용하여 입력받은 id와 password가 같은 경우 id를 반환한다. 

 

결과

test01 계정으로 로그인한 결과

 

member 테이블에 있는 test01 계정으로 로그인 한 결과, index 페이지의 test01님 안녕하세요! 라는 문구가 표시된다.